C語言課程設(shè)計--C語言投票程序_第1頁
C語言課程設(shè)計--C語言投票程序_第2頁
C語言課程設(shè)計--C語言投票程序_第3頁
C語言課程設(shè)計--C語言投票程序_第4頁
C語言課程設(shè)計--C語言投票程序_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、.C程序設(shè)計實習報告題目:C語言投票程序?qū)W 院: 專 業(yè): 姓 名: 班級學(xué)號指導(dǎo)教師: 2010 年 07 月 17 日目錄一、課程設(shè)計題目描述與要求 3二、 需求與個人設(shè)計思想 4三、 流程圖 5四、我的程序設(shè)計(源程序) 6 程序運行情況 8五、 總結(jié)與修改 9關(guān)于程序?qū)嵭?9 問題及可能的解決方法 9修改后程序運行情況 12修改后的程序優(yōu)點 13心得與體會 15 C語言投票程序一、課程設(shè)計題目描述與要求要求:設(shè)有代號為a、b、c的足球先生候選人,根據(jù)投票者在選票上對他們編號的填寫順序分別記分5、3、2。請編程從鍵盤上輸入投票人數(shù)及投票結(jié)果,統(tǒng)計他們的得分,并輸出哪位當選足球先生。注意:

2、若同一張票上寫有兩個相同的代號,則顯示“此票無效”,若最終前兩名得分相同應(yīng)顯示“重新投票”,否則先是三個候選者得分并輸出“祝賀X當選冠軍!”。 例如:投票人數(shù):5輸入投票內(nèi)容:a b cc a b c a a 該票無效!c b ab c a三位候選人得分:a: 12b: 13c: 15祝賀c當選冠軍!提示:數(shù)據(jù)結(jié)構(gòu)可用結(jié)構(gòu)體數(shù)組,結(jié)構(gòu)體成員包括代號、得分?;蛘卟捎枚S數(shù)組,行方向?qū)?yīng)一張投票,列方向二、需求與個人設(shè)計思想 【需求】此程序意在評出得分最高的“足球先生”,要求編程從鍵盤上輸入投票人數(shù)及投票結(jié)果,統(tǒng)計他們的得分,并輸出哪位當選足球先生?!緜€人設(shè)計思想】通過結(jié)構(gòu)體數(shù)組struct ca

3、ndidate Cadt3來存儲三位候選人的基本信息:代號、得分。在用一個一維數(shù)組來存儲投票內(nèi)容代表投票內(nèi)容(順序),通過循環(huán)語句while,for和一個沒有參數(shù)的getchar函數(shù)(字符輸入函數(shù))從終端輸入投票內(nèi)容,處理后得到最終三位候選人得分,比較得到最終結(jié)果,評出得分最高的一名候選人,即為“足球先生”。在過程中,當遇到一張選票上寫有兩個代號相同時應(yīng)顯示“此票無效”, 若最終前兩名得分相同應(yīng)顯示“重新投票”, 否則先是三個候選者得分并輸出“祝賀X當選冠軍!”。三、 流程圖1、 整體流程圖“足球先生”投票程序 名次排序輸出 數(shù)據(jù)比較 數(shù)據(jù)處理投票內(nèi)容輸入結(jié)構(gòu)體數(shù)組引用 圖712、主函數(shù)流程圖

4、:請問共有多少人進行投票輸入投票人數(shù)開始同一張票上存在相同代號統(tǒng)計票數(shù)顯示“此票無效”存在相同票數(shù)?輸出“祝賀X當選冠軍”輸入投票人數(shù) 圖72四、我的程序設(shè)計(源程序)#include<stdio.h>struct candidate /定義結(jié)構(gòu)體 char name; /名字 int score; /分數(shù);struct candidate Cadt3='a',0,'b',0,'c',0;void main() int i,j,num; char vote3,s; printf("請問共有多少人投票?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當選冠軍 .n",C);程序運行情況如下:(1) 當遇到一張選票上寫有兩個代號相同時成功顯示“該票無效”: 圖73(2) 顯示最終結(jié)果: 圖74五、總結(jié)與修改暑假期間,通過八天的C語言程序設(shè)計實習,我重新溫習了C語言,更是對C語言有了更新

8、的認識,更為深層次的認識。以下幾點是我在實習期間遇到的問題及心得體會?!娟P(guān)于程序?qū)嵭小?程序運行情況的截圖如圖73,74所示,圖中顯示有投票人數(shù)、投票的內(nèi)容、候選人最后的得分情況以及最終冠軍的獲得者,系統(tǒng)運行情況較好,但仍存在一些不足,例如:沒有控制開始結(jié)束的語句,程序沒有很好的體現(xiàn)模塊化等。在以后的程序設(shè)計中要特別注意這次遇到的問題,改進不足,探索新穎的思路,力求將程序設(shè)計完美化。【問題及可能的解決方法】 程序中最大的不足是模塊化沒有很好的發(fā)揮其作用,個人覺得可以通過調(diào)用函數(shù)來彌補這一不足。至于開始結(jié)束語句地解決,可以增加一個輸出語句來解決。還有一個問題是,源代碼中沒有注釋語句,雖然這次設(shè)計

