C語(yǔ)言課程設(shè)計(jì)投票程序系統(tǒng)設(shè)計(jì)_第1頁(yè)
C語(yǔ)言課程設(shè)計(jì)投票程序系統(tǒng)設(shè)計(jì)_第2頁(yè)
C語(yǔ)言課程設(shè)計(jì)投票程序系統(tǒng)設(shè)計(jì)_第3頁(yè)
C語(yǔ)言課程設(shè)計(jì)投票程序系統(tǒng)設(shè)計(jì)_第4頁(yè)
C語(yǔ)言課程設(shè)計(jì)投票程序系統(tǒng)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、目 錄課程設(shè)計(jì)評(píng)語(yǔ)2目 錄31課程論文題目42程序設(shè)計(jì)思路43功能模塊圖54數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)55算法設(shè)計(jì)66程序代碼137程序運(yùn)行結(jié)果228編程中遇到的困難及解決方法259總結(jié)心得及良好建議2610致謝261課程論文題目投票程序要求設(shè)有代號(hào)為a,b,c的三個(gè)足球先生候選人,根據(jù)投票者在選票上對(duì)他們編號(hào)的填寫順序分別記分5,3,2。請(qǐng)編程從鍵盤上輸入投票人數(shù)及投票結(jié)果,統(tǒng)計(jì)他們的得分,并輸出哪位當(dāng)選足球先生。注意:若同一張票上寫有兩個(gè)相同的代號(hào),則顯示“此票無(wú)效”,若最終前兩名得分相同應(yīng)顯示“重新投票”,否則顯示三位候選人得分并輸入“祝賀x當(dāng)選冠軍”。例如:投票人數(shù):5請(qǐng)參加投票的人開始投票:abc

2、cabcaa 此票無(wú)效cbabca三位候選人得分: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)一張投票,列方向?qū)?yīng)各候選人得分。2程序設(shè)計(jì)思路根據(jù)題目要求,首先要輸入投票者人數(shù),再輸入投票者的選票,而選票不是都有效,若同一張票上寫有兩個(gè)相同的代號(hào),則此票無(wú)效,所以要將有效的選票選出來(lái),然后對(duì)選票進(jìn)行統(tǒng)計(jì)得分,最終來(lái)比較得分,若有得分相同,則重新來(lái)選,最后得分最多的獲勝,最終成為足球先生。但是此程序還不夠完善,可以增加以下程序,增強(qiáng)其功能:1.記錄廢票數(shù)目,以便廢票太多,影響選舉公正。2.若出現(xiàn)a,b,c以外的投票,應(yīng)當(dāng)

3、將該票記為無(wú)效。3.若出現(xiàn)最終前兩名得分相同,應(yīng)該還可以運(yùn)行程序,使其重新投票,重新計(jì)票,直至最后選出足球先生。3功能模塊圖足球先生評(píng)選程序輸入選票信息輸出結(jié)果統(tǒng)計(jì)選票輸入選票信息:輸入對(duì)足球先生候選人的選票輸出結(jié)果:輸出最后足球先生的獲得者統(tǒng)計(jì)選票:對(duì)選票進(jìn)行統(tǒng)計(jì)4數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)要輸入投票人數(shù),將其定義為re,選票信息可以用一個(gè)p1003的數(shù)組來(lái)存放,re來(lái)控制投票信息數(shù)組的行數(shù)。最開始定義一個(gè)全局變量m=3,來(lái)表示候選者人數(shù)。這樣來(lái)控制數(shù)列數(shù),達(dá)到控制輸入的目的。每輸入一行,就開始判斷是否一張票上寫有兩個(gè)相同代號(hào),或者是出現(xiàn)a,b,c以外的投票結(jié)果,如果出現(xiàn)這種情況,就將票作廢,并記錄作廢票

