




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、2c語言課程實習報告學 院: 珠寶學院專 業(yè): 寶石及材料工藝學班 級: 141082學 號: 姓 名: 目錄第一部分:課程設計編號、名稱、內容第二部分:程序總體設計思路第三部分:程序功能劃分、圖示及流程圖第四部分:程序設計數據、運行結果第五部分:程序的優(yōu)缺點第六部分:程序改進思路第七部分:附錄(源程序)第一部分:課程設計編號、名稱、內容編號:二十一題名稱:歌星大獎賽內容:【要求】(1) 在歌星大獎賽中,有十個評委為參賽的選手打分,分數為1100分。選手最后得分為:去掉一個最高分和一個最低分后其余8個分數的平均植。請編寫一個程序實現。(2) 同時對評委評分進行裁判,即在10個評委中找出最公平(
2、即評分最接近平均分)和最不公平(即與平均分的差距最大)的評委?!咎崾尽恳弧?需求分析 這個問題的第一個要求算法十分簡單,但是要注意在程序中判斷最大、最小值的變量是如何賦值的。第二個要求為了考慮效率,要用到排序技術。第二部分:程序總體設計思路由于c語言是面對過程的語言,故我的設計思路是根據目標程序運行的過程來編寫的。王老師給我安排的是21題的歌星大獎賽,在編寫本程序的過程中,首先我借助購買的指導材料,了解了一些目標程序運行的次序與界面的操作方法,然后按照題目的具體要求進行思考和設計。因為老師抽簽給我的程序比較簡單,再加上前期實習時王老師交給的一些c的思路和方法,我很快便將整個程序的設計思路整理清
3、楚。具體的設計思路如下:程序的要求是根據十個評委對歌手的打分情況,求出這個歌手的平均成績和最公平及最不公平的裁判。首先,我先考慮到程序的數據輸入,可以用scanf函數來解決,并將輸入的數據存放于數組中。隨后對存放在數組中的數據進行排序,這步為執(zhí)行找出最不公平的裁判提高了效率,只需將排好序的數組的首尾分值與平均值進行比較即可。將排好序的數組中間的八個數求平均值即為此歌手的成績,可見排序法可大大的簡化程序。接下來是最后一個任務就是找最公平的裁判,此過程我使用拆半法,先將靠近中間的一個裁判假設為最公平的,再將他前面的裁判與之比較,找出前半部分的最公平的裁判,再將之與后半部分的進行比較,得出最終的最公
4、平的裁判。為了方便管理員更好的使用界面操作,我還設置了每輸入完一組數據并得到結果后,或接著輸入下組數據或按0跳出界面。整個程序的設計思路到此結束。第三部分:程序功能劃分、圖示及流程圖【功能模塊劃分及其流程圖】本程序功能模塊根據程序設計的需求,綜合程序的實用性、人性化、智能化的考慮,將程序劃分為6個部分分別編寫,程序主體功能將由這6個部分來完成。這6個部分依次是:1.分數的輸入部分;2.對分數進行的排序部分;3.計算平均值的部分;4.找出最不公平裁判部分;5.找出最公平裁判部分;6.數據的輸出部分總體設計: 歌星大獎賽評分系統(tǒng) 分數輸入分數排序計算平均分找出最不公平評委找出最公平評委數據輸出系統(tǒng)
5、功能模塊圖 第四部分:程序設計數據、運行結果本程序是一款應用軟件,故數據設計、程序運行結果應在程序的運用中得以體現,現在通過一個程序的運用事例來對數據設計、程序運行結果進行演示與實現:【軟件運用舉例】李明通過朋友介紹想了解裁判對某歌手的評分情況,于是到俱樂部管理員面前說明了意向,裁判部管理員啟動歌手大獎賽管理系統(tǒng)。程序開始界面如下:管理員管理員輸入評委對任意歌手的打分,輸入完畢后程序如下菜單界面: 管理員輸入輸入完畢后,按enter健,程序運行界面如下: 此程序顯示了裁判對歌手的平均分數,以及根據裁判們打分與平均分數間的差距判斷出的最公平和最不公平裁判的位置及打分! 為了向李明驗證程序的準確性
6、及公平與不公平裁判出現在每個裁判上的幾率,管理員又輸入了幾位歌手的打分 管理員輸入輸入完畢后,按enter健,程序運行界面如下: 接著又輸入一組數據后運行如下:當出現最高分的裁判和最低分的裁判各不止一個時,輸入數據后程序界面的運行如下:第五部分:程序的優(yōu)缺點【程序的優(yōu)點】算法是程序的靈魂,程序的優(yōu)點首先表現在算法上的優(yōu)點,其次才是功能上的。算法上的優(yōu)點主要體現在以下三點:1. 程序采用main主函數方式設計,程序的主體的功能大都由該功能完成。程序如此設計有利于程序的進一步改進及有助于程序執(zhí)行效率的提高。2. 程序對數據的讀寫采用了scanf 函數,此數據的讀取與存貯方式有利于磁盤數據的加密,即
7、無法用記事本等程序對數據文件進行正常讀取,即有助于數據的保護與加密。另外,對磁盤文本數據的修改有多種方式,通過對比研究發(fā)現,本程序采用scanf函數一次性把所有修改過的結構體數組寫入文本文件的修改方式,不僅克服了本次程序設計中文本文件不能順利準確讀取的難點,而且相較于傳統(tǒng)的fprintf()函數的寫入方式與創(chuàng)建臨時交換文件的寫入方式,寫入效率明顯提高。3. 程序執(zhí)行使用for語句,c語言中的for語句使用是最為靈活的。不僅可以用于循環(huán)次數已確定的情況,而且可以用于循環(huán)次數不確定而值給出循環(huán)結束條件的情況,他完全可以代替while語句!有助于相應功能準確高效運行。當然,程序的編寫白手寫起的,歷時
8、天,克服了非常多的困難,感覺到了很大的壓力。程序是在邊看書、邊查資料、詢問、長期思考與設計、調試、試驗的基礎上編寫出來的,在編寫程序的過程中,得到了許多的鍛煉,編程的思維也得以塑造。程序經過數次精簡,但仍然比較大,可能是編程經驗不足造成的,雖不能說本程序比一定他人與此相同的程序運行效率更高,占有資源更少,但是程序執(zhí)行的準確性還是能夠保障的。功能上的優(yōu)點主要體現在以下三點: 簡潔明了的程序菜單。程序主要采用了四組層次不同的菜單,相互獨立又相互聯系,巧妙相接,符合用戶的使用習慣與思維。 人性化的程序提示語言,程序提示語言較人性化,不僅大多為祈使語句、疑問句,而且提示明確,具有較強的明確的指導作用。
9、程序提示不僅層次分明,提示方式多樣,而且提示信息井然有序,更加有利于用戶順利、準確地看懂程序并進行操作。 程序采用先對裁判分數進行排序,再將排序后首尾的分數直接與平均值進行比較,得出最差裁判。即方便的讓用戶能看懂程序,又提高了計算的效率,減少了運算的次數.再如每次評判結果操作結束后,均會提示是否返回主菜單,并提示是否再進行類似輸入操作,這樣給用戶帶來了操作的方便,大大提高了評選的管理效率?!境绦虻娜秉c】主要表現在以下四點: 程序雖然經過多次精簡,但僅僅是形式上、小范圍的精簡,仍未得到本質上的精簡,即未找到更加簡單、更加高效、更加合理、更小占用的資源的算法。 程序仍然存在不合理的地方,例如程序某
10、些部分輸入錯誤會導致程序中止或轉向其他功能模塊,即程序建議用戶注意提示,進行合理的準確的輸入,這樣更有利于管理工作。 程序功能仍然不夠完善。例如程序不能根據多組數據的輸入判斷出總的最公平和最不公平的裁判,這是程序設計時所沒有考慮到了。到了程序編寫后期,經老師指導也發(fā)現了此錯誤,但卻沒有及時修改。 操作界面為dos界面,不符合時代潮流,也不符合現代用戶操作的習慣,信息表達方式不豐富,比較單一,缺少圖片、音樂等元化表達方式。第六部分:程序改進思路【針對第一點:程序算法精簡問題】改進思路:. 算法上除了采用結構體數組外,考慮在程序的算法設計上引入排序法,考察這樣對數據組織運算效率上是具有提高作用的。
11、. 就現有知識水平、經驗來看,對我來說,本程序的算法設計上已經是最精簡的了。c語言知識博大精深,有必要對c語言的專著進行研究學習,多閱讀別人的程序代碼、多動手實踐操作與設計,這樣便對程序算法精簡改進提供了可能?!踞槍Φ诙c:用戶輸入錯誤問題】改進思路:對每個數據輸入段代碼進行更深的研究與分析,明確變量的類型、可能的數值,然后進行分類判斷(if或switch語句),必要時借助for循環(huán)語句來控制程序進行,保障各模塊運行相對獨立,穩(wěn)定準確執(zhí)行各自功能。典型方法是如果輸入數據錯誤,通過printf輸出問題,并用for或(do)while構成循環(huán),直到用戶輸入正確為止。此功能本因在程序中得以體現,但因
12、對c語言編程掌握的不夠全面和深入,加上時間不太充分,此程序中沒有體現出來,是我編程工作中的失誤,再以后還需加深學習并改進!【針對第三點:程序功能完善問題】改進思路:管理員對運動員的成績輸入設計思路:將裁判的評給分數全部讀入,并且全部進行簡單的排序,通過去掉排序后首尾最高和最低分,求出相應的歌手的平均成績,再將平均值與每個裁判的打分進行比較,與平均值差值最大的定位此次打分中最不公平的裁判,與平均值差值最小的定為此次打分中最公平的裁判! 【針對第四點:操作界面單調問題】改進思路:c語言是面向過程的語言,當時語言開發(fā)的程序主要是面向dos用戶,雖具有較強的繪圖功能等等功能,但主要還是面向dos的。當
13、今的主流語言是面向對象的語言,開發(fā)的平臺大多為windows界面平臺,開發(fā)的程序也主要是windows組件基礎之上的圖形界面程序,故可將程序要求移植到vc+之上,借助vc+強大的功能,編寫windows界面程序,利用api接口函數方便調用各種windows強大功能,服務程序,使程序更加豐富、直觀、生動、高效。第七部分:附錄(原程序)#include #include #include struct test int num; float s; main() int i,j,k,bad,good; float ts,sum=0,aver=0,tm10; struct test data10,*p
14、10,*temp; do sum=0;aver=0;printf(input 10 sorces-input 0(exit)n); for(i=0;i10;i+) datai.num=i+1; scanf(%f,&datai.s); /*分數的輸入部分*/ if(data0.s=0) printf(0); for(i=0;i10;i+) tmi=datai.s; for(i=0;i10;i+) pi=&datai; 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
15、=pi;pi=pk;pk=temp; /*對輸入分值進行排序*/ for(i=1;is; aver=sum/8; /*計算平均值的部分*/ printf(n-n); printf(the aver is:%.1fn,aver); printf(-n); (fabs(p0-s-aver)fabs(p9-s-aver)?(bad=0):(bad=9); /*通過絕對差值判斷與平均值相差最大的裁判*/double min=fabs(p5-s-aver); good=5; /*暫定第六個為最公平裁判*/ for(i=4;i0;i-) if(fabs(pi-s-aver)s-aver); good=i; else break; /*用拆半法先將前半部分與min比較*/ for(i=6;is-aver)s-aver); good=i; else break; /*用拆半法先將后半部分與min比較*/printf(the worst
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 后現代別墅陳設搭配課件
- 證明房產的合同范本
- 建設工程索賠的概念學習情境六建筑工程索賠課件
- 2024-2025學年大冶市數學四年級第二學期期末經典模擬試題含解析
- 跨領域財務成本控制與預算編制的挑戰(zhàn)與對策
- 青海師范大學《半導體理論》2023-2024學年第二學期期末試卷
- 商丘學院《管理學通論》2023-2024學年第二學期期末試卷
- 上海紐約大學《普通話訓練》2023-2024學年第二學期期末試卷
- 2024-2025學年濰坊市奎文區(qū)小升初數學自主招生備考卷含解析
- 廣東省東莞市萬江區(qū)2025屆小升初易錯點數學檢測卷含解析
- 高中學生物理學情分析【3篇】
- 中考物理一輪復習策略與方法
- 祥云財富工業(yè)園區(qū)新建鐵路專用線工程環(huán)評報告
- 藥店換證材料
- 移動商務基礎(吳洪貴)課件 第二章 探秘移動技術
- 動畫劇本創(chuàng)作課件
- 【企業(yè)會計信息化存在的問題及解決對策開題報告】
- 痘痘肌膚的各種類型
- (完整版)設計管理
- 中國嚴重膿毒癥膿毒性休克治療指南2023年
- 材料性能學(第2版)付華課件0-緒論-材料性能學
評論
0/150
提交評論