版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、.C程序設(shè)計(jì)實(shí)習(xí)報(bào)告題目:C語言投票程序?qū)W 院: 專 業(yè): 姓 名: 班級(jí)學(xué)號(hào)指導(dǎo)教師: 2010 年 07 月 17 日目錄一、課程設(shè)計(jì)題目描述與要求 3二、 需求與個(gè)人設(shè)計(jì)思想 4三、 流程圖 5四、我的程序設(shè)計(jì)(源程序) 6 程序運(yùn)行情況 8五、 總結(jié)與修改 9關(guān)于程序?qū)嵭?9 問題及可能的解決方法 9修改后程序運(yùn)行情況 12修改后的程序優(yōu)點(diǎn) 13心得與體會(huì) 15 C語言投票程序一、課程設(shè)計(jì)題目描述與要求要求:設(shè)有代號(hào)為a、b、c的足球先生候選人,根據(jù)投票者在選票上對(duì)他們編號(hào)的填寫順序分別記分5、3、2。請(qǐng)編程從鍵盤上輸入投票人數(shù)及投票結(jié)果,統(tǒng)計(jì)他們的得分,并輸出哪位當(dāng)選足球先生。注意:
2、若同一張票上寫有兩個(gè)相同的代號(hào),則顯示“此票無效”,若最終前兩名得分相同應(yīng)顯示“重新投票”,否則先是三個(gè)候選者得分并輸出“祝賀X當(dāng)選冠軍!”。 例如:投票人數(shù):5輸入投票內(nèi)容:a b cc a b c a a 該票無效!c b ab c a三位候選人得分:a: 12b: 13c: 15祝賀c當(dāng)選冠軍!提示:數(shù)據(jù)結(jié)構(gòu)可用結(jié)構(gòu)體數(shù)組,結(jié)構(gòu)體成員包括代號(hào)、得分?;蛘卟捎枚S數(shù)組,行方向?qū)?yīng)一張投票,列方向二、需求與個(gè)人設(shè)計(jì)思想 【需求】此程序意在評(píng)出得分最高的“足球先生”,要求編程從鍵盤上輸入投票人數(shù)及投票結(jié)果,統(tǒng)計(jì)他們的得分,并輸出哪位當(dāng)選足球先生?!緜€(gè)人設(shè)計(jì)思想】通過結(jié)構(gòu)體數(shù)組struct ca
3、ndidate Cadt3來存儲(chǔ)三位候選人的基本信息:代號(hào)、得分。在用一個(gè)一維數(shù)組來存儲(chǔ)投票內(nèi)容代表投票內(nèi)容(順序),通過循環(huán)語句while,for和一個(gè)沒有參數(shù)的getchar函數(shù)(字符輸入函數(shù))從終端輸入投票內(nèi)容,處理后得到最終三位候選人得分,比較得到最終結(jié)果,評(píng)出得分最高的一名候選人,即為“足球先生”。在過程中,當(dāng)遇到一張選票上寫有兩個(gè)代號(hào)相同時(shí)應(yīng)顯示“此票無效”, 若最終前兩名得分相同應(yīng)顯示“重新投票”, 否則先是三個(gè)候選者得分并輸出“祝賀X當(dāng)選冠軍!”。三、 流程圖1、 整體流程圖“足球先生”投票程序 名次排序輸出 數(shù)據(jù)比較 數(shù)據(jù)處理投票內(nèi)容輸入結(jié)構(gòu)體數(shù)組引用 圖712、主函數(shù)流程圖
4、:請(qǐng)問共有多少人進(jìn)行投票輸入投票人數(shù)開始同一張票上存在相同代號(hào)統(tǒng)計(jì)票數(shù)顯示“此票無效”存在相同票數(shù)?輸出“祝賀X當(dāng)選冠軍”輸入投票人數(shù) 圖72四、我的程序設(shè)計(jì)(源程序)#include<stdio.h>struct candidate /定義結(jié)構(gòu)體 char name; /名字 int score; /分?jǐn)?shù);struct candidate Cadt3='a',0,'b',0,'c',0;void main() int i,j,num; char vote3,s; printf("請(qǐng)問共有多少人投票?n"); sc
5、anf("%d",&num); while(num-) for(i=0;i<3;i+) s=getchar(); while(s!='a' && s!='b' && s!='c') s=getchar(); votei=s; if(vote0+vote1+vote2!='a'+'b'+'c') /判斷選票上是否有重復(fù)代碼 printf(" 該票無效 !n");continue; else for(j=0;j<
6、3;j+) if(vote0=C) Cadtj.score+=5; if(vote1=C) Cadtj.score+=3; if(vote2=C) Cadtj.score+=2; printf("三位候選人得分:n"); for(j=0;j<3;j+) printf("%c: %dn",C,Cadtj.score); if(Cadt0.score=Cadt1.score|Cadt1.score=Cadt2.score|Cadt2.score=Cadt0.score) print
7、f("please vote againe.n"); else if(Cadt0.score<Cadt1.score) C=C; if(Cadt0.score<Cadt2.score) C=C; printf("祝賀%c當(dāng)選冠軍 .n",C);程序運(yùn)行情況如下:(1) 當(dāng)遇到一張選票上寫有兩個(gè)代號(hào)相同時(shí)成功顯示“該票無效”: 圖73(2) 顯示最終結(jié)果: 圖74五、總結(jié)與修改暑假期間,通過八天的C語言程序設(shè)計(jì)實(shí)習(xí),我重新溫習(xí)了C語言,更是對(duì)C語言有了更新
8、的認(rèn)識(shí),更為深層次的認(rèn)識(shí)。以下幾點(diǎn)是我在實(shí)習(xí)期間遇到的問題及心得體會(huì)?!娟P(guān)于程序?qū)嵭小?程序運(yùn)行情況的截圖如圖73,74所示,圖中顯示有投票人數(shù)、投票的內(nèi)容、候選人最后的得分情況以及最終冠軍的獲得者,系統(tǒng)運(yùn)行情況較好,但仍存在一些不足,例如:沒有控制開始結(jié)束的語句,程序沒有很好的體現(xiàn)模塊化等。在以后的程序設(shè)計(jì)中要特別注意這次遇到的問題,改進(jìn)不足,探索新穎的思路,力求將程序設(shè)計(jì)完美化?!締栴}及可能的解決方法】 程序中最大的不足是模塊化沒有很好的發(fā)揮其作用,個(gè)人覺得可以通過調(diào)用函數(shù)來彌補(bǔ)這一不足。至于開始結(jié)束語句地解決,可以增加一個(gè)輸出語句來解決。還有一個(gè)問題是,源代碼中沒有注釋語句,雖然這次設(shè)計(jì)
9、的程序比較簡單沒用到注釋,但以后設(shè)計(jì)中一定要注意這方面?!拘薷暮蟪绦颉?include<stdio.h>#include <math.h>struct candidate/定義結(jié)構(gòu)體 char name;/名字 int score;/選票得分;struct candidate Cadt3='a',0,'b',0,'c',0;void thanks()printf("thank you!n");void football() int i,j,num; char vote3,s; printf("
10、請(qǐng)問共有多少人投票?n"); scanf("%d",&num); while(num-) for(i=0;i<3;i+) s=getchar(); while(s!='a' && s!='b' && s!='c') s=getchar(); votei=s; if(vote0+vote1+vote2!='a'+'b'+'c')/判斷選票是否有重復(fù)代號(hào) printf(" 該票無效! n");continue
11、; else for(j=0;j<3;j+) if(vote0=C) Cadtj.score+=5; if(vote1=C) Cadtj.score+=3; if(vote2=C) Cadtj.score+=2; printf("三位候選人得分:n"); for(j=0;j<3;j+) printf("%c: %dn",C,Cadtj.score); if(Cadt0.score=Cadt1.score|Cadt1.score=Cadt2.score|Cadt2.scor
12、e=Cadt0.score) printf("please vote againe.n"); else if(Cadt0.score<Cadt1.score) C=C; if(Cadt0.score<Cadt2.score) C=C; printf("祝賀%c當(dāng)選冠軍 !n",C);int main()int ID,ture=0; printf("n*此程序?yàn)樽闱蛳壬镀背绦?n"); while(1) printf("請(qǐng)選
13、擇是否繼續(xù):1為繼續(xù),2為退出;n "); scanf("%d",&ID); getchar(); switch(ID) case 1: football();break; case 2: thanks();break; default : ture=1;break; if(ture!=1) printf("*謝謝您的參與*n"); printf("n"); if(ture) break; getchar(); printf("n請(qǐng)按任何鍵繼續(xù).n"); getchar(); return 0;修
14、改后程序運(yùn)行情況:圖75圖76【修改后的程序優(yōu)點(diǎn)】 程序被修改后更好地實(shí)現(xiàn)了模塊化:(1) 主函數(shù)顯示是否繼續(xù)進(jìn)行投票輸入1或2,判斷是不是1或2根據(jù)是1或2調(diào)用各功能函數(shù)圖77(2) thanks函數(shù)選2,進(jìn)入thanks輸出“thank you”圖78(3)football函數(shù)請(qǐng)問共有多少人進(jìn)行投票輸入投票人數(shù)選1,開始輸入投票結(jié)果同一張票上存在相同代號(hào)統(tǒng)計(jì)票數(shù)顯示“此票無效”存在相同票數(shù)?輸出“祝賀X當(dāng)選冠軍”圖79 【心得與體會(huì)】c語言作為一種計(jì)算機(jī)的語言,我們學(xué)習(xí)它,有助于我們更好的了解計(jì)算機(jī),與計(jì)算機(jī)進(jìn)行交流,因此,c語言的學(xué)習(xí)對(duì)我們尤其重要,于是學(xué)校組織我們進(jìn)行了為期八天的實(shí)習(xí)。
15、 在這八天里,我們?cè)诶蠋煹膸ьI(lǐng)下進(jìn)行了暑期c語言程序?qū)嵺`學(xué)習(xí)。在這之前,我們已經(jīng)對(duì)c語言這門課程學(xué)習(xí)了一個(gè)學(xué)期,對(duì)其有了一定的了解,但是也僅僅是停留在了解的范圍,對(duì)里面的好多東西還是很陌生,更多的在運(yùn)用起來的時(shí)候還是感到很棘手,畢竟,萬事開頭難嘛。實(shí)習(xí)前兩天由于對(duì)所學(xué)的知識(shí)忘記了不少,編的程序中有很多錯(cuò)誤,而且很多找不出原因所在,也就是說完成程序的編寫,并不意味著萬事大吉。原本認(rèn)為萬無一失的程序,實(shí)際上機(jī)運(yùn)行時(shí)卻不斷出現(xiàn)麻煩。如編譯程序檢測出一大堆錯(cuò)誤。有時(shí)程序本身不存在語法錯(cuò)誤,也能夠順利運(yùn)行,但是運(yùn)行結(jié)果顯然是錯(cuò)誤的。經(jīng)過幾天對(duì)書上知識(shí)如:數(shù)組、結(jié)構(gòu)體數(shù)
16、組、循環(huán)語句(forwhile)、if語句等的復(fù)習(xí)以及老師的耐心輔導(dǎo),不僅重拾以前所學(xué)知識(shí)而且對(duì)c語言有了更深層次的理解。當(dāng)看到自己設(shè)計(jì)出來的程序運(yùn)行成功時(shí),感覺很欣慰的同時(shí)更痛下決心,以后一定要多看c語言源程序。特別時(shí)要注意程序中的算法與數(shù)據(jù)結(jié)構(gòu),畢竟學(xué)c的關(guān)口就是算法和數(shù)據(jù)結(jié)構(gòu)。別的方面也要關(guān)注一下,諸如變量的命名、庫函數(shù)的用法、結(jié)構(gòu)體的定義等等。有些庫函數(shù)是經(jīng)常用到的。對(duì)于這些庫函數(shù)的用法一定要牢牢記住。只是看是不行的,編程序是個(gè)實(shí)干的活。一個(gè)c語言程序從編輯、編譯、連接到運(yùn)行,光說不練不行。剛開始學(xué)的時(shí)候可以多練習(xí)書上的習(xí)題。對(duì)于自己不明白的地方,自己編個(gè)小程序?qū)嶒?yàn)一下是最好的方法,能
17、給自己留下深刻的印象。自己動(dòng)手的過程中要不斷糾正自己不好的編程習(xí)慣和認(rèn)識(shí)錯(cuò)誤。有一定的基礎(chǔ)以后可以嘗試編一些經(jīng)典的案例程序。 由于時(shí)間的關(guān)系,我們的這次實(shí)踐課程老師并沒有給我們?cè)敿?xì)的介紹,只是給我們簡單的介紹了幾個(gè)比較重要的實(shí)際操作。包括了程序模塊處理、程序的添加修改、程序錯(cuò)誤檢查中用到的屏蔽操作、程序的調(diào)試等基本操作,更多的還是要靠自己努力。 上機(jī)實(shí)驗(yàn)是學(xué)習(xí)程序設(shè)計(jì)語言必不可少的實(shí)踐環(huán)節(jié),特別是c語言靈活、簡潔,更需要通過編程的實(shí)踐來真正掌握它。對(duì)于程序設(shè)計(jì)語言的學(xué)習(xí),可以概括為學(xué)習(xí)語法規(guī)定、掌握程序設(shè)計(jì)方法、提高程序處理能力,而這些都必須通過充分的實(shí)際上機(jī)操作才能完成。通過多次上機(jī)練習(xí),我對(duì)于語法知識(shí)有了感性的認(rèn)識(shí),加深了對(duì)它的理解,在理解的基礎(chǔ)上就會(huì)自然而然地掌握c語言的語法規(guī)定。對(duì)于一些內(nèi)容自己認(rèn)為在課堂上聽懂了,但上機(jī)實(shí)踐中會(huì)發(fā)現(xiàn)原來理解的偏差。所以學(xué)習(xí)c語言不能只停留在學(xué)習(xí)它的語法規(guī)則,而是利用學(xué)到的知識(shí)編寫c語言程序,解決實(shí)際問題。即把c語言作為工具,描述解決實(shí)際問題
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025江蘇省建筑安全員B證考試題庫附答案
- 貴州財(cái)經(jīng)職業(yè)學(xué)院《生殖醫(yī)學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴陽職業(yè)技術(shù)學(xué)院《編排與版式》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年貴州建筑安全員《A證》考試題庫及答案
- 2025年陜西建筑安全員《B證》考試題庫
- 2025年天津建筑安全員《B證》考試題庫
- 廣州中醫(yī)藥大學(xué)《管理溝通雙語》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025江蘇省安全員《B證》考試題庫
- 廣州醫(yī)科大學(xué)《機(jī)械制造技術(shù)課程設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025貴州建筑安全員-B證考試題庫附答案
- 民用無人駕駛航空器產(chǎn)品標(biāo)識(shí)要求
- 中國音樂史與名作賞析智慧樹知到期末考試答案章節(jié)答案2024年山東師范大學(xué)
- 中鐵集團(tuán)會(huì)計(jì)核算手冊(cè)
- 傷口護(hù)理小組工作總結(jié)共34張課件
- 小學(xué)科學(xué)教育科學(xué)四年級(jí)上冊(cè)運(yùn)動(dòng)和力《運(yùn)動(dòng)與摩擦力》說課稿修
- 區(qū)域地質(zhì)及礦區(qū)地質(zhì)圖清繪規(guī)程
- 10套深藍(lán)色商務(wù)醫(yī)院科室組織架構(gòu)PPT圖表合集
- DB44∕T 1784-2015 木本園林植物修剪技術(shù)規(guī)程
- 青年心理學(xué)第六講(人際關(guān)系與溝通)
- 核醫(yī)學(xué)科PDCA案例
- ABB斷路器參數(shù)調(diào)試講義
評(píng)論
0/150
提交評(píng)論