4、數(shù)。定義變量v記錄作廢票數(shù)。判斷完畢后,若出現(xiàn)廢票,就將其中的票府賦值為0。返回投票人數(shù)re,留到后續(xù)函數(shù)使用。5算法設(shè)計(jì)1、 主函數(shù):主函數(shù)只提供輸入、處理和輸出部分函數(shù)調(diào)用:【程序】#include#includeint start(char p3); /*輸入函數(shù)*/void count(int a,char p3,int pp); /*統(tǒng)計(jì)函數(shù)*/int result(int a,int b,int c); /*輸出函數(shù)*/int m; /*全局變量 */void main() /*主函數(shù)*/ int a; m=3; int pp3=0,0,0; do char p1003=0; /*

5、p1003賦初值,清空*/ a=start(p); count(a,p,pp); /*計(jì)算得分*/ while(result(pp0,pp1,pp2);/*若m=2循環(huán),直至選出足球先生*/2、 各功能模塊設(shè)計(jì)(1) 輸入模塊【分析】要輸入投票人數(shù),將其定義為re,選票信息可以用一個(gè)p1003的數(shù)組來(lái)存放,re來(lái)控制投票信息數(shù)組的行數(shù)。最開始定義一個(gè)全局變量m=3,來(lái)表示候選者人數(shù)。這樣來(lái)控制數(shù)列數(shù),達(dá)到控制輸入的目的。每輸入一行,就開始判斷是否一張票上寫有兩個(gè)相同代號(hào),或者是出現(xiàn)a,b,c以外的投票結(jié)果,如果出現(xiàn)這種情況,就將票作廢,并記錄作廢票數(shù)。定義變量v記錄作廢票數(shù)。判斷完畢后,若出現(xiàn)

6、廢票,就將其中的票府賦值為0。返回投票人數(shù)re,留到后續(xù)函數(shù)使用。【程序】 int start(char p3) int re,i,j,v=0; printf(請(qǐng)輸入投票人數(shù)n); scanf(%d,&re); /*a為投票人數(shù)*/ printf(請(qǐng)參加投票的人開始投票n); getchar(); /*輸入時(shí)以回車結(jié)束*/ for(i=0;ire;i+) int flag=0; for(j=0;jm;j+) scanf(%c,&pij); getchar(); /*輸入選舉投票*/ if(pi0=pi1|pi1=pi2|pi0=pi2) flag=1; /*判斷一張票上是否寫有兩個(gè)相同代號(hào)*/

7、 for(j=0;jm;j+) if(pij!=a&pij!=b&pij!=c) flag=1; /*判斷是否有a,b,c以外的字母*/ if(flag) printf(此票無(wú)效n); v+; for(j=0;jm;j+) pij=0; /*若有以上情況,顯示此票無(wú)效,忽略此票,并記錄廢票數(shù)*/ printf(作廢票數(shù)是%d票n,v); return re;(2) 統(tǒng)計(jì)模塊【分析】功能上要求分別統(tǒng)計(jì)a,b,c三個(gè)人的得分,因而用x,y,z來(lái)存放,每一票中分別統(tǒng)計(jì)得分,根據(jù)投票者在選票上對(duì)他們編號(hào)的填寫順序分別記分5,3,2,將如果出現(xiàn)廢票,直接跳過(guò)不計(jì),將最后結(jié)果分別放入x,y,z.。引用主函

8、數(shù)中的數(shù)組pp3,將統(tǒng)計(jì)的x,y,z分別賦值到pp0,pp1,pp2中,這樣就可以帶回主函數(shù)中?!境绦颉縱oid count(int a,char p3,int pp) int b=a,i; int x=0,y=0,z=0;/*a,b,c分別代表三個(gè)候選人 x y z分別是他們的得分*/ for(i=0;ia;i+) if(pi0=a) x+=5; else if(pi1=a) x+=3; else if(pi2=a) x+=2; if(pi0=b) y+=5; else if(pi1=b) y+=3; else if(pi2=b) y+=2; if(pi0=c) z+=5; else if(

9、pi1=c) z+=3; else if(pi2=c) z+=2; if(pi0=0) continue; pp0=x; pp1=y; pp2=z;(3)輸出模塊【分析】功能上要求比較三位候選人的最后得分,三人得分分別為x,y,z。定義max,將最高分賦值到max中。只有一位最高分時(shí),輸出三位候選人得分,顯示“祝賀某人當(dāng)選冠軍”。 如果有兩位最高分,則顯示“請(qǐng)重新投票”,接著,令m=2,改變?nèi)肿兞?,只剩下兩位候選者,顯示三位候選人得分,重新投票統(tǒng)計(jì)。如果兩位候選人分?jǐn)?shù)還相同,則再次循環(huán),若不同,則顯示兩人得分,并顯示“祝賀某人當(dāng)選冠軍”。【程序】int result(int a,int b,

10、int c) int x,y,z,max=0,s=0,l=0; char k; x=a;y=b;z=c; max=x; k=a; if(maxy) max=y; k=b; if(max0) printf(a:%dn,x); if(y0) printf(b:%dn,y); if(z0) printf(c:%dn,z); if(!l) printf(祝賀%c當(dāng)選冠軍n,k); /*輸出最后結(jié)果*/ return l;如果l返回主程序,若l為真值,則代表最后兩位候選人分?jǐn)?shù)還相同,主程序的do,while循環(huán),可以再次統(tǒng)計(jì)票數(shù),再次比較得分,直到選出最后的足球先生。6程序代碼#include#incl

