




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、C語言課程設(shè)計(jì)報(bào)告學(xué) 院: 專 業(yè): 班 級: 學(xué) 號: 姓 名: 指導(dǎo)老師: 目錄第一部分:序言.第二部分:課程設(shè)計(jì)名稱及題目要求.第三部分:程序總體設(shè)計(jì)思路第四部分:詳細(xì)設(shè)計(jì)和流程圖第五部分:上機(jī)操作及程序運(yùn)行結(jié)果第六部分:結(jié)束語第七部分:附錄(原程序)第一部分:序言課程設(shè)計(jì)是學(xué)習(xí)程序設(shè)計(jì)語言中的一個(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)告形式形
2、成此次課程設(shè)計(jì)的最終成果。第一部分為上機(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è)評委為參賽的選手打分,分?jǐn)?shù)為1100分。選手最后得分為:去掉一個(gè)最高分和一個(gè)最低分后其余8個(gè)分?jǐn)?shù)的平均植。請編寫一個(gè)程序?qū)崿F(xiàn)。(2) 同時(shí)對評委評分進(jìn)行裁判,即在10個(gè)評委中找出最公平(即評分最接近平均分)和最不公平(即與平均分的差距最大)的評委?!咎崾尽恳?、 需求分析 這個(gè)問題的第一個(gè)要求算法十分簡單,但是要注意在程序中判斷最大、最小值的變量是
4、如何賦值的。第二個(gè)要求為了考慮效率,要用到排序技術(shù)。第三部分:程序總體設(shè)計(jì)思路對于我所做的題目,我是采用根據(jù)目標(biāo)程序運(yùn)行的過程的方法來編寫的。此種方法較為簡單明了,容易理解接受,屬常規(guī)思維,但是不夠精簡,有進(jìn)一步改進(jìn)的空間。我所做的是21題:歌星大獎(jiǎng)賽。首先我學(xué)習(xí)了C語言課程設(shè)計(jì)與學(xué)習(xí)指導(dǎo)的相關(guān)內(nèi)容,再在以前所學(xué)C語言和C+的基礎(chǔ)上,以及在老師的指導(dǎo)、同學(xué)的幫助指正下,借助購買的指導(dǎo)材料,了解了一些目標(biāo)程序運(yùn)行的次序與界面的操作方法后,我按照題目的具體要求進(jìn)行了思考和設(shè)計(jì),具體設(shè)計(jì)思路為:程序的要求是根據(jù)十個(gè)評委對歌手的打分情況,求出這個(gè)歌手的平均成績和最公平及最不公平的裁判。首先,我先考慮到
5、程序的數(shù)據(jù)輸入,可以用scanf函數(shù)來解決,并將輸入的數(shù)據(jù)存放于數(shù)組中。隨后對存放在數(shù)組中的數(shù)據(jù)進(jìn)行排序,這步為執(zhí)行找出最不公平的裁判提高了效率,只需將排好序的數(shù)組的首尾分值與平均值進(jìn)行比較即可。將排好序的數(shù)組中間的八個(gè)數(shù)求平均值即為此歌手的成績,可見排序法可大大的簡化程序。接下來是最后一個(gè)任務(wù)就是找最公平的裁判,此部分我接受了同學(xué)的建議,使用拆半法,先將靠近中間的一個(gè)裁判假設(shè)為最公平的,再將他前面的裁判與之比較,找出前半部分的最公平的裁判,再將之與后半部分的進(jìn)行比較,得出最終的最公平的裁判。為了方便管理員更好的使用界面操作,我還設(shè)置了每輸入完一組數(shù)據(jù)并得到結(jié)果后,或接著輸入下組數(shù)據(jù)或按0跳出
6、界面。整個(gè)程序的設(shè)計(jì)思路到此結(jié)束。第四部分:詳細(xì)設(shè)計(jì)和流程圖【功能模塊劃分及其流程圖】本程序功能模塊根據(jù)程序設(shè)計(jì)的需求,綜合程序的實(shí)用性、人性化、智能化的考慮,將程序劃分為6個(gè)部分分別編寫,程序主體功能將由這6個(gè)部分來完成。這6個(gè)部分依次是:1.分?jǐn)?shù)的輸入部分;采用數(shù)組和指針,將10個(gè)裁判對于同一個(gè)選手的打分分別輸入并存放于指針?biāo)傅牡刂分?,以便后面調(diào)用和輸出。2.對分?jǐn)?shù)進(jìn)行的排序部分; 將輸入的10個(gè)分?jǐn)?shù)按照從低到高的順序排成一列,以便方便接下來計(jì)算選手得分,以及找出最公平和最不公平裁判。3.計(jì)算平均值的部分; 將排序好的分?jǐn)?shù)去掉第一個(gè)和最后一個(gè),再將剩下8個(gè)求和之后除以8,便是選手的最終得
7、分。4.找出最不公平裁判部分; 使用拆半法,先將靠近中間的一個(gè)裁判假設(shè)為最公平的,再將他前面的裁判與之比較,找出前半部分的最不公平的裁判,再將之與后半部分的進(jìn)行比較,得出最終的最不公平的裁判。5.找出最公平裁判部分;使用拆半法,先將靠近中間的一個(gè)裁判假設(shè)為最公平的,再將他前面的裁判與之比較,找出前半部分的最公平的裁判,再將之與后半部分的進(jìn)行比較,得出最終的最公平的裁判。6.數(shù)據(jù)的輸出部分總體設(shè)計(jì): 歌星大獎(jiǎng)賽評分系統(tǒng) 分?jǐn)?shù)輸入分?jǐn)?shù)排序計(jì)算平均分找出最不公平評委找出最公平評委數(shù)據(jù)輸出開始主函數(shù)流程圖: 顯示一系列功能選項(xiàng)輸入n,判斷n是否是09? N結(jié)束根據(jù)n的值調(diào)用各功能模塊函數(shù)程序#incl
8、ude <stdio.h>#include <math.h>#include <conio.h>struct test int num; float s;void main() int i,j,k,bad,good; float ts,sum=0,min,average=0,tm10; struct test a10,*p10,*temp; do sum=0;average=0;printf("Input 10 sorces-input 0(exit)n"); for(i=0;i<10;i+) ai.num=i+1; scanf(&
9、quot;%f",&ai.s); /*分?jǐn)?shù)的輸入部分*/ if(a0.s=0) exit(0); for(i=0;i<10;i+) tmi=ai.s; for(i=0;i<10;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=pi;pi=pk;pk=temp; /*對輸入分值進(jìn)行排序*/ for(i=1;i<9;i+) sum+=pi->s; average=sum
10、/8; /*計(jì)算平均值的部分*/ printf("n-n"); printf("The average is:%.1fn",average); printf("-n"); (fabs(p0->s-average)>fabs(p9->s-average)?(bad=0):(bad=9); /*通過絕對差值判斷與平均值相差最大的裁判*/ min=fabs(p5->s-average); good=5; /*暫定第六個(gè)為最公平裁判*/ for(i=4;i>0;i-) if(fabs(pi->s-avera
11、ge)<=min) min=fabs(pi->s-average); good=i; else break; /*用拆半法先將前半部分與min比較*/ for(i=6;i<9;i+) if(fabs(pi->s-average)<=min) min=fabs(pi->s-average); good=i; else break; /*用拆半法先將后半部分與min比較*/printf("The worst 裁判 is %d and the sorce is %.1fn", pbad->num,pbad->s); /*打印出最不公
12、平裁判和其分?jǐn)?shù)*/ printf("The best 裁判 is %d and the sorce is %.1fn", pgood->num,pgood->s); /*打印出最公平裁判和其分?jǐn)?shù)*/ printf("n-n"); printf("下一選手得分:"); /*打印出下一位*/ while(1);/* getch(); */ 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)用事例來對數(shù)據(jù)設(shè)計(jì)、程序運(yùn)行結(jié)果進(jìn)行演示與實(shí)現(xiàn):
13、現(xiàn)在假設(shè)要求某一選手的得分情況,則在下面所示的界面里輸入10位裁判對于該選手的打分:輸入10位裁判對于該選手的打分,如下面界面所示:輸入輸入完畢后,按Enter健回車,程序運(yùn)行界面如下: 此程序顯示了歌手的最后得分,以及根據(jù)裁判們打分與最后得分之間的差距判斷出的最公平和最不公平裁判的位置及打分! 為了驗(yàn)證程序的準(zhǔn)確性及公平與不公平裁判出現(xiàn)在每個(gè)裁判上的幾率,又輸入了幾位歌手的打分,如下所示: 輸入輸入完畢后,按Enter健回車,程序運(yùn)行界面如下: 接著又輸入一組數(shù)據(jù)后運(yùn)行如下:當(dāng)出現(xiàn)最高分的裁判和最低分的裁判各不止一個(gè)時(shí),輸入數(shù)據(jù)后程序界面的運(yùn)行如下:第六部分:結(jié)束語一:程序的優(yōu)缺點(diǎn);算法是程
14、序的靈魂,程序的優(yōu)點(diǎn)首先表現(xiàn)在算法上的優(yōu)點(diǎn),其次才是功能上的。算法上的優(yōu)點(diǎn)主要體現(xiàn)在以下三點(diǎn):1. 程序采用main主函數(shù)方式設(shè)計(jì),程序的主體的功能大都由該功能完成。程序如此設(shè)計(jì)有利于程序的進(jìn)一步改進(jìn)及有助于程序執(zhí)行效率的提高。2. 程序執(zhí)行使用for語句,C語言中的for語句使用是最為靈活的,而他完全可以代替while語句!有助于相應(yīng)功能準(zhǔn)確高效運(yùn)行。3. 程序?qū)?shù)據(jù)的讀寫采用了scanf 函數(shù),此數(shù)據(jù)的讀取與存貯方式有利于磁盤數(shù)據(jù)的加密,即無法用記事本等程序?qū)?shù)據(jù)文件進(jìn)行正常讀取,有助于數(shù)據(jù)的保護(hù)與加密。另外,本程序采用scanf函數(shù)一次性把所有修改過的結(jié)構(gòu)體數(shù)組寫入文本文件的修改方式,不
15、僅克服了本次程序設(shè)計(jì)中文本文件不能順利準(zhǔn)確讀取的難點(diǎn),而且相較于傳統(tǒng)的fprintf()函數(shù)的寫入方式與創(chuàng)建臨時(shí)交換文件的寫入方式,寫入效率明顯提高。功能上的優(yōu)點(diǎn)主要體現(xiàn)在以下三點(diǎn):1. 簡潔明了的程序菜單。2. 人性化的程序提示語言,程序提示語言較人性化,不僅大多為祈使語句、疑句,而且提示明確,具有較強(qiáng)的明確的指導(dǎo)作用。3. 程序采用先對裁判分?jǐn)?shù)進(jìn)行排序,再將排序后首尾的分?jǐn)?shù)直接與平均值進(jìn)行比較,得出最差裁判?!境绦虻娜秉c(diǎn)】主要表現(xiàn)在以下四點(diǎn):1. 程序雖然經(jīng)過多次精簡,但僅僅是形式上、小范圍的精簡,仍未得到本質(zhì)上的精簡,未找到更加簡單、更加高效、更加合理、更小占用的資源的算法。2. 程序仍
16、然存在不合理的地方,仍需進(jìn)一步改進(jìn)。3. 程序功能仍然不夠完善。二:收獲與體會(huì);為了編寫這個(gè)程序我用了很多天時(shí)間,克服了非常多的困難,感覺到了很大的壓力。程序是在邊看書、邊查資料、詢問、長期思考與設(shè)計(jì)、調(diào)試、試驗(yàn)的基礎(chǔ)上編寫出來的,在編寫程序的過程中,得到了許多的鍛煉,編程的思維也得以塑造。有的地方我自己編不出來,多虧了同學(xué)的幫忙與指導(dǎo)。第二部分的折半法我原本沒有采用,可是總是編不出來,最后不得已只有采用這個(gè)方法。這次課程設(shè)計(jì)讓我收獲很多,首先以前學(xué)的C知識得到了加強(qiáng)與鞏固;其次收獲了很多新知識,編程的方法、思路以及思維模式等;最后,通過此次課程設(shè)計(jì),我發(fā)現(xiàn)了自己仍然存在很多的不足,基礎(chǔ)知識大
17、的并不扎實(shí),需要進(jìn)一步學(xué)習(xí)和復(fù)習(xí)鞏固。感謝老師一個(gè)多星期以來對我們的指導(dǎo)以及辛勤的工作與付出!第七部分:附錄(原程序)#include <stdio.h>#include <math.h>#include <conio.h>struct test int num; float s;void main() int i,j,k,bad,good; float ts,sum=0,min,average=0,tm10; struct test a10,*p10,*temp; do sum=0;average=0;printf("Input 10 sorce
18、s-input 0(exit)n"); for(i=0;i<10;i+) ai.num=i+1; scanf("%f",&ai.s); /*分?jǐn)?shù)的輸入部分*/ if(a0.s=0) exit(0); for(i=0;i<10;i+) tmi=ai.s; for(i=0;i<10;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=pi;pi=pk;pk=temp; /*對輸入分值進(jìn)行排序*/ for(i=1;i<9;i+) sum+=pi->s; average=sum/8; /*計(jì)算平均值的部分*/ printf("n-n"); printf("The average is:%.1fn",average); printf("-n"); (fabs(p0->s-average)>fabs(p9->s-average)?(bad=0):(bad=9); /*通過
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度冷鏈物流配送冷庫租賃及供應(yīng)鏈服務(wù)合同
- 中國其他日用品零售行業(yè)分析報(bào)告
- 2025年度企業(yè)員工工資協(xié)議書及員工培訓(xùn)與發(fā)展基金協(xié)議
- 科技引領(lǐng)下企業(yè)的多元化發(fā)展策略
- 中國DVR行業(yè)市場深度分析及未來發(fā)展趨勢預(yù)測報(bào)告
- 2025年聚烯烴塑料瓶項(xiàng)目投資可行性研究分析報(bào)告
- 健康評估合同范本
- 物流2014年工作計(jì)劃
- 2025年中國大眾餐飲行業(yè)市場全景評估及發(fā)展趨勢研究預(yù)測報(bào)告
- 2025年竹藤農(nóng)具項(xiàng)目投資可行性研究分析報(bào)告
- DL∕T 712-2010 發(fā)電廠凝汽器及輔機(jī)冷卻器管選材導(dǎo)則
- (2024年秋季版)2024年七年級道德與法治下冊 4.9.1 生活需要法律教案 新人教版
- 血液透析安全注射臨床實(shí)踐專家共識解讀課件
- 2024年湖南大眾傳媒職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫附答案
- 旅游學(xué)概論(第五版)課件 第一章 旅游學(xué)概述
- 學(xué)生課后服務(wù)活動(dòng)記錄表
- 義務(wù)教育信息科技課程標(biāo)準(zhǔn)(2022年版)解讀
- CRRT的精細(xì)化護(hù)理
- 部編小學(xué)語文單元作業(yè)設(shè)計(jì)一年級下冊第二單元
- (高清版)DZT 0282-2015 水文地質(zhì)調(diào)查規(guī)范(1:50000)
- 七字押韻祭文范文六篇
評論
0/150
提交評論