[ZA]《C語言程序設(shè)計》課程設(shè)計報告029_第1頁
[ZA]《C語言程序設(shè)計》課程設(shè)計報告029_第2頁
[ZA]《C語言程序設(shè)計》課程設(shè)計報告029_第3頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C語言程序設(shè)計課程設(shè)計報告(20132014學(xué)年第3學(xué)期)題目:C語言課程設(shè)計專業(yè):軟件工程班級:軟件工程技術(shù)2班姓名學(xué)號:1307142225林燕萍指導(dǎo)教師:吳蕓成績:計算機科學(xué)與技術(shù)系2014年6月23日目錄一、課程設(shè)計的追求與要求1二、技術(shù)指導(dǎo)文件實現(xiàn)與調(diào)試32.1擲骰子游戲52.2射擊游戲2.3計算存款本息之和82.4肇事逃逸102.5禮炮122.6汽車加油142.7大優(yōu)惠162.8金幣19三、課程設(shè)計分析與匯總報告23附錄程序清單25一、課程設(shè)計的追求與要求(含設(shè)計指標(biāo))c語言是一種編程靈活,特色鮮明的程序設(shè)計語言。c語言除了基知識,如概念,方法和語法律法規(guī)則之外更重要的是進行實訓(xùn),

2、以提高學(xué)習(xí)者的動手和編程能力,從應(yīng)試課程轉(zhuǎn)變?yōu)閷嵺`工具。這是學(xué)習(xí)語言的最終追求。結(jié)合多年來的教學(xué)經(jīng)驗,根據(jù)學(xué)生的學(xué)習(xí)情況,為配合教學(xué)過程,使“項目教學(xué)法”能在本質(zhì)上促使學(xué)生有更大進步,特編寫了該C語言程序設(shè)計任務(wù)書,以在實訓(xùn)過程中給學(xué)生提供幫助。達到如下追求:1在課程結(jié)束之前,讓學(xué)生進一步了解C程序設(shè)計語言的編程功能。2讓學(xué)生扎實掌握C程序設(shè)計語言的相關(guān)知識。3通過一些有實際意義的程序設(shè)計,使學(xué)生思想到到學(xué)以致用,并能將程序設(shè)計的知識與專業(yè)知識有效地結(jié)合,更全面系統(tǒng)地了解行業(yè)知識。編寫程序要求遵循如下基本要求: 模塊化程序設(shè)計鋸齒型書寫格式 必須上機調(diào)試通過二、技術(shù)指導(dǎo)文件實現(xiàn)與調(diào)試2.1擲骰

3、子游戲題目內(nèi)容的描述1) 兩人輪流擲骰子,每次擲兩個,每人最多擲10次。2) 將每人每次的分值累加計分3) 當(dāng)兩個骰子點數(shù)都為6時,計8分。當(dāng)兩個點數(shù)相等且不為兩個6時,計7分。當(dāng)兩個點數(shù)不一樣時,計其中點數(shù)較小的骰子的點數(shù)。4) 結(jié)束條件:當(dāng)雙方都擲10次或經(jīng)過5次后一方累計分數(shù)多出另一方的30%及以上。最后顯示雙方分數(shù)并2/23判定優(yōu)勝者。輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說明數(shù)據(jù)類型:整型。內(nèi)容限制:隨機數(shù)的產(chǎn)生。輸入數(shù)據(jù)結(jié)果:勝利的一方主要模塊的算法描述執(zhí)行條件判斷輸入結(jié)果,本算法的思路過程:第一步要隨機產(chǎn)生隨機數(shù),然后進行算法輸出數(shù)值,最后比較結(jié)果,判斷勝利的一方。程序進程安排

4、圖圖1擲骰子游戲調(diào)試過程及實驗結(jié)果編輯過程中遇到的困難有:編程思路正確,但是無法正確編寫出程序和編程過程缺乏。C:USERSSQ25DESKTOP251.0D&buqDl.exe-個人第瞅投出的數(shù)個人第瞅投出的數(shù)二個人第舊諛投出的數(shù)一個人第9次投出的數(shù)二個人第9次投出的數(shù)個人第個次投岀的數(shù)二個人第個次投岀的數(shù)5824y分數(shù)ansDDs-R力e累累pl*一tel恒八s刀勝AAA-continue圖2擲骰子游戲2.2射擊游戲題目內(nèi)容的描述在程序運行時屏幕上方第一行隨機出現(xiàn)一個符號,要求游戲者輸入一個1-80之間的整數(shù),當(dāng)用戶輸入一個整數(shù)后,一個*立即從屏幕底端的該整數(shù)列向上移動,若移動到屏

5、幕的頂端能撞上符號,則游戲者獲勝。若沒有撞上,則要求再輸入一個整數(shù),共允許輸入5次,如果一直沒有撞上,則認為游戲者輸。提示:1) 輸入符號可以采用printf("%c",'1')2) 顯示*號向上移動:輸出一些空行。輸出*號。以循環(huán)的方式增加延時(for(i=0;i<100000;i+);)。clrscr()清屏重新繪制*號。輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說明System(“cls”);清楚屏幕,主要模塊的算法描述本算法的思路過程:第一步清楚屏幕,然后循環(huán)每行輸出*,依次循環(huán),判斷是否擊中目標(biāo),最后5次輸入結(jié)束,或者擊中目標(biāo)結(jié)束。程序進程安排

6、圖圖3射擊游戲調(diào)試過程及實驗結(jié)果該程序在調(diào)試過程中出現(xiàn)的問題是:該題中大體循環(huán)是以次數(shù),還是循環(huán)的結(jié)果作為判斷,弄不清楚U"C:Userssq25Desktop252Debug2rr±>.exeM圖4射擊游戲2.3計算存款本息之和:題目內(nèi)容描述以“存款利率”為關(guān)鍵字上網(wǎng)搜索目前我國整存整取不同期限我國的銀行存款利率,只計算一年(3%)、三年(4.25%)和五年(4.75%)三種期限。問題:1) 要求輸入存錢的本金和期限,求到期能從銀行得到的利息與本金合計。2) 假設(shè)存款期限為三十年本金為10萬,比較一年、三年和五年滾存三十年后的本息金額。*輸入數(shù)據(jù)類型、格式和內(nèi)容限制

7、和輸出數(shù)據(jù)的說明1) 數(shù)據(jù)類型:長整型。2)內(nèi)容限制:鍵入本金與年限。3)輸出數(shù)據(jù):本息和PI主要模塊的算法描述本算法的語言描述:輸入限定之內(nèi)的年份與存款金額,選擇對應(yīng)的年利率計算本息和是否調(diào)試過程及實驗結(jié)果IL'hC:Userssq25Desktop253Debuexe'PleaseInputtheprincipal:10000Pleaseinputtheyears:5save:33750.000000Pressanyketocontinue圖6計算存款本息之和|'1"C:Userssq25DeE;ktop3D&bug3.exe"total

8、lPleaseInputthepvincipa1:100000Pleaseinputtheyears:1Vousave:242726.265625total=lPleaseinputtheprincipa1:10000RPleaseinputtheveil's:3Vousaue:332020-937500total=lPleaseinputtheprincipa1:100000Pleaseinputtheyears:5Vousave=359146.156258potal=0Pressan51ketocontinue2.4肇事逃逸?241題目內(nèi)容的描述某部閩DT的出租車交通肇事逃逸,現(xiàn)場

9、無人看清后面的四位數(shù)字,但三位目擊群眾提供信息如下:1)車牌號后兩位相同。2)車牌號前兩位相同。3)車牌號是一個整數(shù)的平方。請編程查出肇事逃逸車輛的車牌號。輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說明1)數(shù)據(jù)類型:整型。2)內(nèi)容限制:前兩位相同,后兩位相同,整數(shù)的平方。3)輸出數(shù)據(jù):四位整數(shù)主要模塊的算法描述本算法的思路描述:前兩位,后兩位相同,則前兩位用i表示,后兩位用均表示,用k是100以內(nèi)的兩位整數(shù),I表示這個四位數(shù),用循環(huán)語句依次判斷結(jié)果適合公式:k*k=l=1OOO*i+1OO*i+1O*j+j,即為肇事車牌號!程序進程安排圖開始輸入本金嗎,存款年限你,本息和PI是1=1Pl=m*(

10、1+0.03*1);圖8肇事逃逸調(diào)試過程及實驗結(jié)果結(jié)束實驗中所遇到的困難是:書寫代碼時,定義四位車牌號為,由于字母i與數(shù)字1比較像,結(jié)果導(dǎo)致混淆。U'CtXUserssq25Desktop£4Debug4exe'Fi'essFi'essPI=m*(1+0.425*3);圖9肇事逃逸>l=52.5禮炮:題目內(nèi)容的描述鳴放禮炮起源于英國。據(jù)說F475)*多年前英國海勺是火炮。當(dāng)戰(zhàn)艦進入友好國家的港口之前,或在公海上與友好國家的艦船相遇時,為了表示沒有敵意,便把船上大炮內(nèi)的炮彈統(tǒng)統(tǒng)放掉,對方的海岸炮艦船也同樣做以表示回報。這種做法以后就逐漸成為互致敬意

11、的一種禮儀。由于當(dāng)時最大的戰(zhàn)艦裝有大炮輸出結(jié)果PI21響就成了一種最高禮節(jié)。有四艘戰(zhàn)艦ABCD開始鳴放禮炮各21響,已知A戰(zhàn)艦每隔5秒放一次,B戰(zhàn)艦每隔6秒放一次,C戰(zhàn)艦每隔7秒放一次,D戰(zhàn)艦每隔8秒放一次假設(shè)各炮手對進度掌握非常準(zhǔn)確,請問觀眾共可以聽到幾次禮炮聲?輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說明主要模塊的算法描述本算法的思路過程:根據(jù)條件“A戰(zhàn)艦每隔5秒放一次,B戰(zhàn)艦每隔6秒放一次,C戰(zhàn)艦每隔7秒放一次,D戰(zhàn)艦每隔8秒放一次”確定可能性!依次判斷,累計聽到的次數(shù),得出結(jié)果!程序進程安排圖初始化i=1,j=0I<=168W圖10禮炮調(diào)試過程及實驗結(jié)果程序在調(diào)試過程中出現(xiàn)的問題

12、是:編碼時要注意“I+(i%5=0)|(i%6=0)|(i%7=0)|(i%8=0)&&(i<=100)&&”圖11禮炮2.6汽車加油3'C:USERSSQ25DESKTOP255DEbyp5*(i%7=0)|(i%8=0)&&(i<=140一輛汽車加滿油后可行駛n公里。旅途中有若干個加油站。設(shè)計一個有效算法,指卄在(i%6=0)|(i%7=0)|(i%8=0)&&(i<=120&&i>100)題目內(nèi)容的描述哪些加油站??考佑?使沿途加油次數(shù)最少。輸入:第一行有2個正整數(shù)N和K(1&

13、lt;=N<=100,1<=K<=100),表示汽車加滿油后可行駛N公里,且旅途中有K個加油站。接下來的站之1行中,有K+1個整數(shù),表示第K個加油站與第K-1個加油間的距離。第0個加油站表示出發(fā)地,汽車已加滿油。第K+1個整數(shù)表示第K個加油站與追求地的距離。輸出:將編程計算出的最少加油次數(shù)輸出。如果無法到達追求地,則輸出NoSolution。(注意:i%8=0&&(i<=168&&i>140)一No和Solution之間有一個空格)。i+;j+例如:輸入:88輸出:5輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說明1)數(shù)據(jù)類型:數(shù)組類型

14、。2)內(nèi)容限制:鍵入數(shù)據(jù):3)用到的主要語句:循環(huán)條件判斷。4)輸出數(shù)據(jù):加油次數(shù)(整型)主要模塊的算法描述本算法的語言描述是:按題目要求輸入數(shù)據(jù)。第一步判斷可行駛的路程是否足夠汽車到達加油站。如果不能到達,則需要加油,在此處記錄一次并循環(huán)。得出累計加油次數(shù)之和算得出結(jié)果。程序進程安排圖開始初始化:汽車加滿油后可行駛N公里,且旅途中有K個加油站輸入K個加油站距離輸出加油次數(shù)結(jié)束圖12禮調(diào)試過程及實驗結(jié)果實驗中所遇到的困難是:循環(huán)條件判斷不對。Eser$sq25Desktop該驗A6Debug6"n-2m=6wn=5Pressan*/k總屮tocontinue2.7大優(yōu)惠題目內(nèi)容的描述

15、1元,每消費KM元可以用的中國移動推出最新的手機資費優(yōu)惠技術(shù)指導(dǎo)文件,按照這個技術(shù)指導(dǎo)文件Tom的手機每天消費元就可以獲贈1元,一開始Tom有M元,問最多可以用多少天?輸入的測試數(shù)據(jù)為一行,實例包括2個整數(shù)M,K(2<=K<=M<=1000)。輸出一個整數(shù),表示天數(shù)。101011502052輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說明整型,算法的應(yīng)用,內(nèi)容數(shù)字的限定。主要模塊的算法描述開始程序進程安排圖程序進程安排圖M,K,i=0(2<=K<=M<=1000)是圖14圖14丿h-簡要的語言描述思考數(shù)據(jù)間的關(guān)系。分析K與天數(shù)的關(guān)系。i+;M=M-1;M>

16、0M值遞減的方式運算。M值遞減的方式運算。?27.4調(diào)試過程及實驗結(jié)果實驗中所遇到的困難是:實驗中所遇到的困難是:PleaseinputFlanhKC2<=K<=n<1000>1010可用天數(shù)"P>*essanykeytoconiMBH沒有注意到題目中給定的限制范圍。注意大小寫結(jié)束PleaseinputMandK<2<=K<=M<=1000)20回用天數(shù)註PressanyKeytocontinue圖152.8金幣題目內(nèi)容的描述國王用金幣獎勵他忠誠的侍從。第一天侍從工作結(jié)束后,國王獎勵了他一個金幣。接著的兩天侍從工作中(第二天,第三

17、天)的每一天,國王獎勵了他兩個金幣。接著的三天侍從工作中(第四天,第五天,第六天)的每一天,國王獎勵了他三個金幣。接著的四天侍從工作中(第七天,第八天,第九天,第十天)的每一天,國王獎勵了他四個金幣。這種獎勵的模式將是固定不變的,即在N天侍從工作中的每一天,國王將獎勵他N個金幣。接著的N+1天的侍從工作中的每一天,國王將獎勵他N+1個金幣。要求在給定的天數(shù)時,你的程序能夠統(tǒng)計國王總共獎勵了侍從多少金幣。輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說明整型,算法的應(yīng)用,內(nèi)容數(shù)字的限定。主要模塊的算法描述結(jié)束圖16J-簡要的語言描述思考數(shù)據(jù)間的關(guān)系。分析天數(shù)與獲得金幣的關(guān)系(類金字塔)。進行總求和。調(diào)

18、試過程及實驗結(jié)果實驗中所遇到的困難是:循環(huán)條件的出口判斷不明確。求和處理不簡約。E'CAUSERSSQ25DESKTOP258Debug8.exe,aseinpu.tdai/s=15Pressanytocontinueu:ubiu&ueDugs.exepleaseinputdavs=10Pressanytocontinu.e三、課程設(shè)計分析與匯總報告由于上學(xué)期在語言的學(xué)習(xí)方面還有很多不足之處,因此,這次課程設(shè)計顯得特別吃力,很多不足都暴露了出來。不過最終還是基本完成了此次課程設(shè)計的內(nèi)容。在各個實驗中解決問題的基本進程安排是:分析問題t分析解決問題的基本進程安排t選擇合適的算法語

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

20、知識,思想到到學(xué)以致用,并能將程序設(shè)計的知識與專業(yè)知識有效地結(jié)合,更全面系統(tǒng)地了解行業(yè)知識。眾多不足之處我會課余進度進一步加固,力爭將這門基礎(chǔ)課真正的學(xué)好、用好,擺正思想,為以后的專業(yè)課的學(xué)習(xí)大好基礎(chǔ)!最后感謝謝老師的一而再再而三的嚴(yán)格要求及耐心指導(dǎo),感謝感謝同學(xué)們的幫助,謝謝你們!附錄程序清單2.1擲骰子游戲#include<stdio.h>#include<stdlib.h>#include<time.h>voidmain()inti,j,k,b,n,m,add1=0,add2=0;srand(unsigned)time(NULL);/生成隨機數(shù)發(fā)生器f

21、or(i=1;i<11;i+)for(b=1;b<60000000;b+);printf(”第一我第d次投出的數(shù)n",i);j=rand()%6+1;printf("%dn",j);k=rand()%6+1;printf("%dn",k);if(k=j=6)add1=add1+8;if(k=j=5|k=j=4|k=j=3|k=j=2|k=j=1)add1=add1+7;elseif(k>j)add1=add1+j;elseadd1=add1+k;printf(”第二我第d次投出的數(shù)n",i);m=rand()%6+1

22、;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;elseif(n>m)add2=add2+m;elseadd2=add2+n;if(i=6)if(add1=2*add2|add2=2*add1)i=10;printf("第一我分值累加計分%dn",add1);printf("第二我分值累加計數(shù)%dn"

23、,add2);if(add1>add2)printf("第一我勝利");if(add2>add1)printf("第二我勝利");射擊游戲#include<stdio.h>#include<stdlib.h>#include<time.h>voidmain()inti,j,n,t,m;longintk;printf(Welcome*");printf("nGameBegin:n");srand(unsigned)time(NULL);n=rand()%80+1;for(i=0;

24、i<n;i+)printf("");printf("%cn",'1');for(m=0;m<5;m+)scanf("%d",&t);for(j=10;j>0;j-)system("cls");for(i=0;i<80;i+)if(i=n)printf("%c",'1');elseprintf("");for(i=1;i<j;i+)printf("n");for(k=0;k<80;k

25、+)if(k=t)printf("*");elseprintf("");for(k=0;k<100000;k+);if(t=n)printf("YourWinnern");break;if(m=4)printf("YouLosen");2.2 計算存款本息之和#include<stdio.h>voidmain()floatm,n,PI;定義m存款本金,n存款年限,printf("Pleaseinputtheprincipal:");scanf("%f",&a

26、mp;m);printf("Pleaseinputtheyears:");scanf("%f",&n);if(n=1)PI=m*(1+0.03*1);elseif(n=3)PI=m*(1+0.425*3);elseif(n=5)PI=m*(1+0.475*5);printf("Yousave:%fn",PI);#include<stdio.h>#include<stdlib.h>main()floati,save,total,profit,term;while(1)printf("total=

27、");scanf("%f",&total);if(total=0)break;printf("Pleaseinputtheprincipal:");scanf("%f",&save);printf("Pleaseinputtheyears:");scanf("%f",&term);if(term=5)for(i=1;i<=30;i=i+term)save=0.0475*save*term+save;printf("Yousave:%fn"

28、;,save);elseif(term=3)for(i=1;i<=30;i=i+term)save=0.0425*save*term+save;printf("Yousave:%fn",save);elsefor(i=1;i<=30;i=i+term)save=0.03*save*term+save;printf("Yousave:%fn",save);肇事逃逸#include<stdio.h>#include<stdlib.h>main()inti,j,k,c;for(i=0;i<=9;i+)for(j=0;j

29、<=9;j+)c=1000*i+100*i+10*j+j;for(k=1;k<=(c/2);k+)if(k*k)=c):%dn",c);:%dn",c);printf("肇事逃逸車輛的車牌號為2.3 禮炮#include<stdio.h>#include<stdlib.h>main()inti,j=1;for(i=1;i<=168;i+)if(i<=100)if(i%5=0)|(i%6=0)|(i%7=0)|(i%8=0)j=j+1;elseif(i<=120&&i>100)if(i%6=

30、0)|(i%7=0)|(i%8=0)j=j+1;elseif(i<=140&&i>120)if(i%7=0)|(i%8=0)j=j+1;elseif(i%8=0)j=j+1;printf("%dn",j);2.4 汽車加油#include<stdio.h>voidmain()intK,N,i,j,i999,x=0,y=0;/i表示第幾個加油站。j為第K個加油站與第K-1個加油站直接的距離。x表示總距離。*/printf("輸入NK:");scanf("%d%d",&N,&K);for(i=0;i<=K;i+)scanf("%d",&j);li=j;for(i=0;i<=K;i+)if(N<li)printf("NoSolution.n");break;elsex=x+li;if(N<x)y+;x=li;if(i=K)printf("輸出最少加油次數(shù):%dn",y);2.5 大優(yōu)惠#include<stdio.h>main()intM,K

溫馨提示

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

評論

0/150

提交評論