《C語言程序設計》課程設計報告_第1頁
《C語言程序設計》課程設計報告_第2頁
《C語言程序設計》課程設計報告_第3頁
《C語言程序設計》課程設計報告_第4頁
《C語言程序設計》課程設計報告_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、.C語言程序設計課程設計報告(2013 2014學年 第 3 學期)題 目: C語言課程設計 專 業(yè): 軟件工程 班 級: 軟件工程技術2班 姓名學號: 1307142225 林燕萍 指導教師: 吳蕓 成 績: 計算機科學與技術系 2014 年6月23日目 錄一、課程設計的目的與要求1二、方案實現(xiàn)與調(diào)試 32.1 擲骰子游戲52.2 射擊游戲72.3 計算存款本息之和 82.4肇事逃逸102.5 禮炮122.6 汽車加油142.7 大優(yōu)惠162.8 金幣19三、課程設計分析與總結(jié)23附錄 程序清單25.一、二、 課程設計的目的與要求(含設計指標)C語言是一種編程靈活,特色鮮明的程序設計語言。C

2、語言除了基知識,如概念,方法和語法規(guī)則之外更重要的是進行實訓,以提高學習者的動手和編程能力,從應試課程轉(zhuǎn)變?yōu)閷嵺`工具。這是學習語言的最終目的。結(jié)合多年來的教學經(jīng)驗,根據(jù)學生的學習情況,為配合教學過程,使“項目教學法”能在本質(zhì)上促使學生有更大進步,特編寫了該C語言程序設計任務書 ,以在實訓過程中給學生提供幫助。達到如下目的:1在課程結(jié)束之前,讓學生進一步了解C程序設計語言的編程功能;2讓學生扎實掌握C程序設計語言的相關知識;3通過一些有實際意義的程序設計,使學生體會到學以致用,并能將程序設計的知識 與專業(yè)知識有效地結(jié)合,更全面系統(tǒng)地了解行業(yè)知識。編寫程序要求遵循如下基本要求:l模塊化程序設計鋸齒

3、型書寫格式 必須上機調(diào)試通過 二、方案實現(xiàn)與調(diào)試2.1擲骰子游戲2.1.1 題目內(nèi)容的描述 1)兩人輪流擲骰子,每次擲兩個,每人最多擲10次。2)將每人每次的分值累加計分3)當兩個骰子點數(shù)都為6時,計8分;當兩個點數(shù)相等且不為兩個6時,計7分;當兩個點數(shù)不一樣時,計其中點數(shù)較小的骰子的點數(shù)。4)結(jié)束條件:當雙方都擲10次或經(jīng)過5次后一方累計分數(shù)多出另一方的30%及以上。最后顯示雙方分數(shù)并判定優(yōu)勝者。2.1.2輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說明數(shù)據(jù)類型:整型;內(nèi)容限制:隨機數(shù)的產(chǎn)生;輸入數(shù)據(jù)結(jié)果:勝利的一方2.1.3主要模塊的算法描述 本算法的思路過程:首先要隨機產(chǎn)生隨機數(shù),然后進行算

4、法輸出數(shù)值,執(zhí)行條件判斷輸入結(jié)果,最后比較結(jié)果,判斷勝利的一方。程序流程圖 圖1 擲骰子游戲2.1.4調(diào)試過程及實驗結(jié)果編輯過程中遇到的困難有:編程思路正確,但是無法正確編寫出程序和編程過程缺乏。 圖2 擲骰子游戲2.2射擊游戲2.2.1題目內(nèi)容的描述 在程序運行時屏幕上方第一行隨機出現(xiàn)一個 符號,要求游戲者輸入一個1-80之間的整數(shù),當用戶輸入一個整數(shù)后,一個*立即從屏幕底端的該整數(shù)列向上移動,若移動到屏幕的頂端能撞上 符號,則游戲者獲勝;若沒有撞上,則要求再輸入一個整數(shù),共允許輸入5次,如果一直沒有撞上,則認為游戲者輸。 提示: 1)輸入 符號可以采用printf(%c,1) 2)顯示*號

5、向上移動:輸出一些空行;輸出*號;以循環(huán)的方式增加延時(for(i=0;i100000;i+););clrscr()清屏重新繪制*號。2.2.2輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說明System(“cls”);清楚屏幕,2.2.3主要模塊的算法描述 本算法的思路過程:首先清楚屏幕,然后循環(huán)每行輸出* ,依次循環(huán),判斷是否擊中目標,最后 5次輸入結(jié)束,或者擊中目標結(jié)束。程序流程圖 圖3 射擊游戲2.2.4調(diào)試過程及實驗結(jié)果該程序在調(diào)試過程中出現(xiàn)的問題是:該題中大體循環(huán)是以次數(shù),還是循環(huán)的結(jié)果作為判斷,弄不清楚 圖4 射擊游戲2.3計算存款本息之和: *2.3.1題目內(nèi)容描述 以“存款利率”

6、為關鍵字上網(wǎng)搜索目前我國整存整取不同期限我國的銀行存款利率,只計算一年(3%)、三年(4.25%)和五年(4.75%)三種期限。 問題: 1) 要求輸入存錢的本金和期限,求到期能從銀行得到的利息與本金合計。 2)假設存款期限為三十年本金為10萬,比較一年、三年和五年滾存三十年后的本息金額。 261036.844 332020.963 359146.175 *2.3.2輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說明1)數(shù)據(jù)類型:長整型;2)內(nèi)容限制:鍵入本金與年限;3)輸出數(shù)據(jù):本息和PI 2.3.3主要模塊的算法描述本算法的語言描述:輸入限定之內(nèi)的年份與存款金額,選擇對應的年利率計算本息和程序流

7、程圖開始初始化i,j,k,n,m=0,x=0輸入存期i,本金j,滾利年限k,利率nm=m+i*j*k,x=x+ixm是 結(jié)束否 圖5 計算存款本息之和2.3.4調(diào)試過程及實驗結(jié)果 圖6 計算存款本息之和 圖7 計算存款本息之和2.4肇事逃逸2.4.1題目內(nèi)容的描述某部閩DT的出租車交通肇事逃逸,現(xiàn)場無人看清后面的四位數(shù)字,但三位目擊群眾提供信息如下:1) 車牌號后兩位相同; 2) 車牌號前兩位相同; 3) 車牌號是一個整數(shù)的平方。請編程查出肇事逃逸車輛的車牌號。2.4.2輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說明 1)數(shù)據(jù)類型:整型;2)內(nèi)容限制:前兩位相同,后兩位相同,整數(shù)的平方; 3)輸

8、出數(shù)據(jù):四位整數(shù)2.4.3主要模塊的算法描述本算法的思路描述:前兩位,后兩位相同,則前兩位用i表示,后兩位用均表示,用k是100以內(nèi)的兩位整數(shù),l表示這個四位數(shù),用循環(huán)語句依次判斷結(jié)果適合公式:k*k=l=1000*i+100*i+10*j+j,即為肇事車牌號!程序流程圖輸出結(jié)果PIPI=m*(1+0.475*5);I=5PI=m*(1+0.425*3);I=3PI=m*(1+0.03*1);I=1輸入本金嗎,存款年限你,本息和PI開始否是否是是結(jié)束 圖8 肇事逃逸2.4.4調(diào)試過程及實驗結(jié)果實驗中所遇到的困難是:書寫代碼時,定義四位車牌號為l,由于字母i與數(shù)字1比較像,結(jié)果導致混淆。 圖9

9、肇事逃逸 2.5禮炮:2.5.1題目內(nèi)容的描述 鳴放禮炮起源于英國。據(jù)說400多年前英國海軍用的是火炮。當戰(zhàn)艦進入友好國家的港口之前,或在公海上與友好國家的艦船相遇時,為了表示沒有敵意,便把船上大炮內(nèi)的炮彈統(tǒng)統(tǒng)放掉,對方的海岸炮艦船也同樣做以表示回報。這種做法以后就逐漸成為互致敬意的一種禮儀。由于當時最大的戰(zhàn)艦裝有大炮21門,所以鳴炮21響就成了一種最高禮節(jié)。有四艘戰(zhàn)艦ABCD開始鳴放禮炮各21響,已知A戰(zhàn)艦每隔5秒放一次,B戰(zhàn)艦每隔6秒放一次, C戰(zhàn)艦每隔7秒放一次, D戰(zhàn)艦每隔8秒放一次.假設各炮手對時間掌握非常準確,請問觀眾共可以聽到幾次禮炮聲?2.5.2輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸

10、出數(shù)據(jù)的說明2.5.3主要模塊的算法描述 本算法的思路過程:根據(jù)條件“A戰(zhàn)艦每隔5秒放一次,B 戰(zhàn)艦每隔6秒放一次, C戰(zhàn)艦每隔7秒放一次, D戰(zhàn)艦每隔8秒放一次”確定可能性!依次判斷,累計聽到的次數(shù),得出結(jié)果!程序流程圖I+i+;j+結(jié)束輸出ji%8=0&(i140)(i%7=0)|(i%8=0)& (i120)(i%6=0)|(i%7=0)|(i%8=0)&( i100)(i%5=0)|(i%6=0)|(i%7=0)|(i%8=0)& (i=100)I=168初始化i=1,j=0開始否是是否是否是否是 圖10 禮炮2.5.4調(diào)試過程及實驗結(jié)果程序在調(diào)試過程中出現(xiàn)的問題是:編碼時要注意“|”

11、,“&” 圖11 禮炮2.6汽車加油*2.6.1題目內(nèi)容的描述一輛汽車加滿油后可行駛n公里。旅途中有若干個加油站。設計一個有效算法,指出應在哪些加油站??考佑?,使沿途加油次數(shù)最少。輸入:第一行有2 個正整數(shù)N和K(1 = N = 100,1 = K = 100),表示汽車加滿油后可行駛N公里,且旅途中有K個加油站。接下來的1 行中,有K+1 個整數(shù),表示第K個加油站與第K-1 個加油站之間的距離。第0 個加油站表示出發(fā)地,汽車已加滿油。第K+1 個整數(shù)表示第K個加油站與目的地的距離。輸出:將編程計算出的最少加油次數(shù)輸出。如果無法到達目的地,則輸出 No Solution。(注意:No和Solu

12、tion之間有一個空格)。例如:輸入:8 83 2 3 6 5 4 2 7 2輸出:52.6.2輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說明1) 數(shù)據(jù)類型:數(shù)組類型;2) 內(nèi)容限制:鍵入數(shù)據(jù):3) 用到的主要語句:循環(huán)條件判斷;4) 輸出數(shù)據(jù):加油次數(shù)(整型)2.6.3主要模塊的算法描述本算法的語言描述是:按題目要求輸入數(shù)據(jù);首先判斷可行駛的路程是否足夠汽車到達加油站;如果不能到達,則需要加油,在此處記錄一次并循環(huán);得出累計加油次數(shù)之和算得出結(jié)果。程序流程圖 開始初始化:汽車加滿油后可行駛N公里,且旅途中有K個加油站輸入K個加油站距離YES是否到達終點?記錄加油次數(shù)NOYES汽車是否需要加油?

13、NO輸出加油次數(shù)結(jié)束 圖12 禮炮*2.6.4調(diào)試過程及實驗結(jié)果實驗中所遇到的困難是:循環(huán)條件判斷錯誤。 圖13 禮炮2.7大優(yōu)惠2.7.1題目內(nèi)容的描述中國移動推出最新的手機資費優(yōu)惠方案,按照這個方案Tom的手機每天消費1元,每消費K元就可以獲贈1元,一開始Tom有M元,問最多可以用多少天?輸入的測試數(shù)據(jù)為一行,實例包括2個整數(shù)M, K(2 = K = M 0M,K, i=0(2=K=M=1000)開始否是i+;M=M-1;i%K=0否 圖14簡要的語言描述思考數(shù)據(jù)間的關系;分析K與天數(shù)的關系; 按M值遞減的方式運算;2.7.4調(diào)試過程及實驗結(jié)果實驗中所遇到的困難是: 沒有注意到題目中給定的

14、限制范圍。注意大小寫 圖152.8金幣 2.8.1題目內(nèi)容的描述 國王用金幣獎勵他忠誠的侍從。第一天侍從工作結(jié)束后,國王獎勵了他一個金幣;接著的兩天侍從工作中(第二天,第三天)的每一天,國王獎勵了他兩個金幣;接著的三天侍從工作中(第四天,第五天,第六天)的每一天,國王獎勵了他三個金幣;接著的四天侍從工作中(第七天,第八天,第九天,第十天)的每一天,國王獎勵了他四個金幣。這種獎勵的模式將是固定不變的,即在N天侍從工作中的每一天,國王將獎勵他N個金幣;接著的N+1天的侍從工作中的每一天,國王將獎勵他N+1個金幣。 要求在給定的天數(shù)時,你的程序能夠統(tǒng)計國王總共獎勵了侍從多少金幣。2.8.2輸入數(shù)據(jù)類

15、型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說明 整型,算法的應用,內(nèi)容數(shù)字的限定;2.8.3主要模塊的算法描述以程序流程圖的方式給出。開始初始化:i=1,j=1,s=0,m=0;輸入工作天數(shù)day,m=m+i,s=s+1;s=day?j=i輸出mi=day結(jié)束 圖16簡要的語言描述 思考數(shù)據(jù)間的關系; 分析天數(shù)與獲得金幣的關系(類金字塔); 進行總求和;2.8.4調(diào)試過程及實驗結(jié)果實驗中所遇到的困難是:循環(huán)條件的出口判斷不明確;求和處理不簡約;三、課程設計分析與總結(jié)由于上學期在語言的學習方面還有很多不足之處,因此,這次課程設計顯得特別吃力,很多不足都暴露了出來。不過最終還是基本完成了此次課程設計的內(nèi)容。在

16、各個實驗中解決問題的基本流程是:分析問題分析解決問題的基本流程選擇合適的算法語句書寫程序調(diào)試修改按要求書寫實驗報告。在這些過程中,我認為分析問題的解決流程最為重要,分析好解決流程之后,就可以清楚的知道自己這一步要干什么,下一步要干什么,思路就顯得十分清楚,按照這個流程解決問題是我感覺做得好的一面。不過也有很多不足,例如:好久沒碰C語言了,for, while之類的循環(huán)語句的基本功能都模糊了,在選擇運用時還要在課本、網(wǎng)絡上熟悉這些內(nèi)容,還有一點就是自己對函數(shù)、模塊化的思想掌握不夠,按照實驗要求需運用模塊化的方式來解決問題,自己卻很少使用這種思想,這就是實驗中的不足之處??偠酝ㄟ^這次5天的課程設

17、計我進一步了解C程序設計語言的編程功能,握C程序設計語言的相關知識,體會到學以致用,并能將程序設計的知識與專業(yè)知識有效地結(jié)合,更全面系統(tǒng)地了解行業(yè)知識。眾多不足之處我會課余時間進一步加固,力爭將這門基礎課真正的學好、用好,擺正思想,為以后的專業(yè)課的學習大好基礎! 最后感謝謝老師的一而再再而三的嚴格要求及耐心指導,感謝感謝同學們的幫助,謝謝你們!附錄 程序清單 2.1擲骰子游戲:#include #include #include void main() int i,j,k,b,n,m,add1=0,add2=0; srand( (unsigned)time( NULL ) ); /生成隨機數(shù)發(fā)

18、生器 for(i=1; i11; i+) for(b=1;bj) add1=add1+j; else add1=add1+k; printf(第二個人第%d次投出的數(shù)n,i); m=rand()%6+1; printf(%dn,m); /rand()產(chǎn)生隨機數(shù) - 12 - n=rand()%6+1; printf(%dn,n); if(n=6|m=6) add2=add2+8; if(n=m=5|n=m=4|n=m=3|n=m=2|n=m=1) add2=add2+7; else if(nm) add2=add2+m; else add2=add2+n; if(i=6) if(add1=2*

19、add2|add2=2*add1) i=10; printf(第一個人分值累加計分%dn,add1); printf(第二個人分值累加計數(shù)%dn,add2); if(add1add2) printf(第一個人勝利); if(add2add1) printf(第二個人勝利);2.2射擊游戲#include #include #include void main() int i,j,n,t,m; long int k; printf(*Welcome*); printf(nGame Begin:n); srand(unsigned)time(NULL); n=rand()%80+1; for(i=

20、0;in;i+) printf( ); printf(%cn,1); for(m=0;m0;j-) system(cls); for(i=0;i80;i+) if(i=n) printf(%c,1); else printf( ); for(i=1;ij;i+) printf(n); for(k=0;k80;k+) if(k=t) printf(*); else printf( ); for(k=0;k100000;k+); if(t=n) printf(Your Winnern); break; if(m=4) printf(You Losen); 2.3計算存款本息之和#include v

21、oid main() float m,n,PI;/定義m存款本金,n存款年限,printf(Please input the principal:);scanf(%f,&m);printf(Please input the years:);scanf(%f,&n); if(n=1)PI=m*(1+0.03*1);else if(n=3) PI=m*(1+0.425*3); else if(n=5) PI=m*(1+0.475*5);printf(You save:%fn,PI);2.3.2 #include#includemain()float i,save,total,profit,term

22、;while(1)printf(total=);scanf(%f,&total);if(total=0)break;printf(Please input the principal:);scanf(%f,&save);printf(Please input the years:);scanf(%f,&term);if(term=5)for(i=1;i=30;i=i+term)save=0.0475*save*term+save;printf(You save:%fn,save);else if(term=3)for(i=1;i=30;i=i+term)save=0.0425*save*ter

23、m+save;printf(You save:%fn,save);elsefor(i=1;i=30;i=i+term)save=0.03*save*term+save;printf(You save:%fn,save);2.4肇事逃逸#include#includemain()int i,j,k,c;for(i=0;i=9;i+)for(j=0;j=9;j+)c=1000*i+100*i+10*j+j;for(k=1;k=(c/2);k+)if(k*k)=c)printf(肇事逃逸車輛的車牌號為:%dn,c);2.5禮炮#include#includemain()int i,j=1;for(i

24、=1;i=168;i+)if(i=100)if(i%5=0)|(i%6=0)|(i%7=0)|(i%8=0) j=j+1;else if(i100)if(i%6=0)|(i%7=0)|(i%8=0) j=j+1;else if(i120)if(i%7=0)|(i%8=0) j=j+1;elseif(i%8=0) j=j+1;printf(%dn,j);2.6汽車加油#includevoid main()int K,N,i,j,i999,x=0,y=0; /i表示第幾個加油站;j為第K個加油站與第K-1個加油站 直接的距離;x表示總距離;*/ printf(輸入N K:); scanf(%d%d,&N,&K); for(i=0;i=K;i+) scanf(%d,&j); li=j; for(i=0;i=K;i+) if(Nli) printf(No Solution.n); break; else x=x+li; if(Nx) y+; x=li; if(i=K) printf(輸出最少加油次數(shù):%dn,y); 2.7大優(yōu)惠#includemain()int M,K,i=0;printf(Please input M

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論