C語言課程設計報告—歌星大獎賽評分系統.doc_第1頁
C語言課程設計報告—歌星大獎賽評分系統.doc_第2頁
C語言課程設計報告—歌星大獎賽評分系統.doc_第3頁
C語言課程設計報告—歌星大獎賽評分系統.doc_第4頁
C語言課程設計報告—歌星大獎賽評分系統.doc_第5頁
免費預覽已結束,剩余10頁可下載查看

下載本文檔

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

文檔簡介

C語言課程實習報告 課程名稱: 歌星大獎賽學 院: 信息工程學院專 業: 通信工程班 級: 學 號: 姓 名: 指導老師: 第一部分:課程設計編號、名稱、內容名稱:歌星大獎賽內容:【要求】(1) 在歌星大獎賽中,有十個評委為參賽的選手打分,分數為1100分。選手最后得分為:去掉一個最高分和一個最低分后其余8個分數的平均植。請編寫一個程序實現。(2) 同時對評委評分進行裁判,即在10個評委中找出最公平(即評分最接近平均分)和最不公平(即與平均分的差距最大)的評委。【提示】一、 需求分析 這個問題的第一個要求算法比較簡單,但是要注意在程序中判斷最大、最小值的變量是如何賦值的。第二個要求為了考慮效率,要用到排序技術。第二部分:程序總體設計思路由于C語言是面對過程的語言,故我的設計思路是根據目標程序運行的過程來編寫的。在編寫本程序的過程中,首先我借助購買的指導材料,了解了一些目標程序運行的次序與界面的操作方法,然后按照題目的具體要求進行思考和設計。具體的設計思路如下:程序的要求是根據十個評委對歌手的打分情況,求出這個歌手的平均成績和最公平及最不公平的裁判。首先,我先考慮到程序的數據輸入,可以用scanf函數來解決,并將輸入的數據存放于數組中。隨后對存放在數組中的數據進行排序,這步為執行找出最不公平的裁判提高了效率,只需將排好序的數組的首尾分值與平均值進行比較即可。將排好序的數組中間的八個數求平均值即為此歌手的成績,可見排序法可大大的簡化程序。接下來是最后一個任務就是找最公平的裁判,此過程我使用拆半法,先將靠近中間的一個裁判假設為最公平的,再將他前面的裁判與之比較,找出前半部分的最公平的裁判,再將之與后半部分的進行比較,得出最終的最公平的裁判。為了方便管理員更好的使用界面操作,我還設置了每輸入完一組數據并得到結果后,或接著輸入下組數據或按0跳出界面。整個程序的設計思路到此結束。第三部分:程序功能劃分、圖示及流程圖【功能模塊劃分及其流程圖】本程序功能模塊根據程序設計的需求,綜合程序的實用性、人性化、智能化的考慮,將程序劃分為6個部分分別編寫,程序主體功能將由這6個部分來完成。這6個部分依次是:1.分數的輸入部分;2.對分數進行的排序部分;3.計算平均值的部分;4.找出最不公平裁判部分;5.找出最公平裁判部分;6.數據的輸出部分總體設計: 歌星大獎賽評分系統 分數輸入分數排序計算平均分找出最不公平評委找出最公平評委數據輸出系統功能模塊圖程序流程系統的執行應從功能菜單的選擇開始,依據用戶的選擇來進行后續的處理,直到用戶選擇退出系統為止,其間應對用戶的選擇做出判斷及異常處理。系統的流程圖如下:開 始 開始菜 單 選 擇分 數 輸 入分 數 排 序去掉一個最高分,去掉一個最低分求 其 平 均 分各 個 分 數 與 平 均 分 比 較選出最不公平評委選出最公平評委數 據 輸 出繼 續 是 否結 束 程 序 流 程 圖第四部分:程序設計數據、運行結果本程序是一款應用軟件,故數據設計、程序運行結果應在程序的運用中得以體現,現在通過一個程序的運用事例來對數據設計、程序運行結果進行演示與實現:【軟件運用舉例】程序開始界面如下:管理員輸入評委對任意歌手的打分,輸入完畢后程序如下菜單界面:管理員輸入評委對任意歌手的打分,當輸入有誤后程序如下菜單界面: 此程序顯示了裁判對歌手的平均分數,以及根據裁判們打分與平均分數間的差距判斷出的最公平和最不公平裁判的位置及打分!當出現最高分的裁判和最低分的裁判各不止一個時,輸入數據后程序界面的運行如下:第五部分:程序改進思路【針對第一點:程序算法精簡問題】改進思路:. 算法上除了采用結構體數組外,考慮在程序的算法設計上引入排序法,考察這樣對數據組織運算效率上是具有提高作用的。. 就現有知識水平、經驗來看,對我來說,本程序的算法設計上已經是最精簡的了。C語言知識博大精深,有必要對C語言的專著進行研究學習,多閱讀別人的程序代碼、多動手實踐操作與設計,這樣便對程序算法精簡改進提供了可能。【針對第二點:用戶輸入錯誤問題】改進思路:對每個數據輸入段代碼進行更深的研究與分析,明確變量的類型、可能的數值,然后進行分類判斷(if或switch語句),必要時借助for循環語句來控制程序進行,保障各模塊運行相對獨立,穩定準確執行各自功能。典型方法是如果輸入數據錯誤,通過printf輸出問題,并用for或(do)while構成循環,直到用戶輸入正確為止。此功能本因在程序中得以體現,但因對C語言編程掌握的不夠全面和深入,加上時間不太充分,此程序中沒有體現出來,是我編程工作中的失誤,再以后還需加深學習并改進!【針對第三點:程序功能完善問題】改進思路:管理員對運動員的成績輸入設計思路:將裁判的評給分數全部讀入,并且全部進行簡單的排序,通過去掉排序后首尾最高和最低分,求出相應的歌手的平均成績,再將平均值與每個裁判的打分進行比較,與平均值差值最大的定位此次打分中最不公平的裁判,與平均值差值最小的定為此次打分中最公平的裁判! 第七部分:附錄(原程序)#include#include #include #includestruct test int num; float s; ;void main() int i,j,k,bad,good;float ts,m,sum=0,aver=0,tm10; double min;struct test score10,*Judge10,*temp;do sum=0;aver=0;printf(請選擇:繼續請按1,退出請按2n);scanf(%f,&m);if(m=2)exit(0); for(i=0;i100|scorei.s1) printf(分數在1-100之間,請重新輸入n); scanf(%f,&scorei.s); continue; if(score0.s=0) break; for(i=0;i10;i+)tmi=scorei.s; for(i=0;i10;i+) Judgei=&scorei;for(i=0;i9;i+) k=i; for(j=i+1;j10;j+) if(tmktmj)k=j; if(k!=i) ts=tmi;tmi=tmk;tmk=ts;temp=Judgei;Judgei=Judgek;Judgek=temp; /*對輸入分值進行排序*/for(i=1;is;aver=sum/8; /*計算平均值的部分*/ printf(n-n);printf(該選手的平均分為:%.3fn,aver);printf(-n); (fabs(Judge0-s-aver)fabs(Judge9-s-aver)?(bad=0):(bad=9);/*通過絕對差值判斷與平均值相差最大的裁判*/ min=fabs(Judge5-s-aver);good=5; /*暫定第六個為最公平裁判*/ for(i=4;i0;i-) if(fabs(Judgei-s-aver)s-aver);good=i; else break; /*用拆半法先將前半部分與 min 比較*/for(i=6;is-aver)s-aver);good=i; else break; /*用拆半法先將后半部分與 min 比較*/printf(最不公平評委: 第%d位評委 他的打分: %.3fn, Judgebad-n

溫馨提示

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

評論

0/150

提交評論