




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、目 錄課程設(shè)計評語2目 錄31課程論文題目42程序設(shè)計思路43功能模塊圖54數(shù)據(jù)結(jié)構(gòu)設(shè)計55算法設(shè)計66程序代碼137程序運行結(jié)果228編程中遇到的困難及解決方法259總結(jié)心得及良好建議2610致謝261課程論文題目投票程序要求設(shè)有代號為a,b,c的三個足球先生候選人,根據(jù)投票者在選票上對他們編號的填寫順序分別記分5,3,2。請編程從鍵盤上輸入投票人數(shù)及投票結(jié)果,統(tǒng)計他們的得分,并輸出哪位當(dāng)選足球先生。注意:若同一張票上寫有兩個相同的代號,則顯示“此票無效”,若最終前兩名得分相同應(yīng)顯示“重新投票”,否則顯示三位候選人得分并輸入“祝賀x當(dāng)選冠軍”。例如:投票人數(shù):5請參加投票的人開始投票:abc
2、cabcaa 此票無效cbabca三位候選人得分:a:12b:13c:15祝賀c當(dāng)選冠軍 提示數(shù)據(jù)結(jié)構(gòu)可用結(jié)構(gòu)體數(shù)組,結(jié)構(gòu)體成員包括代號、得分?;蛘卟捎枚S數(shù)組,行方向?qū)?yīng)一張投票,列方向?qū)?yīng)各候選人得分。2程序設(shè)計思路根據(jù)題目要求,首先要輸入投票者人數(shù),再輸入投票者的選票,而選票不是都有效,若同一張票上寫有兩個相同的代號,則此票無效,所以要將有效的選票選出來,然后對選票進(jìn)行統(tǒng)計得分,最終來比較得分,若有得分相同,則重新來選,最后得分最多的獲勝,最終成為足球先生。 但是此程序還不夠完善,可以增加以下程序,增強(qiáng)其功能:1.記錄廢票數(shù)目,以便廢票太多,影響選舉公正。2.若出現(xiàn)a
3、,b,c以外的投票,應(yīng)當(dāng)將該票記為無效。3.若出現(xiàn)最終前兩名得分相同,應(yīng)該還可以運行程序,使其重新投票,重新計票,直至最后選出足球先生。3功能模塊圖足球先生評選程序輸入選票信息輸出結(jié)果統(tǒng)計選票輸入選票信息:輸入對足球先生候選人的選票輸出結(jié)果:輸出最后足球先生的獲得者統(tǒng)計選票:對選票進(jìn)行統(tǒng)計4數(shù)據(jù)結(jié)構(gòu)設(shè)計要輸入投票人數(shù),將其定義為re,選票信息可以用一個p1003的數(shù)組來存放,re來控制投票信息數(shù)組的行數(shù)。最開始定義一個全局變量m=3,來表示候選者人數(shù)。這樣來控制數(shù)列數(shù),達(dá)到控制輸入的目的。每輸入一行,就開始判斷是否一張票上寫有兩個相同代號,或者是出現(xiàn)a,b,c以外的投票結(jié)果,如果出現(xiàn)這種情況,
4、就將票作廢,并記錄作廢票數(shù)。定義變量v記錄作廢票數(shù)。判斷完畢后,若出現(xiàn)廢票,就將其中的票府賦值為0。返回投票人數(shù)re,留到后續(xù)函數(shù)使用。5算法設(shè)計1、 主函數(shù):主函數(shù)只提供輸入、處理和輸出部分函數(shù)調(diào)用:【程序】#include<stdio.h>#include<math.h>int start(char p3); /*輸入函數(shù)*/void count(int a,char p3,i
5、nt pp); /*統(tǒng)計函數(shù)*/int result(int a,int b,int c); /*輸出函數(shù)*/int m; /*全局變量 */void main()
6、160; /*主函數(shù)*/ int a; m=3; int pp3=0,0,0; do
7、160; char p1003=0; /*p1003賦初值,清空*/ a=start(p); count(a,p,pp);
8、0; /*計算得分*/ while(result(pp0,pp1,pp2);/*若m=2循環(huán),直至選出足球先生*/2、 各功能模塊設(shè)計(1) 輸入模塊【分析】要輸入投票人數(shù),將其定義為re,選票信息可以用一個p1003的數(shù)組
9、來存放,re來控制投票信息數(shù)組的行數(shù)。最開始定義一個全局變量m=3,來表示候選者人數(shù)。這樣來控制數(shù)列數(shù),達(dá)到控制輸入的目的。每輸入一行,就開始判斷是否一張票上寫有兩個相同代號,或者是出現(xiàn)a,b,c以外的投票結(jié)果,如果出現(xiàn)這種情況,就將票作廢,并記錄作廢票數(shù)。定義變量v記錄作廢票數(shù)。判斷完畢后,若出現(xiàn)廢票,就將其中的票府賦值為0。返回投票人數(shù)re,留到后續(xù)函數(shù)使用。 【程序】 int start(char p3)
10、60; int re,i,j,v=0; printf("請輸入投票人數(shù)n"); scanf("%d",&re); /*a為投票人數(shù)*/
11、0; printf("請參加投票的人開始投票n"); getchar(); /*輸入時以回車結(jié)束*/ for(i=0;i<re;i+)
12、160; int flag=0; for(j=0;j<m;j+) scanf("%c",&pij);
13、60; getchar(); /*輸入選舉投票*/ if(pi0=pi1|pi1=pi2|pi0=pi2) flag=1; /*判斷一張票上是否寫有兩個相同代號*/ f
14、or(j=0;j<m;j+) if(pij!='a'&&pij!='b'&&pij!='c') flag=1; /*判斷是否有a,b,c以外的字母*/
15、 if(flag) printf("此票無效n"); v+;
16、 for(j=0;j<m;j+) pij=0; /*若有以上情況,顯示"此票無效",忽略此票,并記錄廢票數(shù)*/
17、60; printf("作廢票數(shù)是%d票n",v); return re; (2) 統(tǒng)計模塊【分析】功能上要求分別統(tǒng)計a,b,c三個人的得分,因而用x,y,z來存放,每一票中分別統(tǒng)計得分,根據(jù)投票者在選票上對他們編號的填寫順序分別記分5,3,2,將如果出
18、現(xiàn)廢票,直接跳過不計,將最后結(jié)果分別放入x,y,z.。引用主函數(shù)中的數(shù)組pp3,將統(tǒng)計的x,y,z分別賦值到pp0,pp1,pp2中,這樣就可以帶回主函數(shù)中。 【程序】 void count(int a,char p3,int pp) int b=a,i; int x=0,y=0,z=0;/*'a','b','c'分別代表三個候選人 x y z分
19、別是他們的得分*/ for(i=0;i<a;i+) if(pi0='a') x+=5; &
20、#160; else if(pi1='a') x+=3; else if(pi2='a')
21、60; x+=2; if(pi0='b') y+=5; else if(pi1='b')
22、 y+=3; else if(pi2='b') y+=2;
23、; if(pi0='c') z+=5; else if(pi1='c') z+=3;
24、 else if(pi2='c') z+=2; if
25、(pi0='0') continue; pp0=x;
26、; pp1=y; pp2=z; (3)輸出模塊【分析】功能上要求比較三位候選人的最后得分,三人得分分別為x,y,z。定義max,將最高分賦值到max中。只有一位最高分時,輸出三位候選人得分,顯示“祝賀某人當(dāng)選冠軍”。 如果有兩位最
27、高分,則顯示“請重新投票”,接著,令m=2,改變?nèi)肿兞?,只剩下兩位候選者,顯示三位候選人得分,重新投票統(tǒng)計。如果兩位候選人分?jǐn)?shù)還相同,則再次循環(huán),若不同,則顯示兩人得分,并顯示“祝賀某人當(dāng)選冠軍”。 【程序】 int result(int a,int b,int c) int x,y,z,max=0,s=0,l=0; char k;
28、160; x=a;y=b;z=c; max=x; k='a' if(max<y)
29、 max=y; k='b'
30、 if(max<z) max=z; k='c'
31、 if(max=x&&max=y|max=x&&max=z|max=y&&max=z) &
32、#160; printf("請重新投票n"); /*若最高票數(shù)有兩人相同,提示重新投票*/ l=1;
33、0; if(m=3) printf("三位候選人得分:n"); else printf("
34、兩位候選人得分:n"); if(l) m=2;
35、160; if(x>0) printf("a:%dn",x); if(y>0)
36、; printf("b:%dn",y); if(z>0) &
37、#160; printf("c:%dn",z); if(!l) printf("祝賀%c當(dāng)選冠軍n",k);
38、60; /*輸出最后結(jié)果*/ return l; 如果l返回主程序,若l為真值,則代表最后兩位候選人分?jǐn)?shù)還相同,主程序的do,while循環(huán),可以再次統(tǒng)計票數(shù),再次比較
39、得分,直到選出最后的足球先生。6程序代碼#include<stdio.h>#include<math.h> int 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;
40、160; int pp3=0,0,0; do char p1003=0; /*p1003賦初值,清空*/
41、 a=start(p); count(a,p,pp); /*計算得分*/ while(res
42、ult(pp0,pp1,pp2); int start(char p3) int re,i,j,v=0; printf("請輸入投票人數(shù)n");
43、 scanf("%d",&re); /*a為投票人數(shù)*/ printf("請參加投票的人開始投票n"); getchar(); /
44、*輸入時以回車結(jié)束*/ for(i=0;i<re;i+) int flag=0; for(j=0;j<m;j+)
45、 scanf("%c",&pij); getchar(); /*輸入選舉投票*/
46、 if(pi0=pi1|pi1=pi2|pi0=pi2) flag=1; /*判斷一張票上是否寫有兩個相同代號*/ for(j=0;j<m;j+) &
47、#160; if(pij!='a'&&pij!='b'&&pij!='c') flag=1;
48、0; /*判斷是否有a,b,c以外的字母*/ if(flag)
49、160; printf("此票無效n"); v+; for(j=0;j<m;j+) &
50、#160; pij=0; /*若有以上情況,顯示“此票無效”,忽略此票,并記錄廢票數(shù)*/
51、160; printf("作廢票數(shù)是%d票n",v); return re; void count(int a,char
52、p3,int pp) int b=a,i; int x=0,y=0,z=0; /*'a','b','c'分別代表三個候選人 x y z分別是他們的得分*/ for(i=0;i<a;i+)
53、160; if(pi0='a') x+=5; else if(pi1='a') &
54、#160; x+=3; else if(pi2='a') x+=2; if(p
55、i0='b') y+=5; else if(pi1='b') y+=3;
56、160; else if(pi2='b') y+=2; if(pi0='c') z+=
57、5; else if(pi1='c') z+=3; else if(pi2='c&
58、#39;) z+=2; if(pi0='0')
59、60; continue; pp0=x;
60、 pp1=y; pp2=z; int result(int a,int b,int c) int x,y,z,max=0,s=0,l=0; char k;
61、 x=a;y=b;z=c; max=x; k='a' if(max<y)
62、 max=y; k='b'
63、 if(max<z) max=z;
64、; k='c' if(max=x&&max=y|max=x&&max=z|max=y&&max=z) &
65、#160; printf("請重新投票n"); /*若最高票數(shù)有兩人相同,提示重新投票*/
66、60; l=1; if(m=3)
67、; printf("三位候選人得分:n"); else p
68、rintf("兩位候選人得分:n"); if(l) m=2;
69、160; if(x>0) printf("a:%dn",x);
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 煤礦架棚工技能理論考試題庫150題(含答案)
- 社交電商在移動互聯(lián)時代的應(yīng)用
- 購貨合同范本石材
- 法律框架下的知識共享商業(yè)領(lǐng)域的機(jī)遇與挑戰(zhàn)
- 2025至2030年中國船閘啟閉機(jī)加工件數(shù)據(jù)監(jiān)測研究報告
- 分期車輛協(xié)議合同范本
- 二零二五年三方共建安全生產(chǎn)管理體系合同
- 2025年度終止勞動合同協(xié)議書:CC企業(yè)員工DD合同終止及競業(yè)禁止協(xié)議
- 2025年度汽車貸款擔(dān)保機(jī)構(gòu)合作協(xié)議
- 二零二五年度物業(yè)管理費收費合同
- 2025年佳木斯職業(yè)學(xué)院單招職業(yè)傾向性測試題庫完整
- 儲能站施工組織設(shè)計施工技術(shù)方案(技術(shù)標(biāo))
- 醫(yī)學(xué)影像檢查技術(shù)復(fù)習(xí)題(含參考答案)
- 2025年湖北省技能高考(建筑技術(shù)類)《建筑構(gòu)造》模擬練習(xí)試題庫(含答案)
- 撤銷失信名單申請書
- 2025年度養(yǎng)老服務(wù)機(jī)構(gòu)場地租賃合同及養(yǎng)老服務(wù)協(xié)議
- 貴州省情知識考試題庫500題(含答案)
- 大學(xué)生家長陪讀承諾書
- 安全生產(chǎn)事故調(diào)查與案例分析(第3版)課件 呂淑然 第5章 事故案例評析
- 2024年泰州職業(yè)技術(shù)學(xué)院高職單招數(shù)學(xué)歷年參考題庫含答案解析
- 勞動法培訓(xùn)課件
評論
0/150
提交評論