c語言課程設計投票程序系統(tǒng)設計_第1頁
c語言課程設計投票程序系統(tǒng)設計_第2頁
c語言課程設計投票程序系統(tǒng)設計_第3頁
c語言課程設計投票程序系統(tǒng)設計_第4頁
c語言課程設計投票程序系統(tǒng)設計_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、中國地質(zhì)大學本科生課程論文封面課 程 名 稱 C 語言課程設計 教 師 姓 名邵老師本科生姓名常堃本科生學號 079 本科生專業(yè) 應用化學 所 在 院 系材化學院類別 : C.本科生日期: 2011 年 7 月 6 日課程設計評語對課程論文的評語平時成績:課程論文成績:總 成 績:評閱人簽名:注: 1、無評閱人簽名成績無效;2、必須用鋼筆或圓珠筆批閱,用鉛筆閱卷無效;3、如有平時成績,必須在上面評分表中標出,并計算入總成績。目錄課程設計評語 錯誤 !未定義書簽。目 錄 錯誤 ! 未定義書簽。1課程論文題目 錯誤 !未定義書簽。2程序設計思路 錯誤 !未定義書簽。3功能模塊圖 錯誤 !未定義書簽

2、。4數(shù)據(jù)結構設計 錯誤 !未定義書簽。5算法設計 錯誤 !未定義書簽。6程序代碼 錯誤 !未定義書簽。7程序運行結果 錯誤 !未定義書簽。8編程中遇到的困難及解決方法 錯誤 ! 未定義書簽。9總結心得及良好建議 錯誤 ! 未定義書簽。10致謝 錯誤 ! 未定義書簽。1課程論文題目投票程序 要求 設有代號為 a', b', c'的三個足球先生候選人, 根據(jù)投票者在選票上對他們編號的填寫順序分 別記分 5,3,2。請編程從鍵盤上輸入投票人數(shù)及投票結果,統(tǒng)計他們的得分,并輸出哪位當選足球先生。注意:若同一張票上寫有兩個相同的代號,則顯示“此票無效”,若最終前兩名得分相同應顯示

3、“重新 投票”,否則顯示三位候選人得分并輸入“祝賀X 當選冠軍”。例如:投票人數(shù): 5請參加投票的人開始投票:abccabcaa 此票無效cbabca三位候選人得分:a:12b:13c:15祝賀 c 當選冠軍 提示 數(shù)據(jù)結構可用結構體數(shù)組,結構體成員包括代號、得分?;蛘卟捎枚S數(shù)組,行方向?qū)?應一張投票,列方向?qū)骱蜻x人得分。2程序設計思路根據(jù)題目要求,首先要輸入投票者人數(shù),再輸入投票者的選票,而選票不是都有效,若 同一張票上寫有兩個相同的代號,則此票無效,所以要將有效的選票選出來,然后對選票進 行統(tǒng)計得分,最終來比較得分,若有得分相同,則重新來選,最后得分最多的獲勝,最終成 為足球先生。但

4、是此程序還不夠完善,可以增加以下程序,增強其功能:1. 記錄廢票數(shù)目,以便廢票太多,影響選舉公正。2. 若出現(xiàn) a,b,c 以外的投票,應當將該票記為無效。3. 若出現(xiàn)最終前兩名得分相同,應該還可以運行程序,使其重新投票,重新計票,直至 最后選出足球先生。3功能模塊圖輸入選票信息:輸入對足球先生候選人的選票 輸出結果:輸出最后足球先生的獲得者 統(tǒng)計選票:對選票進行統(tǒng)計4數(shù)據(jù)結構設計要輸入投票人數(shù),將其定義為 re ,選票信息可以用一個 p1003 的數(shù)組來存放, re 來 控制投票信息數(shù)組的行數(shù)。最開始定義一個全局變量 m=3,來表示候選者人數(shù)。這樣來控制數(shù)列數(shù),達到控制輸入的 目的。每輸入一

