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