11、udeint start(char p3);void count(int a,char p3,int pp);int result(int a,int b,int c);int m;void main() int a; m=3; int pp3=0,0,0; do char p1003=0; /*p1003賦初值,清空*/ a=start(p); count(a,p,pp); /*計(jì)算得分*/ while(result(pp0,pp1,pp2);int start(char p3) int re,i,j,v=0; printf(請(qǐng)輸入投票人數(shù)n); scanf(%d,&re); /*a為投票人

12、數(shù)*/ printf(請(qǐng)參加投票的人開始投票n); getchar(); /*輸入時(shí)以回車結(jié)束*/ for(i=0;ire;i+) int flag=0; for(j=0;jm;j+) scanf(%c,&pij); getchar(); /*輸入選舉投票*/ if(pi0=pi1|pi1=pi2|pi0=pi2) flag=1; /*判斷一張票上是否寫有兩個(gè)相同代號(hào)*/ for(j=0;jm;j+) if(pij!=a&pij!=b&pij!=c) flag=1; /*判斷是否有a,b,c以外的字母*/ if(flag) printf(此票無(wú)效n); v+; for(j=0;jm;j+) p

13、ij=0; /*若有以上情況,顯示“此票無(wú)效”,忽略此票,并記錄廢票數(shù)*/ printf(作廢票數(shù)是%d票n,v); return re;void count(int a,char p3,int pp) int b=a,i; int x=0,y=0,z=0; /*a,b,c分別代表三個(gè)候選人 x y z分別是他們的得分*/ for(i=0;ia;i+) if(pi0=a) x+=5; else if(pi1=a) x+=3; else if(pi2=a) x+=2; if(pi0=b) y+=5; else if(pi1=b) y+=3; else if(pi2=b) y+=2; if(pi0

14、=c) z+=5; else if(pi1=c) z+=3; else if(pi2=c) z+=2; if(pi0=0) continue; pp0=x; pp1=y; pp2=z; int result(int a,int b,int c) int x,y,z,max=0,s=0,l=0; char k; x=a;y=b;z=c; max=x; k=a; if(maxy) max=y; k=b; if(max0) printf(a:%dn,x); if(y0) printf(b:%dn,y); if(z0) printf(c:%dn,z); if(!l) printf(祝賀%c當(dāng)選冠軍n,

15、k); /*輸出最后結(jié)果*/ return l;7程序運(yùn)行結(jié)果1、主函數(shù)運(yùn)行,輸入選票信息3、 統(tǒng)計(jì)選票,輸出結(jié)果8編程中遇到的困難及解決方法在編程的過(guò)程中,很容易出現(xiàn)一個(gè)問(wèn)題,就時(shí)少大括號(hào)“”的問(wèn)題。這是,error只有一個(gè),但是錯(cuò)誤的地方很多,且都在括號(hào)處。按照計(jì)算機(jī)所指出的錯(cuò)誤位置尋找是不容易找出錯(cuò)誤的。直到整個(gè)程序看了一遍后才會(huì)發(fā)現(xiàn)是一個(gè)大括號(hào)的問(wèn)題。通常少的是“”或者“”,錯(cuò)誤位置會(huì)出現(xiàn)在缺少括號(hào)位置之后的其他大括號(hào)出現(xiàn)的地方。只要這種情況發(fā)生后,往前找是否有大括號(hào)缺失就可以將問(wèn)題很快解決了。在幫同學(xué)修改程序的過(guò)程中,也遇到過(guò)一個(gè)問(wèn)題。在頭文件后定義了子函數(shù),可是之后忘了編寫子函數(shù),

16、在糾錯(cuò)時(shí),有的是不會(huì)發(fā)現(xiàn)錯(cuò)誤的,但是連接過(guò)程中就會(huì)報(bào)告出錯(cuò)。我覺(jué)得在以后的編程過(guò)程中,最好用什么函數(shù)寫什么函數(shù),后者在寫完一個(gè)子函數(shù)后再在頭文件底下聲明。9總結(jié)心得及良好建議此次實(shí)習(xí)為期一周,我學(xué)到了很多,也知道了很多的不足。通過(guò)老師的精心指導(dǎo)帶領(lǐng)下,我不僅獲得了很多新知識(shí),還好好復(fù)習(xí)了一下以前學(xué)的知識(shí)。在這之前,我們已經(jīng)對(duì)c語(yǔ)言這門課程學(xué)習(xí)了一個(gè)學(xué)期,對(duì)其有了一定的了解,但是也僅僅是停留在學(xué)習(xí)了解的范圍,對(duì)里面的好多東西還是很陌生,并不是很熟練,有著許多欠缺,更多的在運(yùn)用起來(lái)的時(shí)候還是感到很不好動(dòng)手。c語(yǔ)言課堂上許多關(guān)于c語(yǔ)言的語(yǔ)法規(guī)則,聽起來(lái)十分枯燥無(wú)味,也不容易記住,死記硬背是不可取的。

17、然而要使用c語(yǔ)言這個(gè)工具解決實(shí)際問(wèn)題,又必須掌握它。通過(guò)多次上機(jī)練習(xí),對(duì)于語(yǔ)法知識(shí)有了感性的認(rèn)識(shí),加深對(duì)它的理解,在理解的基礎(chǔ)上就會(huì)自然而然地掌握c語(yǔ)言的語(yǔ)法規(guī)定。對(duì)于一些內(nèi)容自己認(rèn)為在課堂上聽懂了,但上機(jī)實(shí)踐中會(huì)發(fā)現(xiàn)原來(lái)理解的偏差,更加鞏固了學(xué)過(guò)的知識(shí),而且在設(shè)計(jì)的時(shí)候?qū)W要系統(tǒng)的知識(shí),也是一個(gè)較大的挑戰(zhàn),某一方面知識(shí)的欠缺都將影響到整個(gè)程序的設(shè)計(jì)。我所編的雖然只是一個(gè)小程序,但是每一步的編的過(guò)程,讓我懂得很多。重溫一下c語(yǔ)言,因?yàn)檫^(guò)了計(jì)算機(jī)二級(jí),因而編程比較容易懂,但是通過(guò)練習(xí),發(fā)現(xiàn)理論與實(shí)際的差距。編程從一開始全部編到一個(gè)main函數(shù)中到,最后逐個(gè)分塊,到添加功能,一點(diǎn)一點(diǎn)的進(jìn)步讓我很欣喜,對(duì)編程的興趣也更加濃厚。此次實(shí)習(xí),不僅學(xué)到了有關(guān)c語(yǔ)言的知識(shí),還學(xué)到了一些有

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論