9、的程序比較簡單沒用到注釋,但以后設(shè)計中一定要注意這方面。【修改后程序】#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、請問共有多少人投票?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ù)代號 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當選冠軍 !n",C);int main()int ID,ture=0; printf("n*此程序為足球先生投票程序*n"); while(1) printf("請選

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請按任何鍵繼續(xù).n"); getchar(); return 0;修

14、改后程序運行情況:圖75圖76【修改后的程序優(yōu)點】 程序被修改后更好地實現(xiàn)了模塊化:(1) 主函數(shù)顯示是否繼續(xù)進行投票輸入1或2,判斷是不是1或2根據(jù)是1或2調(diào)用各功能函數(shù)圖77(2) thanks函數(shù)選2,進入thanks輸出“thank you”圖78(3)football函數(shù)請問共有多少人進行投票輸入投票人數(shù)選1,開始輸入投票結(jié)果同一張票上存在相同代號統(tǒng)計票數(shù)顯示“此票無效”存在相同票數(shù)?輸出“祝賀X當選冠軍”圖79 【心得與體會】c語言作為一種計算機的語言,我們學(xué)習它,有助于我們更好的了解計算機,與計算機進行交流,因此,c語言的學(xué)習對我們尤其重要,于是學(xué)校組織我們進行了為期八天的實習。

15、    在這八天里,我們在老師的帶領(lǐng)下進行了暑期c語言程序?qū)嵺`學(xué)習。在這之前,我們已經(jīng)對c語言這門課程學(xué)習了一個學(xué)期,對其有了一定的了解,但是也僅僅是停留在了解的范圍,對里面的好多東西還是很陌生,更多的在運用起來的時候還是感到很棘手,畢竟,萬事開頭難嘛。實習前兩天由于對所學(xué)的知識忘記了不少,編的程序中有很多錯誤,而且很多找不出原因所在,也就是說完成程序的編寫,并不意味著萬事大吉。原本認為萬無一失的程序,實際上機運行時卻不斷出現(xiàn)麻煩。如編譯程序檢測出一大堆錯誤。有時程序本身不存在語法錯誤,也能夠順利運行,但是運行結(jié)果顯然是錯誤的。經(jīng)過幾天對書上知識如:數(shù)組、結(jié)構(gòu)體數(shù)

16、組、循環(huán)語句(forwhile)、if語句等的復(fù)習以及老師的耐心輔導(dǎo),不僅重拾以前所學(xué)知識而且對c語言有了更深層次的理解。當看到自己設(shè)計出來的程序運行成功時,感覺很欣慰的同時更痛下決心,以后一定要多看c語言源程序。特別時要注意程序中的算法與數(shù)據(jù)結(jié)構(gòu),畢竟學(xué)c的關(guān)口就是算法和數(shù)據(jù)結(jié)構(gòu)。別的方面也要關(guān)注一下,諸如變量的命名、庫函數(shù)的用法、結(jié)構(gòu)體的定義等等。有些庫函數(shù)是經(jīng)常用到的。對于這些庫函數(shù)的用法一定要牢牢記住。只是看是不行的,編程序是個實干的活。一個c語言程序從編輯、編譯、連接到運行,光說不練不行。剛開始學(xué)的時候可以多練習書上的習題。對于自己不明白的地方,自己編個小程序?qū)嶒炓幌率亲詈玫姆椒ǎ?/p>

17、給自己留下深刻的印象。自己動手的過程中要不斷糾正自己不好的編程習慣和認識錯誤。有一定的基礎(chǔ)以后可以嘗試編一些經(jīng)典的案例程序。 由于時間的關(guān)系,我們的這次實踐課程老師并沒有給我們詳細的介紹,只是給我們簡單的介紹了幾個比較重要的實際操作。包括了程序模塊處理、程序的添加修改、程序錯誤檢查中用到的屏蔽操作、程序的調(diào)試等基本操作,更多的還是要靠自己努力。    上機實驗是學(xué)習程序設(shè)計語言必不可少的實踐環(huán)節(jié),特別是c語言靈活、簡潔,更需要通過編程的實踐來真正掌握它。對于程序設(shè)計語言的學(xué)習,可以概括為學(xué)習語法規(guī)定、掌握程序設(shè)計方法、提高程序處理能力,而這些都必須通過充分的實際上機操作才能完成。通過多次上機練習,我對于語法知識有了感性的認識,加深了對它的理解,在理解的基礎(chǔ)上就會自然而然地掌握c語言的語法規(guī)定。對于一些內(nèi)容自己認為在課堂上聽懂了,但上機實踐中會發(fā)現(xiàn)原來理解的偏差。所以學(xué)習c語言不能只停留在學(xué)習它的語法規(guī)則,而是利用學(xué)到的知識編寫c語言程序,解決實際問題。即把c語言作為工具,描述解決實際問題

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論