5、行,就開始判斷是否一張票上寫有兩個相同代號,或者是出現(xiàn) a', b', c'以外的投票結果,如果出現(xiàn)這種情況,就將票作廢,并記錄作廢票數(shù)。定 義變量 v 記錄作廢票數(shù)。判斷完畢后,若出現(xiàn)廢票,就將其中的票府賦值為0'。返回投票人數(shù) re ,留到后續(xù)函數(shù)使用。5算法設計1、 主函數(shù):主函數(shù)只提供輸入、處理和輸出部分函數(shù)調(diào)用:【程序】#include<>/* 輸入函數(shù) */#include<>int start(char p3);void count(int a,char p3,int pp); int result(int a,int b,

6、int c); int m;void main()/* 統(tǒng)計函數(shù) */* 輸出函數(shù) */* 全局變量 */*主函數(shù) */*int a;m=3;int pp3=0,0,0; do/*p1003a=start(p); count(a,p,pp); /* 計算得分char p1003=0; 賦初值,清空 */*/while(result(pp0,pp1,pp2);若 m=2 循環(huán),直至選出足球先生 */2、(1) 【分析】 要輸入投票人數(shù),將其定義為 re ,選票信息可以用一個 控制投票信息數(shù)組的行數(shù)。各功能模塊設計輸入模塊p1003 的數(shù)組來存放, re 來最開始定義一個全局變量 m=3,來表示候

7、選者人數(shù)。這樣來控制數(shù)列數(shù),達到控制輸入的 目的。每輸入一行,就開始判斷是否一張票上寫有兩個相同代號,或者是出現(xiàn)a', b', c'以外的投票結果,如果出現(xiàn)這種情況,就將票作廢,并記錄作廢票數(shù)。定 義變量 v 記錄作廢票數(shù)。判斷完畢后,若出現(xiàn)廢票,就將其中的票府賦值為0'。返回投票人數(shù) re ,留到后續(xù)函數(shù)使用?!境绦颉縤nt start(char p3)int re,i,j,v=0;printf(" 請輸入投票人數(shù) n");scanf("%d",&re);*a為投票人數(shù) */printf(" 請參加投票

8、的人開始投票 n");getchar();/* 輸入時以回車結束 */ for(i=0;i<re;i+)int flag=0;for(j=0;j<m;j+)/*scanf("%c",&pij); getchar(); 輸入選舉投票 */if(pi0=pi1|pi1=pi2|pi0=pi2)flag=1;/*判斷一張票上是否寫有兩個相同代號 */for(j=0;j<m;j+)if(pij!='a'&&pij!='b'&&pij!='c') flag=1;/* 判

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

10、主函數(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 分別是他們的得分 */ for(i=0;i<a;i+)if(pi0='a')x+=5;else if(pi1='a')x+=3;else if(pi2='a')x+=2;if(pi0='b&#

11、39;)y+=5;else if(pi1='b')y+=3;else if(pi2='b')y+=2;if(pi0='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;(3) 輸出模塊【分析】功能上要求比較三位候選人的最后得分,三人得分分別為 x,y,z 。定義 max,將最高分賦值到 max 中。只有一位最高分時,輸出三位候選人得分,顯示“祝賀某 人當選冠軍”。如果有兩位最

12、高分,則顯示“請重新投票”,接著,令m=2,改變?nèi)肿兞?,只剩下兩位候選者,顯示三位候選人得分,重新投票統(tǒng)計。如果兩位候選人分數(shù)還相同,則再次循環(huán),若不同,則顯示兩人得分, 并顯示“祝賀某人當選冠軍”?!境绦颉縤nt 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(max<y)max=y;k='b'if(max<z)max=z;k='c' if(max=x&&max=y|max=x&&m

13、ax=z|max=y&&max=z) printf(" 請重新投票 n");/* 若最高票數(shù)有兩人相同,提示重新投票 */l=1;if(m=3)printf(" 三位候選人得分: n");elseprintf(" 兩位候選人得分: n");if(l)m=2;if(x>0)printf("a:%dn",x);if(y>0)printf("b:%dn",y);if(z>0)printf("c:%dn",z);if(!l)printf("

14、 祝賀 %c當選冠軍 n",k);/* 輸 出 最 后 結 果*/return l;如果 l 返回主程序, 若 l 為真值, 則代表最后兩位候選人分數(shù)還相同, 主程序的 do,while 循環(huán),可以再次統(tǒng)計票數(shù),再次比較得分,直到選出最后的足球先生。6程序代碼#include<>#include<>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;int pp3=0,0,0;dochar p1

15、003=0; /*p1003 賦初值,清空 */ a=start(p);count(a,p,pp);/*計算得分 */while(result(pp0,pp1,pp2);int start(char p3)int re,i,j,v=0; printf(" 請輸入投票人數(shù) n"); scanf("%d",&re);*a為投票人數(shù) */printf(" 請參加投票的人開始投票 n");getchar();/* 輸入時以回車結束 */for(i=0;i<re;i+) int flag=0; for(j=0;j<m;j+)

16、scanf("%c",&pij);getchar();輸入選舉投票 */if(pi0=pi1|pi1=pi2|pi0=pi2)flag=1;/*判斷一張票上是否寫有兩個相同代號 */for(j=0;j<m;j+) if(pij!='a'&&pij!='b'&&pij!='c')flag=1;/* 判斷是否有 a,b,c 以外的字母 */ if(flag)printf(" 此票無效 n");v+;for(j=0;j<m;j+)pij=0;/* 若 有 以 上

17、 情 況 , 顯 示 “ 此 票 無 效 ” , 忽 略 此 票 , 并 記 錄 廢 票 數(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' 分別代表三個候選人 x y z 分別是他們的得分 */ for(i=0;i<a;i+)if(pi0='a')x+=5;else if(pi1='a')x+=3;else if(pi2

18、='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(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;

19、max=x;k='a'if(max<y)max=y;k='b'if(max<z)max=z;k='c' if(max=x&&max=y|max=x&&max=z|max=y&&max=z) printf(" 請重新投票 n");/* 若最高票數(shù)有兩人相同,提示重新投票 */l=1;if(m=3)n");n");printf(" 三位候選人得分:elseprintf(" 兩位候選人得分: if(l)m=2;if(x>0)pr

20、intf("a:%dn",x);if(y>0)printf("b:%dn",y);printf("c:%dn",z);if(!l)printf("祝賀 %c 當輸出最后結果return l;選冠軍 n",k);*/7程序運行結果1、主函數(shù)運行,輸入選票信息3、 統(tǒng)計選票,輸出結果8編程中遇到的困難及解決方法在編程的過程中,很容易出現(xiàn)一個問題,就時少大括號“ ”的問題。這是, error 只有 一個,但是錯誤的地方很多,且都在括號處。按照計算機所指出的錯誤位置尋找是不容易找 出錯誤的。 直到整個程序看了一遍后才

21、會發(fā)現(xiàn)是一個大括號的問題。通常少的是“ ”或者“ ”,錯誤位置會出現(xiàn)在缺少括號位置之后的其他大括號出現(xiàn)的地方。只要這種情況發(fā)生后,往前 找是否有大括號缺失就可以將問題很快解決了。在幫同學修改程序的過程中,也遇到過一個問題。在頭文件后定義了子函數(shù),可是之后 忘了編寫子函數(shù),在糾錯時,有的是不會發(fā)現(xiàn)錯誤的,但是連接過程中就會報告出錯。我覺 得在以后的編程過程中,最好用什么函數(shù)寫什么函數(shù),后者在寫完一個子函數(shù)后再在頭文件 底下聲明。9總結心得及良好建議此次實習為期一周,我學到了很多,也知道了很多的不足。通過老師的精心指導帶領下, 我不僅獲得了很多新知識,還好好復習了一下以前學的知識。在這之前,我們已經(jīng)對 C 語言 這門課程學習了一個學期,對其有了一定的了解,但是也僅僅是停留在學習了解的范圍,對 里面的好多東西還是很陌生,并不是很熟練,有著許多欠缺,更多的在運用起來

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論