




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C語(yǔ)言課程設(shè)計(jì)報(bào)告學(xué)院專業(yè)班級(jí)學(xué)口 號(hào)姓名扌曰導(dǎo)老師目錄第一部分:序言第二部分:課程設(shè)計(jì)名稱及題目要求第三部分:程序總體設(shè)計(jì)思路第四部分:詳細(xì)設(shè)計(jì)和流程圖第五部分:機(jī)操作及程序運(yùn)行結(jié)果第六部分:結(jié)束語(yǔ)第七部分:附錄(原程序)第一部分:序言課程設(shè)計(jì)是學(xué)習(xí)程序設(shè)計(jì)語(yǔ)言中的一個(gè)重要環(huán)節(jié)。為提高學(xué)生程序設(shè)計(jì)能 力,課程設(shè)計(jì)共安排兩個(gè)實(shí)踐環(huán)節(jié):上機(jī)實(shí)習(xí)和課程設(shè)計(jì)。其中上機(jī)實(shí)習(xí)與課堂 教學(xué)同步進(jìn)行,主要是檢驗(yàn)課堂教學(xué)內(nèi)容,初步掌握程序設(shè)計(jì)的基本方法和調(diào)試 技能;課程設(shè)計(jì)是在課堂學(xué)習(xí)結(jié)束后,集中安排一次60學(xué)時(shí)上機(jī)集中強(qiáng)化訓(xùn)練, 使學(xué)生的程序設(shè)計(jì)能力再上一個(gè)臺(tái)階。 最后,以報(bào)告形式形成此次課程設(shè)計(jì)的最 終成
2、果。第一部分為上機(jī)實(shí)習(xí)。安排了 Visual C+環(huán)境下的課堂實(shí)習(xí)內(nèi)容。具體內(nèi)容 包括Visual C+集成環(huán)境的使用;課堂實(shí)驗(yàn)指導(dǎo)內(nèi)容,共分八個(gè)實(shí)驗(yàn),學(xué)生在 每次上機(jī)實(shí)習(xí)前需事先閱讀并熟悉相關(guān)實(shí)驗(yàn)內(nèi)容。具體進(jìn)度可由任課教師統(tǒng)一安排。由于統(tǒng)一安排的上機(jī)時(shí)間有限,部分實(shí)驗(yàn)內(nèi)容可由學(xué)生在課后自由上機(jī)時(shí)間 完成。第二部分是課程設(shè)計(jì)。本部分內(nèi)容共分為四個(gè)單元,其中第一個(gè)單元為溫故 而知新,在鞏固以學(xué)內(nèi)容的基礎(chǔ)上,復(fù)習(xí)課程設(shè)計(jì)和上機(jī)調(diào)試的基本方法。 第二 個(gè)單元為庖丁解牛,通過學(xué)習(xí)一個(gè)綜合程序的設(shè)計(jì)與編寫, 使學(xué)生能夠在較短時(shí) 間內(nèi)掌握綜合程序設(shè)計(jì)的基本步驟和方法。第三個(gè)單元為舉一反三,在第二個(gè)單 元的
3、基礎(chǔ)上以教材案例的指導(dǎo)下學(xué)會(huì)構(gòu)建程序的框架以及部分常用算法代碼的 書寫。第四個(gè)單元為熟能生巧,在前三個(gè)單元系統(tǒng)學(xué)習(xí)的基礎(chǔ)上, 動(dòng)手完成一兩 個(gè)程序的完整設(shè)計(jì)與編寫。第二部分:課程設(shè)計(jì)名稱及題目要求題目名稱:歌星大獎(jiǎng)賽【要求】(1)在歌星大獎(jiǎng)賽中,有十個(gè)評(píng)委為參賽的選手打分,分?jǐn)?shù)為1100分。選手 最后得分為:去掉一個(gè)最高分和一個(gè)最低分后其余 8個(gè)分?jǐn)?shù)的平均植。請(qǐng) 編寫一個(gè)程序?qū)崿F(xiàn)。(2)同時(shí)對(duì)評(píng)委評(píng)分進(jìn)行裁判,即在 10個(gè)評(píng)委中找出最公平(即評(píng)分最接近 平均分)和最不公平(即與平均分的差距最大)的評(píng)委?!咎崾尽啃枨蠓治鲞@個(gè)問題的第一個(gè)要求算法十分簡(jiǎn)單, 但是要注意在程序中判斷最大、最小 值的變
4、量是如何賦值的。第二個(gè)要求為了考慮效率,要用到排序技術(shù)。第三部分:程序總體設(shè)計(jì)思路對(duì)于我所做的題目,我是采用根據(jù)目標(biāo)程序運(yùn)行的過程的方法來編寫的。 此 種方法較為簡(jiǎn)單明了,容易理解接受,屬常規(guī)思維,但是不夠精簡(jiǎn),有進(jìn)一步改 進(jìn)的空間。我所做的是21題:歌星大獎(jiǎng)賽。首先我學(xué)習(xí)了C語(yǔ)言課程設(shè)計(jì)與學(xué)習(xí) 指導(dǎo)的相關(guān)內(nèi)容,再在以前所學(xué) C語(yǔ)言和C+勺基礎(chǔ)上,以及在老師的指導(dǎo)、 同學(xué)的幫助指正下,借助購(gòu)買的指導(dǎo)材料,了解了一些目標(biāo)程序運(yùn)行的次序與界 面的操作方法后,我按照題目的具體要求進(jìn)行了思考和設(shè)計(jì),具體設(shè)計(jì)思路為:程序的要求是根據(jù)十個(gè)評(píng)委對(duì)歌手的打分情況, 求出這個(gè)歌手的平均成績(jī)和 最公平及最不公平的
5、裁判。首先,我先考慮到程序的數(shù)據(jù)輸入,可以用scanf函數(shù)來解決,并將輸入的數(shù)據(jù)存放于數(shù)組中。隨后對(duì)存放在數(shù)組中的數(shù)據(jù)進(jìn)行排 序,這步為執(zhí)行找出最不公平的裁判提高了效率, 只需將排好序的數(shù)組的首尾分 值與平均值進(jìn)行比較即可。將排好序的數(shù)組中間的八個(gè)數(shù)求平均值即為此歌手的 成績(jī),可見排序法可大大的簡(jiǎn)化程序。接下來是最后一個(gè)任務(wù)就是找最公平的裁 判,此部分我接受了同學(xué)的建議,使用拆半法,先將靠近中間的一個(gè)裁判假設(shè)為 最公平的,再將他前面的裁判與之比較,找出前半部分的最公平的裁判,再將之 與后半部分的進(jìn)行比較,得出最終的最公平的裁判。為了方便管理員更好的使用 界面操作,我還設(shè)置了每輸入完一組數(shù)據(jù)并得
6、到結(jié)果后, 或接著輸入下組數(shù)據(jù)或 按0跳出界面。整個(gè)程序的設(shè)計(jì)思路到此結(jié)束。第四部分:詳細(xì)設(shè)計(jì)和流程圖【功能模塊劃分及其流程圖】本程序功能模塊根據(jù)程序設(shè)計(jì)的需求, 綜合程序的實(shí)用性、人性化、智能化 的考慮,將程序劃分為6個(gè)部分分別編寫,程序主體功能將由這6個(gè)部分來完成。 這6個(gè)部分依次是:1. 分?jǐn)?shù)的輸入部分;采用數(shù)組和指針,將10個(gè)裁判對(duì)于同一個(gè)選手的打分分別輸入并存放于指針?biāo)傅牡刂分?以便后面調(diào)用和輸出。2. 對(duì)分?jǐn)?shù)進(jìn)行的排序部分;將輸入的10個(gè)分?jǐn)?shù)按照從低到高的順序排成一列,以便方便接下來計(jì)算選手得分,以及找出最公平和最不公平裁 判。3. 計(jì)算平均值的部分;將排序好的分?jǐn)?shù)去掉第一個(gè)和最
7、后一個(gè),再將剩下求和之后除以8,便是選手的最終得分。4. 找出最不公平裁判部分;使用拆半法,先將靠近中間的一個(gè)裁判假設(shè)為最公平的,再將他前面的裁判與之比較,找出前半部分的最不公平 的裁判,再將之與后半部分的進(jìn)行比較,得出最終的最不公 平的裁判。5. 找出最公平裁判部分;使用拆半法,先將靠近中間的一個(gè)裁判假設(shè)為最公平的,再將他前面的裁判與之比較,找出前半部分的最公平的 裁判,再將之與后半部分的進(jìn)行比較,得出最終的最公平的 裁判。6. 數(shù)據(jù)的輸出部分總體設(shè)計(jì):歌星大獎(jiǎng)賽評(píng)分系統(tǒng)"1""V分?jǐn)?shù)輸入1分?jǐn)?shù)排序計(jì)算平均分找出最不公平評(píng)委找出最公平評(píng)委數(shù)據(jù)輸出主函數(shù)流程圖:程
8、序#i nclude <stdio.h>#in clude <math.h>#in clude vconi o.h>struct test int num; float s; ;void mai n()int i,j,k,bad,good;float ts,sum=0,min, average=0,tm10; struct test a10,* p10,*te mp;do sum=0;average=0;prin tf("I np ut 10 sorcesinp ut 0(exit)n");for(i=0;i<10;i+)ai. num=
9、i+1; sca nf("%f",&ai.s);/*分?jǐn)?shù)的輸入部分*/if(a0.s=0) exit(0); for(i=0;iv10;i+) tmi=ai.s; for(i=0;iv10;i+) pi=&ai;for(i=0;i<9;i+)k=i;for(j=i+1;j<10;j+)if(tmk<tmj)k=j;if(k!=i)ts=tmi;tmi=tmk;tmk=ts;temp=p i; p i=pk; pk=te mp;/*對(duì)輸入分值進(jìn)行排序*/for(i=1;i<9;i+)sum+=p i->s; average=sum
10、/8;計(jì)算平均值的部分*/*printf("nn");prin tf("The average is:%.1fn",average);printf("n");(fabs( p0->s-average)>fabs( p 9->s-average)?(bad=0):(bad=9);/*通過絕對(duì)差值判斷與平均值相差最大的裁判*/min=fabs( p 5->s-average); good=5;/*暫定第六個(gè)為最公平裁判*/for(i=4;i>0;i-)if(fabs( pi->s-average)v=m
11、i n)mi n=fabs( pi->s-average); good=i; else break;/*用拆半法先將前半部分與min比較*/for(i=6;i<9;i+)if(fabs( p i->s-average)v=mi n)mi n=fabs( pi->s-average); good=i; else break;/*用拆半法先將后半部分與min比較*/prin tf("The worst 裁判 is %d and the sorce is %.1fn", p bad->num,p bad->s);/*打印出最不公平裁判和其分?jǐn)?shù)*
12、/prin tf("The best 裁判 is %d and the sorce is %.1fn", p good->num,p good->s);/*打印出最公平裁判和其分?jǐn)?shù)*/printf("nprintf(" 下一選手得分:");/*打印出下一位*/n");while(1);/* getchO; */ return 0;第五部分:機(jī)操作及程序運(yùn)行結(jié)果本程序是一款應(yīng)用軟件,故數(shù)據(jù)設(shè)計(jì)、程序運(yùn)行結(jié)果應(yīng)在程序的運(yùn)用中得以體現(xiàn), 現(xiàn)在通過一個(gè)程序的運(yùn)用事例來對(duì)數(shù)據(jù)設(shè)計(jì)、程序運(yùn)行結(jié)果進(jìn)行演示與實(shí)現(xiàn):現(xiàn)在假設(shè)要求某一選手的得
13、分情況,則在下面所示的界面里輸入10位裁判 對(duì)于該選手的打分:頁(yè) C: XDOCniE'l XDAVTDI'I 桌面21C'1. EIEInput f (H sopces:input MCexit>輸入10位裁判對(duì)于該選手的打分,如下面界面所示:pm輸入輸入完畢后,按Enter 健回車,程序運(yùn)行界面如下:2 ' I "HIII 'll II;Q iiji'll uii:i '1 J|心 H _ il-g兇Input 10 SDPcesinput 0<exit>92 91.e 93*5 M 95 93,3 ?45
14、 ?0 ?5 90.9The aver is :93 *21sorceTlie worst pinguei is 8 and the sorce is 90.QThe best pinuei is 3 and the sorce is 93.5Nftxt ane:Input 10 forces此程序顯示了歌手的最后得分,以及根據(jù)裁判們打分與最后得分之間的差距判斷出的最公平和最不公平裁判的位置及打分!又輸為了驗(yàn)證程序的準(zhǔn)確性及公平與不公平裁判出現(xiàn)在每個(gè)裁判上的幾率,入了幾位歌手的打分,如下所示:頁(yè) C: DOCUIE"lDATIDl"n桌面21C"1.EEEInpu
15、t 10 sorcesinput 0<exit>92 91,8 93.5 34 95 93.8 94,5 90 95 90.9The auer is:93*2The uorst pinguei is T)he best uinguei is83and the sorce isand the sorce is 93.5Next one : Input 10 sorcesinput 0<exlt>91 92 99 9® ?3 94 90 95 S4.5 丫5*5輸入輸入完畢后,按Enter:健回車,程序運(yùn)行界面如下: C: XDOCUIElXIATIDl桌面21曠
16、1.図莊Input 10 sopcesinput 0<exit>72 91.8 93.5 9斗 S5 93*6 94.S 90 95 90,9Lhe aver is:93,2The uorst pinguei is fi and the sowre is 90.0 rbe best pingwi is 3 and the sorce is 93 -EHext one:Input IB91 92 99 98 93 94input 0<exit>95 94.S 95.5The auep is:941The worst pinguei The best pingwisorce
17、s90isis3 and the sorce is 99.0 £ and the sov-ce is 94.0Next one:Input 10 sopcesinput BCexitTk C八DOCUM“八DE¥ID曠I '桌面 12l<r 1 ElETlie best pinguei is 3 and the sorce is 93.5xt ane:Input IQ92 99 9® 93 94input 0<exit95 94.S 95,5sorces90The awei* is:94,1The uarst pinguei The best
18、pinqwei36and the sorce is 99,0 and the sorce is 94.0Next one:Input 1078 87 B6 77 75 83input 0<exit>82 79 SBsorces04The aver is :81.1Tlie uo rst pingviei The best pin cruel58and the sorce and the sorce527e00Np!xt ane : In put IB sorces當(dāng)出現(xiàn)最高分的裁判和最低分的裁判各不止一個(gè)時(shí),輸入數(shù)據(jù)后程序界面的運(yùn)行如下:軻 C: XDOCDlE'l ADI
19、IIT 桌面TC.EZEInput 10 SDPcesinput80 8G 8? 87 80 95 89.5 950Cexit>91 92The auer is:88-7The worst pinguei is 1 andThe best pinguei is 3 andthe sovce is 80.0 the sorce is .0Next one = Input IQ sorcesinput第六部分:結(jié)束語(yǔ):程序的優(yōu)缺點(diǎn);算法是程序的靈魂,程序的優(yōu)點(diǎn)首先表現(xiàn)在算法上的優(yōu)點(diǎn),其次才是功能上的。算法上的優(yōu)點(diǎn)主要體現(xiàn)在以下三點(diǎn):1. 程序采用main主函數(shù)方式設(shè)計(jì),程序的主體的功能大都由
20、該功能完成。程序 如此設(shè)計(jì)有利于程序的進(jìn)一步改進(jìn)及有助于程序執(zhí)行效率的提高。2. 程序執(zhí)行使用for語(yǔ)句,C語(yǔ)言中的for語(yǔ)句使用是最為靈活的,而他完全 可以代替while語(yǔ)句!有助于相應(yīng)功能準(zhǔn)確高效運(yùn)行。3. 程序?qū)?shù)據(jù)的讀寫采用了 seanf函數(shù),此數(shù)據(jù)的讀取與存貯方式有利于磁盤數(shù)據(jù)的加密,即無法用記事本等程序?qū)?shù)據(jù)文件進(jìn)行正常讀取,有助于數(shù)據(jù) 的保護(hù)與加密。另外,本程序采用seanf函數(shù)一次性把所有修改過的結(jié)構(gòu)體數(shù)組寫入文本文件的修改方式,不僅克服了本次程序設(shè)計(jì)中文本文件不能順 利準(zhǔn)確讀取的難點(diǎn),而且相較于傳統(tǒng)的fprintfO函數(shù)的寫入方式與創(chuàng)建臨時(shí)交換文件的寫入方式,寫入效率明顯提高
21、。功能上的優(yōu)點(diǎn)主要體現(xiàn)在以下三點(diǎn):1.2.簡(jiǎn)潔明了的程序菜單。人性化的程序提示語(yǔ)言,程序提示語(yǔ)言較人性化,不僅大多為祈使語(yǔ)句、疑 句,而且提示明確,具有較強(qiáng)的明確的指導(dǎo)作用。3.程序采用先對(duì)裁判分?jǐn)?shù)進(jìn)行排序,再將排序后首尾的分?jǐn)?shù)直接與平均值進(jìn)行 比較,得出最差裁判?!境绦虻娜秉c(diǎn)】主要表現(xiàn)在以下四點(diǎn):1. 程序雖然經(jīng)過多次精簡(jiǎn),但僅僅是形式上、小范圍的精簡(jiǎn),仍未得到本質(zhì)上 的精簡(jiǎn),未找到更加簡(jiǎn)單、更加高效、更加合理、更小占用的資源的算法。2. 程序仍然存在不合理的地方,仍需進(jìn)一步改進(jìn)。3. 程序功能仍然不夠完善。二:收獲與體會(huì);為了編寫這個(gè)程序我用了很多天時(shí)間, 克服了非常多的困難,感覺到了很大
22、 的壓力。程序是在邊看書、邊查資料、詢問、長(zhǎng)期思考與設(shè)計(jì)、調(diào)試、試驗(yàn)的基 礎(chǔ)上編寫出來的,在編寫程序的過程中,得到了許多的鍛煉,編程的思維也得以 塑造。有的地方我自己編不出來,多虧了同學(xué)的幫忙與指導(dǎo)。第二部分的折半法 我原本沒有采用,可是總是編不出來,最后不得已只有采用這個(gè)方法。 這次課程 設(shè)計(jì)讓我收獲很多,首先以前學(xué)的C知識(shí)得到了加強(qiáng)與鞏固;其次收獲了很多新 知識(shí),編程的方法、思路以及思維模式等;最后,通過此次課程設(shè)計(jì),我發(fā)現(xiàn)了 自己仍然存在很多的不足,基礎(chǔ)知識(shí)大的并不扎實(shí),需要進(jìn)一步學(xué)習(xí)和復(fù)習(xí)鞏固。感謝老師一個(gè)多星期以來對(duì)我們的指導(dǎo)以及辛勤的工作與付出!第七部分:附錄(原程序)#i ncl
23、ude vstdio.h>#in elude <math.h>#in elude vconi o.h> struct testint num; float s;void mai n()int i,j,k,bad,good;float ts,sum=0,min, average=0,tm10; struct test a10,* p10,*te mp;do sum=0;average=0;prin tf("I np ut 10 sorcesinp ut 0(exit)n");for(i=0;i<10;i+)ai. num=i+1; sca nf("%f",&ai.s);/*分?jǐn)?shù)的輸入部分*/if(a0.s=0) exit(0); for(i=0;iv10;i+) tmi=ai.s; for(i=0;iv10;i+) pi=&ai;for(i=0;i<9;i+)k=i;for(j=i+1;j<10;j+) if(tmk<tmj) k=j;if(k!=i)ts=tmi;tmi=tmk;tmk=ts; tem p=p i; pi=pk; pk=te mp;對(duì)輸入分值進(jìn)行排序*/計(jì)算平均值的部分*/ /* for(i=1;i<9;i+)sum+=p i->s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 水渠改移施工方案
- 磚煙囪施工方案
- 中介招聘合同范例
- 農(nóng)戶養(yǎng)殖加工合同范例
- 肺癌患者放療護(hù)理
- 企業(yè)愿景與品牌戰(zhàn)略的結(jié)合計(jì)劃
- 冷庫(kù)承建合同范例
- 積極心態(tài)在工作生活中的重要性計(jì)劃
- 小班科學(xué)探究精神的培養(yǎng)活動(dòng)計(jì)劃
- 博物館展品安全管理措施計(jì)劃
- 《少兒汽車知識(shí)講座》課件
- 中華英才網(wǎng)行測(cè)
- 《鐵路軌道維護(hù)》課件-起道作業(yè)
- WS 308-2019 醫(yī)療機(jī)構(gòu)消防安全管理
- (高鴻業(yè))微觀經(jīng)濟(jì)學(xué)習(xí)題解析+微觀經(jīng)濟(jì)學(xué)題庫(kù)解析
- 《尿11-脫氫血栓烷B2與其他危險(xiǎn)因素的交互效應(yīng)在急性冠脈綜合征患者中的研究》
- 咨詢公司項(xiàng)目風(fēng)險(xiǎn)控制方案
- 校園食品安全培訓(xùn)課件
- 開關(guān)柜更換改造施工方案
- 《眼科常用眼藥及護(hù)》課件
- 污水處理廠防水防腐工程施工方案
評(píng)論
0/150
提交評(píng)論