版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 2</b></p><p><b> C語言課程實習(xí)報告</b></p><p> 課程名稱: 歌星大獎賽</p><p> 學(xué) 院: 信息工程學(xué)院</p><p> 專 業(yè): 通信工程</p><p><b>
2、 班 級: </b></p><p> 學(xué) 號: </p><p><b> 姓 名: </b></p><p><b> 指導(dǎo)老師: </b></p><p> 第一部分:課程設(shè)計編號、名稱、內(nèi)容</p><p><b&
3、gt; 名稱:歌星大獎賽</b></p><p><b> 內(nèi)容:</b></p><p><b> 【要求】</b></p><p> 在歌星大獎賽中,有十個評委為參賽的選手打分,分數(shù)為1~100分。選手最后得分為:去掉一個最高分和一個最低分后其余8個分數(shù)的平均植。請編寫一個程序?qū)崿F(xiàn)。</p&g
4、t;<p> 同時對評委評分進行裁判,即在10個評委中找出最公平(即評分最接近平均分)和最不公平(即與平均分的差距最大)的評委。</p><p><b> 【提示】</b></p><p><b> 需求分析</b></p><p> 這個問題的第一個要求算法比較簡單,但是要注意在程序中判斷最大、最小
5、值的變量是如何賦值的。第二個要求為了考慮效率,要用到排序技術(shù)。</p><p> 第二部分:程序總體設(shè)計思路</p><p> 由于C語言是面對過程的語言,故我的設(shè)計思路是根據(jù)目標程序運行的過程來編寫的。</p><p> 在編寫本程序的過程中,首先我借助購買的指導(dǎo)材料,了解了一些目標程序運行的次序與界面的操作方法,然后按照題目的具體要求進行思考和設(shè)計。<
6、;/p><p> 具體的設(shè)計思路如下:</p><p> 程序的要求是根據(jù)十個評委對歌手的打分情況,求出這個歌手的平均成績和最公平及最不公平的裁判。首先,我先考慮到程序的數(shù)據(jù)輸入,可以用scanf函數(shù)來解決,并將輸入的數(shù)據(jù)存放于數(shù)組中。隨后對存放在數(shù)組中的數(shù)據(jù)進行排序,這步為執(zhí)行找出最不公平的裁判提高了效率,只需將排好序的數(shù)組的首尾分值與平均值進行比較即可。將排好序的數(shù)組中間的八個數(shù)求平均
7、值即為此歌手的成績,可見排序法可大大的簡化程序。接下來是最后一個任務(wù)就是找最公平的裁判,此過程我使用拆半法,先將靠近中間的一個裁判假設(shè)為最公平的,再將他前面的裁判與之比較,找出前半部分的最公平的裁判,再將之與后半部分的進行比較,得出最終的最公平的裁判。為了方便管理員更好的使用界面操作,我還設(shè)置了每輸入完一組數(shù)據(jù)并得到結(jié)果后,或接著輸入下組數(shù)據(jù)或按0跳出界面。</p><p> 整個程序的設(shè)計思路到此結(jié)束。<
8、;/p><p> 第三部分:程序功能劃分、圖示及流程圖</p><p> 【功能模塊劃分及其流程圖】</p><p> 本程序功能模塊根據(jù)程序設(shè)計的需求,綜合程序的實用性、人性化、智能化的考慮,將程序劃分為6個部分分別編寫,程序主體功能將由這6個部分來完成。這6個部分依次是:</p><p> 1.分數(shù)的輸入部分;</p>
9、<p> 2.對分數(shù)進行的排序部分;</p><p> 3.計算平均值的部分;</p><p> 4.找出最不公平裁判部分;</p><p> 5.找出最公平裁判部分;</p><p><b> 6.數(shù)據(jù)的輸出部分</b></p><p><b> 總體設(shè)計:<
10、;/b></p><p><b> 系統(tǒng)功能模塊圖</b></p><p> 第四部分:程序設(shè)計數(shù)據(jù)、運行結(jié)果</p><p> 本程序是一款應(yīng)用軟件,故數(shù)據(jù)設(shè)計、程序運行結(jié)果應(yīng)在程序的運用中得以體現(xiàn),現(xiàn)在通過一個程序的運用事例來對數(shù)據(jù)設(shè)計、程序運行結(jié)果進行演示與實現(xiàn):</p><p><b>
11、【軟件運用舉例】</b></p><p><b> 程序開始界面如下:</b></p><p> 管理員輸入評委對任意歌手的打分,輸入完畢后程序如下菜單界面:</p><p> 管理員輸入評委對任意歌手的打分,當輸入有誤后程序如下菜單界面:</p><p> 此程序顯示了裁判對歌手的平均分數(shù),以及根據(jù)
12、裁判們打分與平均分數(shù)間的差距判斷出的最公平和最不公平裁判的位置及打分!</p><p> 當出現(xiàn)最高分的裁判和最低分的裁判各不止一個時,輸入數(shù)據(jù)后程序界面的運行如下:</p><p> 第五部分:程序改進思路</p><p> 【針對第一點:程序算法精簡問題】</p><p><b> >>改進思路:</b
13、></p><p> 算法上除了采用結(jié)構(gòu)體數(shù)組外,考慮在程序的算法設(shè)計上引入排序法,考察這樣對數(shù)據(jù)組織運算效率上是具有提高作用的。</p><p> 就現(xiàn)有知識水平、經(jīng)驗來看,對我來說,本程序的算法設(shè)計上已經(jīng)是最精簡的了。C語言知識博大精深,有必要對C語言的專著進行研究學(xué)習(xí),多閱讀別人的程序代碼、多動手實踐操作與設(shè)計,這樣便對程序算法精簡改進提供了可能。</p>&
14、lt;p> 【針對第二點:用戶輸入錯誤問題】</p><p><b> >>改進思路:</b></p><p> 對每個數(shù)據(jù)輸入段代碼進行更深的研究與分析,明確變量的類型、可能的數(shù)值,然后進行分類判斷(if或switch語句),必要時借助for循環(huán)語句來控制程序進行,保障各模塊運行相對獨立,穩(wěn)定準確執(zhí)行各自功能。典型方法是如果輸入數(shù)據(jù)錯誤,通過
15、printf輸出問題,并用for或(do)while構(gòu)成循環(huán),直到用戶輸入正確為止。</p><p> 【針對第三點:程序功能完善問題】</p><p><b> >>改進思路:</b></p><p> ?。酃芾韱T對運動員的成績輸入]設(shè)計思路:將裁判的評給分數(shù)全部讀入,并且全部進行簡單的排序,通過去掉排序后首尾最高和最低分,求
16、出相應(yīng)的歌手的平均成績,再將平均值與每個裁判的打分進行比較,與平均值差值最大的定位此次打分中最不公平的裁判,與平均值差值最小的定為此次打分中最公平的裁判! </p><p> 第六部分:附錄(原程序)</p><p> #include<stdio.h></p><p> #include <math.h></p><
17、;p> #include <conio.h></p><p> #include<stdlib.h></p><p> struct test </p><p><b> { </b></p><p><b> int num; </b></p>
18、<p><b> float s; </b></p><p><b> };</b></p><p><b> main() </b></p><p><b> {</b></p><p> int i,j,k,bad,good;&l
19、t;/p><p> float ts,m,sum=0,aver=0,tm[10];</p><p> double min;</p><p> struct test score[10],*Judge[10],*temp;</p><p><b> do{ </b></p><p><b
20、> sum=0;</b></p><p><b> aver=0;</b></p><p> printf("請選擇:繼續(xù)請按1,退出請按2\n");</p><p> scanf("%f",&m);</p><p><b> if(m
21、==2)</b></p><p><b> exit(0);</b></p><p> for(i=0;i<10;i++) </p><p><b> {</b></p><p> printf("請第%d位評委打分\n",i+1);</p>
22、<p> score[i].num=i+1; </p><p> scanf("%f",&score[i].s); /*分數(shù)的輸入部分*/ </p><p> if(score[i].s>100||score[i].s<1)</p><p><b> {</b></p>
23、<p> printf("分數(shù)在1-100之間,請重新輸入\n");</p><p> scanf("%f",&score[i].s);</p><p><b> continue;</b></p><p><b> }</b></p>&l
24、t;p> if(score[0].s==0) </p><p><b> break;</b></p><p><b> } </b></p><p> for(i=0;i<10;i++)</p><p> tm[i]=score[i].s;
25、 </p><p> for(i=0;i<10;i++) </p><p> Judge[i]=&score[i];</p><p> for(i=0;i<9;i++) </p><p><b> {</b>&
26、lt;/p><p><b> k=i; </b></p><p> for(j=i+1;j<10;j++) </p><p> if(tm[k]<tm[j])</p><p><b> k=j; </b></p><p><b> if(k!=i)
27、 </b></p><p><b> {</b></p><p><b> ts=tm[i];</b></p><p> tm[i]=tm[k];</p><p><b> tm[k]=ts;</b></p><p> temp=J
28、udge[i];</p><p> Judge[i]=Judge[k];</p><p> Judge[k]=temp; </p><p> } /*對輸入分值進行排序*/</p><p><b> }</b></p><p> for(i=1;i<9;i++) </p>
29、;<p> sum+=Judge[i]->s;</p><p> aver=sum/8; /*計算平均值的部分*/ </p><p> printf("\n-----------------\n");</p><p> printf("該選手的平均分為:%.3f\n",aver);</p>
30、;<p> printf("-----------------\n"); </p><p> (fabs(Judge[0]->s-aver)>fabs(Judge[9]->s-aver))?(bad=0):(bad=9);/*通過絕對差值判斷與平均值相差最大的裁判*/ </p><p> min=fabs(Judge[5]->
31、s-aver);</p><p> good=5; /*暫定第六個為最公平裁判*/ </p><p> for(i=4;i>0;i--) </p><p><b> {</b></p><p> if((fabs(Judge[i]->s-aver))<=min)</p><p
32、><b> {</b></p><p> min=fabs(Judge[i]->s-aver);</p><p><b> good=i; </b></p><p><b> } </b></p><p><b> else </b>
33、</p><p><b> break;</b></p><p> } /*用拆半法先將前半部分與 min 比較*/</p><p> for(i=6;i<9;i++) </p><p><b> {</b></p><p> if((fabs(Judge[i
34、]->s-aver))<=min)</p><p><b> {</b></p><p> min=fabs(Judge[i]->s-aver);</p><p><b> good=i; </b></p><p><b> } </b></p&
35、gt;<p><b> else </b></p><p> break;
36、 </p><p> } /*用拆半法先將后半部分與 min 比較*/</p><p> printf("最不公平評委: 第%d位評委 他的打分: %.3f\n", Judge[bad]->num,Judge[bad]-&g
37、t;s);</p><p> /*打印出最不公平裁判和其分數(shù)*/ </p><p> printf("最公平評委:第%d位評委 他的打分: %.3f\n",Judge[good]->num,Judge[good]->s); </p><p> /*打印出最公平裁判和其分數(shù)*/</p><p> prin
38、tf("\n----------------------------------\n");</p><p> printf("請下一位選手上場:\n");</p><p> /*打印出下一位*/ </p><p> }while(1);</p><p><b> }</b>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設(shè)計報告—歌星大獎賽評分系統(tǒng)
- c語言課程設(shè)計之評分系統(tǒng)
- c語言課程設(shè)計--比賽評分系統(tǒng)的設(shè)計
- c課程設(shè)計報告歌星管理系統(tǒng)報告
- c語言程序設(shè)計課程設(shè)計---設(shè)計比賽評分系統(tǒng)
- 歌手大獎賽)
- 保齡球計分系統(tǒng)c語言課程設(shè)計
- 東方之星設(shè)計大獎賽
- 評分系統(tǒng)課程設(shè)計-微機接口課程設(shè)計報告
- 保齡球計分系統(tǒng)c語言課程設(shè)計 (2)
- 會計知識大獎賽試題
- 會計知識大獎賽試題
- 微機原理課程設(shè)計--求最大公約數(shù)和大獎賽計分程序
- 農(nóng)家菜肴大獎賽方案
- 宿州全民質(zhì)量知識大獎賽試題
- c語言課程設(shè)計報告
- c語言課程設(shè)計報告
- c語言課程設(shè)計報告
- c語言課程設(shè)計報告
- 2016年玉林氣排球大獎賽
評論
0/150
提交評論