版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> C程序設(shè)計(jì)實(shí)習(xí)報(bào)告</b></p><p> 題目:C語(yǔ)言投票程序</p><p> 學(xué) 院: </p><p> 專(zhuān) 業(yè): </p><p> 姓 名: </p><p>&l
2、t;b> 班級(jí)學(xué)號(hào)</b></p><p> 指導(dǎo)教師: </p><p> 2010 年 07 月 17 日</p><p><b> 目錄</b></p><p> 一、課程設(shè)計(jì)題目描述與要求…………………………………… 3</p>&
3、lt;p> 二、 需求與個(gè)人設(shè)計(jì)思想 …………………………………… 4</p><p> 三、 流程圖 …………………………………… 5</p><p> 四、我的程序設(shè)計(jì)(源程序)…………………………………… 6</p><p> 程序運(yùn)行情況 …………………………………… 8</p>&
4、lt;p> 五、 總結(jié)與修改 …………………………………… 9</p><p> 關(guān)于程序?qū)嵭?…………………………………… 9</p><p> 問(wèn)題及可能的解決方法 …………………………………… 9</p><p> 修改后程序運(yùn)行情況 …………………………………… 12</p><p>
5、 修改后的程序優(yōu)點(diǎn) …………………………………… 13</p><p> 心得與體會(huì) …………………………………… 15</p><p><b> C語(yǔ)言投票程序</b></p><p> 一、課程設(shè)計(jì)題目描述與要求</p><p> 要求:設(shè)有代號(hào)為a、b、c的足球先生候選人,根據(jù)投票者在選票上對(duì)他們編號(hào)的
6、填寫(xiě)順序分別記分5、3、2。請(qǐng)編程從鍵盤(pán)上輸入投票人數(shù)及投票結(jié)果,統(tǒng)計(jì)他們的得分,并輸出哪位當(dāng)選足球先生。</p><p> 注意:若同一張票上寫(xiě)有兩個(gè)相同的代號(hào),則顯示“此票無(wú)效”,若最終前兩名得分相同應(yīng)顯示“重新投票”,否則先是三個(gè)候選者得分并輸出“祝賀X當(dāng)選冠軍!”。 </p><p><b> 例如:</b></p><p><
7、;b> 投票人數(shù):5</b></p><p><b> 輸入投票內(nèi)容:</b></p><p><b> a b c</b></p><p><b> c a b </b></p><p> c a a 該票無(wú)效!</p>
8、;<p><b> c b a</b></p><p><b> b c a</b></p><p><b> 三位候選人得分:</b></p><p><b> a: 12</b></p><p><b> b
9、: 13</b></p><p><b> c: 15</b></p><p><b> 祝賀c當(dāng)選冠軍!</b></p><p><b> 提示:</b></p><p> 數(shù)據(jù)結(jié)構(gòu)可用結(jié)構(gòu)體數(shù)組,結(jié)構(gòu)體成員包括代號(hào)、得分。或者采用二維數(shù)組,行方向?qū)?yīng)
10、一張投票,列方向</p><p> 二、需求與個(gè)人設(shè)計(jì)思想</p><p><b> 【需求】</b></p><p> 此程序意在評(píng)出得分最高的“足球先生”,要求編程從鍵盤(pán)上輸入投票人數(shù)及投票結(jié)果,統(tǒng)計(jì)他們的得分,并輸出哪位當(dāng)選足球先生。</p><p><b> 【個(gè)人設(shè)計(jì)思想】</b>
11、</p><p> 通過(guò)結(jié)構(gòu)體數(shù)組struct candidate Cadt[3]來(lái)存儲(chǔ)三位候選人的基本信息:代號(hào)、得分。在用一個(gè)一維數(shù)組來(lái)存儲(chǔ)投票內(nèi)容——代表投票內(nèi)容(順序),通過(guò)循環(huán)語(yǔ)句while,for和一個(gè)沒(méi)有參數(shù)的getchar函數(shù)(字符輸入函數(shù))從終端輸入投票內(nèi)容,處理后得到最終三位候選人得分,比較得到最終結(jié)果,評(píng)出得分最高的一名候選人,即為“足球先生”。在過(guò)程中,當(dāng)遇到一張選票上寫(xiě)有兩個(gè)代號(hào)相同時(shí)
12、應(yīng)顯示“此票無(wú)效”, 若最終前兩名得分相同應(yīng)顯示“重新投票”, 否則先是三個(gè)候選者得分并輸出“祝賀X當(dāng)選冠軍!”。</p><p><b> 流程圖</b></p><p><b> 整體流程圖</b></p><p><b> 圖7—1</b></p><p><
13、b> 2、主函數(shù)流程圖:</b></p><p><b> 圖7—2</b></p><p> 四、我的程序設(shè)計(jì)(源程序)</p><p> #include<stdio.h></p><p> struct candidate //定義結(jié)構(gòu)體</p><p&
14、gt;<b> {</b></p><p> char name; //名字</p><p> int score; //分?jǐn)?shù)</p><p><b> };</b></p><p> struct candidate Cadt[3]={{'a',0},{'b&
15、#39;,0},{'c',0}};</p><p> void main()</p><p><b> {</b></p><p> int i,j,num;</p><p> char vote[3],s;</p><p> printf("請(qǐng)問(wèn)共有多少人投票
16、?\n"); </p><p> scanf("%d",&num); </p><p> while(num--) </p><p><b> {</b></p><p> for(i=0;i<3;i++)</p><p><b>
17、{</b></p><p> s=getchar();</p><p> while(s!='a' && s!='b' && s!='c') </p><p> s=getchar(); </p><p> vote[i]=s; &l
18、t;/p><p><b> } </b></p><p> if(vote[0]+vote[1]+vote[2]!='a'+'b'+'c') //判斷選票上是否有重復(fù)代碼</p><p><b> { </b></p><p> printf(&q
19、uot; 該票無(wú)效 !\n");</p><p><b> continue;</b></p><p><b> }</b></p><p><b> else</b></p><p> for(j=0;j<3;j++)</p><
20、;p><b> {</b></p><p> if(vote[0]==Cadt[j].name)</p><p> Cadt[j].score+=5;</p><p> if(vote[1]==Cadt[j].name)</p><p> Cadt[j].score+=3;</p><
21、p> if(vote[2]==Cadt[j].name)</p><p> Cadt[j].score+=2;</p><p><b> }</b></p><p><b> }</b></p><p> printf("三位候選人得分:\n"); </p&
22、gt;<p> for(j=0;j<3;j++) </p><p> printf("%c: %d\n",Cadt[j].name,Cadt[j].score);</p><p> if(Cadt[0].score==Cadt[1].score||Cadt[1].score==Cadt[2].score||Cadt[2].score==Cadt
23、[0].score)</p><p> printf("please vote againe.\n");</p><p><b> else</b></p><p> if(Cadt[0].score<Cadt[1].score)</p><p> Cadt[0].name=Cadt[1
24、].name;</p><p> if(Cadt[0].score<Cadt[2].score)</p><p> Cadt[0].name=Cadt[2].name;</p><p> printf("祝賀%c當(dāng)選冠軍 .\n",Cadt[0].name);</p><p><b> }</
25、b></p><p><b> 程序運(yùn)行情況如下:</b></p><p> 當(dāng)遇到一張選票上寫(xiě)有兩個(gè)代號(hào)相同時(shí)成功顯示“該票無(wú)效”:</p><p><b> 圖7—3</b></p><p><b> 顯示最終結(jié)果:</b></p><p&
26、gt;<b> 圖7—4</b></p><p><b> 五、總結(jié)與修改</b></p><p> 暑假期間,通過(guò)八天的C語(yǔ)言程序設(shè)計(jì)實(shí)習(xí),我重新溫習(xí)了C語(yǔ)言,更是對(duì)C語(yǔ)言有了更新的認(rèn)識(shí),更為深層次的認(rèn)識(shí)。以下幾點(diǎn)是我在實(shí)習(xí)期間遇到的問(wèn)題及心得體會(huì)。</p><p><b> 【關(guān)于程序?qū)嵭小?lt;/
27、b></p><p> 程序運(yùn)行情況的截圖如圖7—3,7—4所示,圖中顯示有投票人數(shù)、投票的內(nèi)容、候選人最后的得分情況以及最終冠軍的獲得者,系統(tǒng)運(yùn)行情況較好,但仍存在一些不足,例如:沒(méi)有控制開(kāi)始結(jié)束的語(yǔ)句,程序沒(méi)有很好的體現(xiàn)模塊化等。在以后的程序設(shè)計(jì)中要特別注意這次遇到的問(wèn)題,改進(jìn)不足,探索新穎的思路,力求將程序設(shè)計(jì)完美化。</p><p> 【問(wèn)題及可能的解決方法】</p
28、><p> 程序中最大的不足是模塊化沒(méi)有很好的發(fā)揮其作用,個(gè)人覺(jué)得可以通過(guò)調(diào)用函數(shù)來(lái)彌補(bǔ)這一不足。至于開(kāi)始結(jié)束語(yǔ)句地解決,可以增加一個(gè)輸出語(yǔ)句來(lái)解決。還有一個(gè)問(wèn)題是,源代碼中沒(méi)有注釋語(yǔ)句,雖然這次設(shè)計(jì)的程序比較簡(jiǎn)單沒(méi)用到注釋?zhuān)院笤O(shè)計(jì)中一定要注意這方面。</p><p><b> 【修改后程序】</b></p><p> #include&
29、lt;stdio.h></p><p> #include <math.h></p><p> struct candidate//定義結(jié)構(gòu)體</p><p><b> {</b></p><p> char name;//名字</p><p> int score;/
30、/選票得分</p><p><b> };</b></p><p> struct candidate Cadt[3]={{'a',0},{'b',0},{'c',0}};</p><p> void thanks()</p><p><b> {<
31、/b></p><p> printf("thank you!\n");</p><p><b> }</b></p><p> void football()</p><p><b> {</b></p><p> int i,j,num
32、;</p><p> char vote[3],s;</p><p> printf("請(qǐng)問(wèn)共有多少人投票?\n"); </p><p> scanf("%d",&num); </p><p> while(num--) </p><p><b> {
33、</b></p><p> for(i=0;i<3;i++)</p><p><b> {</b></p><p> s=getchar();</p><p> while(s!='a' && s!='b' && s!='c
34、') </p><p> s=getchar(); </p><p> vote[i]=s; </p><p><b> } </b></p><p> if(vote[0]+vote[1]+vote[2]!='a'+'b'+'c')//判斷選票是
35、否有重復(fù)代號(hào)</p><p><b> { </b></p><p> printf(" 該票無(wú)效! \n");</p><p><b> continue;</b></p><p><b> }</b></p><p>
36、<b> else</b></p><p> for(j=0;j<3;j++)</p><p><b> {</b></p><p> if(vote[0]==Cadt[j].name)</p><p> Cadt[j].score+=5;</p><p>
37、 if(vote[1]==Cadt[j].name)</p><p> Cadt[j].score+=3;</p><p> if(vote[2]==Cadt[j].name)</p><p> Cadt[j].score+=2;</p><p><b> }</b></p><p>&l
38、t;b> }</b></p><p> printf("三位候選人得分:\n"); </p><p> for(j=0;j<3;j++) </p><p> printf("%c: %d\n",Cadt[j].name,Cadt[j].score);</p><p>
39、if(Cadt[0].score==Cadt[1].score||Cadt[1].score==Cadt[2].score||Cadt[2].score==Cadt[0].score)</p><p> printf("please vote againe.\n");</p><p><b> else</b></p><p
40、> if(Cadt[0].score<Cadt[1].score)</p><p> Cadt[0].name=Cadt[1].name;</p><p> if(Cadt[0].score<Cadt[2].score)</p><p> Cadt[0].name=Cadt[2].name;</p><p> pr
41、intf("祝賀%c當(dāng)選冠軍 !\n",Cadt[0].name);</p><p><b> }</b></p><p> int main()</p><p><b> {</b></p><p> int ID,ture=0; </p><p&g
42、t; printf("\n****************************此程序?yàn)樽闱蛳壬镀背绦?***************************\n"); </p><p><b> while(1) </b></p><p><b> { </b></p><p> prin
43、tf("請(qǐng)選擇是否繼續(xù):1為繼續(xù),2為退出;\n "); </p><p> scanf("%d",&ID); </p><p> getchar(); </p><p> switch(ID) </p><p><b> { </b></p><
44、;p> case 1: football();break; </p><p> case 2: thanks();break; </p><p> default : ture=1;break; </p><p><b> } </b></p><p> if(ture!=1) printf("
45、**********************************謝謝您的參與**********************************\n"); </p><p> printf("\n"); </p><p> if(ture) break; </p><p> getchar(); </p><
46、;p> printf("\n請(qǐng)按任何鍵繼續(xù)......\n"); </p><p> getchar();</p><p><b> }</b></p><p><b> return 0;</b></p><p><b> ?。?lt;/b><
47、;/p><p> 修改后程序運(yùn)行情況:</p><p><b> 圖7—5</b></p><p><b> 圖7—6</b></p><p> 【修改后的程序優(yōu)點(diǎn)】</p><p> 程序被修改后更好地實(shí)現(xiàn)了模塊化:</p><p><b
48、> 主函數(shù)</b></p><p><b> 圖7—7</b></p><p><b> thanks函數(shù)</b></p><p><b> 圖7—8</b></p><p> ?。?)football函數(shù)</p><p>
49、圖7—9 </p><p><b> 【心得與體會(huì)】</b></p><p> c語(yǔ)言作為一種計(jì)算機(jī)的語(yǔ)言,我們學(xué)習(xí)它,有助于我們更好的了解計(jì)算機(jī),與計(jì)算機(jī)進(jìn)行交流,因此,c語(yǔ)言的學(xué)習(xí)對(duì)我們尤其重要,于是學(xué)校組織我們進(jìn)行了為期八天的實(shí)習(xí)。
50、 在這八天里,我們?cè)诶蠋煹膸ьI(lǐng)下進(jìn)行了暑期c語(yǔ)言程序?qū)嵺`學(xué)習(xí)。在這之前,我們已經(jīng)對(duì)c語(yǔ)言這門(mén)課程學(xué)習(xí)了一個(gè)學(xué)期,對(duì)其有了一定的了解,但是也僅僅是停留在了解的范圍,對(duì)里面的好多東西還是很陌生,更多的在運(yùn)用起來(lái)的時(shí)候還是感到很棘手,畢竟,萬(wàn)事開(kāi)頭難嘛。</p><p> 實(shí)習(xí)前兩天由于對(duì)所學(xué)的知識(shí)忘記了不少,編的程序中有很多錯(cuò)誤,而且很多找不出原因所在,也就是說(shuō)完成程序的編寫(xiě),并不意味著萬(wàn)事大吉。原本認(rèn)為萬(wàn)無(wú)一失
51、的程序,實(shí)際上機(jī)運(yùn)行時(shí)卻不斷出現(xiàn)麻煩。如編譯程序檢測(cè)出一大堆錯(cuò)誤。有時(shí)程序本身不存在語(yǔ)法錯(cuò)誤,也能夠順利運(yùn)行,但是運(yùn)行結(jié)果顯然是錯(cuò)誤的。經(jīng)過(guò)幾天對(duì)書(shū)上知識(shí)如:數(shù)組、結(jié)構(gòu)體數(shù)組、循環(huán)語(yǔ)句(for\while)、if語(yǔ)句等的復(fù)習(xí)以及老師的耐心輔導(dǎo),不僅重拾以前所學(xué)知識(shí)而且對(duì)c語(yǔ)言有了更深層次的理解。當(dāng)看到自己設(shè)計(jì)出來(lái)的程序運(yùn)行成功時(shí),感覺(jué)很欣慰的同時(shí)更痛下決心,以后一定要多看c語(yǔ)言源程序。特別時(shí)要注意程序中的算法與數(shù)據(jù)結(jié)構(gòu),畢竟學(xué)c的關(guān)口就
52、是算法和數(shù)據(jù)結(jié)構(gòu)。別的方面也要關(guān)注一下,諸如變量的命名、庫(kù)函數(shù)的用法、結(jié)構(gòu)體的定義等等。有些庫(kù)函數(shù)是經(jīng)常用到的。對(duì)于這些庫(kù)函數(shù)的用法一定要牢牢記住。</p><p> 只是看是不行的,編程序是個(gè)實(shí)干的活。一個(gè)c語(yǔ)言程序從編輯、編譯、連接到運(yùn)行,光說(shuō)不練不行。剛開(kāi)始學(xué)的時(shí)候可以多練習(xí)書(shū)上的習(xí)題。對(duì)于自己不明白的地方,自己編個(gè)小程序?qū)嶒?yàn)一下是最好的方法,能給自己留下深刻的印象。自己動(dòng)手的過(guò)程中要不斷糾正自己不好的編
53、程習(xí)慣和認(rèn)識(shí)錯(cuò)誤。有一定的基礎(chǔ)以后可以嘗試編一些經(jīng)典的案例程序。 由于時(shí)間的關(guān)系,我們的這次實(shí)踐課程老師并沒(méi)有給我們?cè)敿?xì)的介紹,只是給我們簡(jiǎn)單的介紹了幾個(gè)比較重要的實(shí)際操作。包括了程序模塊處理、程序的添加修改、程序錯(cuò)誤檢查中用到的屏蔽操作、程序的調(diào)試等基本操作,更多的還是要靠自己努力。 上機(jī)實(shí)驗(yàn)是學(xué)習(xí)程序設(shè)計(jì)語(yǔ)言必不可少的實(shí)踐環(huán)節(jié),特別是c語(yǔ)言靈活、簡(jiǎn)潔,更需要通過(guò)編程的實(shí)踐來(lái)真正掌握它。對(duì)
54、于程序設(shè)計(jì)語(yǔ)言的學(xué)習(xí),可以概括為學(xué)習(xí)語(yǔ)法規(guī)定、掌握程序設(shè)計(jì)方法、提高程序處理能力,而這些都必須通過(guò)充分的實(shí)際上機(jī)操作才能完成。</p><p> 通過(guò)多次上機(jī)練習(xí),我對(duì)于語(yǔ)法知識(shí)有了感性的認(rèn)識(shí),加深了對(duì)它的理解,在理解的基礎(chǔ)上就會(huì)自然而然地掌握c語(yǔ)言的語(yǔ)法規(guī)定。對(duì)于一些內(nèi)容自己認(rèn)為在課堂上聽(tīng)懂了,但上機(jī)實(shí)踐中會(huì)發(fā)現(xiàn)原來(lái)理解的偏差。所以學(xué)習(xí)c語(yǔ)言不能只停留在學(xué)習(xí)它的語(yǔ)法規(guī)則,而是利用學(xué)到的知識(shí)編寫(xiě)c語(yǔ)言程序,解決
55、實(shí)際問(wèn)題。即把c語(yǔ)言作為工具,描述解決實(shí)際問(wèn)題的步驟,由計(jì)算機(jī)幫助我們解題。只有通過(guò)上機(jī)才能檢驗(yàn)自己是否掌握c語(yǔ)言、自己編寫(xiě)的程序是否能夠正確地解題。所以,這次實(shí)習(xí)對(duì)于c語(yǔ)言初學(xué)者的我意義非凡,通過(guò)它我學(xué)到了很多在書(shū)上學(xué)不到的知識(shí)。</p><p> 關(guān)于養(yǎng)成良好的編程習(xí)慣方面1、在比較復(fù)雜的代碼后面要有注釋?zhuān)?、注意語(yǔ)句的嵌套不能過(guò)長(zhǎng);3、注意語(yǔ)句的選擇。分支語(yǔ)句注意if循環(huán)和while、for的使用。
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c語(yǔ)言課程設(shè)計(jì)---c語(yǔ)言小車(chē)動(dòng)畫(huà)程序
- c語(yǔ)言程序課程設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)源程序
- c課程設(shè)計(jì)報(bào)告-- c語(yǔ)言程序設(shè)計(jì)
- c語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)
- 《c語(yǔ)言程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告
- c語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告
- c語(yǔ)言課程設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)
- c++課程設(shè)計(jì)--c++程序設(shè)計(jì)語(yǔ)言
- c語(yǔ)言程序課程設(shè)計(jì)—歌手比賽系統(tǒng)
- 擲骰子游戲-c語(yǔ)言程序課程設(shè)計(jì)
- c語(yǔ)言程序課程設(shè)計(jì)—歌手比賽系統(tǒng)
- c語(yǔ)言程序課程設(shè)計(jì)-猜數(shù)字游戲
- c語(yǔ)言程序課程設(shè)計(jì)--模擬螞蟻覓食
- c語(yǔ)言程序課程設(shè)計(jì)--文件存取練習(xí)
- 【課程設(shè)計(jì)】c語(yǔ)言課程設(shè)計(jì)
- c語(yǔ)言語(yǔ)言課程設(shè)計(jì)報(bào)告
- 《c語(yǔ)言程序設(shè)計(jì)》課程設(shè)計(jì)推箱子
評(píng)論
0/150
提交評(píng)論