




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、. z. . - .可修編 .*實踐教學(xué)*理工大學(xué)軟件學(xué)院2011年秋季學(xué)期計算機應(yīng)用根底課程設(shè)計題目: 運動會分數(shù)統(tǒng)計系統(tǒng) 專業(yè)班級: 軟件技術(shù)(2)班 *: *正翔 *: 11700215 指導(dǎo)教師: *墨逸成績:-. z.目 錄TOC o 1-3 h z uHYPERLINK l _Toc314151991摘要 PAGEREF _Toc314151991 h 1HYPERLINK l _Toc314151992運動會分數(shù)統(tǒng)計系統(tǒng) PAGEREF _Toc314151992 h 2HYPERLINK l _Toc3141519931 問題描述與分析 PAGEREF _Toc31415199
2、3 h 2HYPERLINK l _Toc3141519941.1 課程設(shè)計目的 PAGEREF _Toc314151994 h 2HYPERLINK l _Toc3141519951.2 系統(tǒng)需求分析 PAGEREF _Toc314151995 h 2HYPERLINK l _Toc3141519962總體設(shè)計 PAGEREF _Toc314151996 h 3HYPERLINK l _Toc3141519973 詳細設(shè)計 PAGEREF _Toc314151997 h 4HYPERLINK l _Toc3141519983.1 數(shù)據(jù)類型及重要變量的定義 PAGEREF _Toc314151
3、998 h 4HYPERLINK l _Toc3141519993.2 函數(shù)的設(shè)計和實現(xiàn) PAGEREF _Toc314151999 h 5HYPERLINK l _Toc3141520004 編碼 PAGEREF _Toc314152000 h 9HYPERLINK l _Toc3141520015 測試 PAGEREF _Toc314152001 h 13HYPERLINK l _Toc3141520026 課程設(shè)計總結(jié) PAGEREF _Toc314152002 h 18HYPERLINK l _Toc3141520036.1 調(diào)試中遇到的較重要問題回憶 PAGEREF _Toc3141
4、52003 h 18HYPERLINK l _Toc3141520046.2 算法的效率及改良設(shè)想 PAGEREF _Toc314152004 h 19HYPERLINK l _Toc314152005致謝 PAGEREF _Toc314152005 h 20HYPERLINK l _Toc314152006參考文獻 PAGEREF _Toc314152006 h 21HYPERLINK l _Toc314152007附錄 PAGEREF _Toc314152007 h 22-. z.摘 要C語言通常別稱為高級語言中的中級計算機語言。C語言由于它的可移植性和高效率,各種C語言編譯程序均可產(chǎn)生非
5、常緊湊、執(zhí)行快捷的目標碼。它比任何一種BASIC語言編譯程序的目標碼都緊湊、快速。這就要求有較高的理論水平,而且還要求有實際的動手能力。因此掌握C語言程序設(shè)計是學(xué)好軟件技術(shù)的第一步。本課程設(shè)計的主要目的是提高實踐能力,包括提高C語言的編程能力,長期以來,注重書本知識,輕視實際動手設(shè)計能力是教學(xué)中普遍存在的現(xiàn)象。進展課程設(shè)計的目的就是要改變這種狀況,使學(xué)習(xí)者既具有完備的理論知識,也能夠解決在實際學(xué)習(xí),生活工作中遇到的問題。學(xué)生應(yīng)該能夠把學(xué)習(xí)到的理論知識運用到實際中去,將知識轉(zhuǎn)變?yōu)閷嶋H的能力,同時通過這些理論知識和實際的應(yīng)用推動理論和實踐的開展。關(guān)鍵字:函數(shù),定義,子程序,文本編輯運動會分數(shù)統(tǒng)計系
6、統(tǒng)1 問題描述與分析1.1 課程設(shè)計目的為了穩(wěn)固我們數(shù)據(jù)構(gòu)造知識,加強我們的實際動手能力和提高我們綜合素質(zhì),提高我們對計算機軟件工程的認識學(xué)院組織我們進展了數(shù)據(jù)構(gòu)造課程設(shè)計。此次課程設(shè)計要到達以下幾點目的:1了解并掌握數(shù)據(jù)構(gòu)造與算法的設(shè)計方法,具備初步的獨立分析和設(shè)計能力。2提高程序設(shè)計和調(diào)試能力。學(xué)生通過上機實習(xí),驗證自己設(shè)計的算法的正確性。學(xué)會有效利用根本調(diào)試方法,迅速找出程序代碼中的錯誤并且修改。3培養(yǎng)算法分析能力。分析所設(shè)計算法的時間復(fù)雜度和空間復(fù)雜度,進一步提高程序設(shè)計水平。4初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計、程序編碼、測試等根本方法和技能。1.2 系統(tǒng)需求分析問題描述:參加
7、運動會有n個學(xué)校,學(xué)校編號為1n。比賽分成m個男子工程,和w個女子工程。工程編號為男子1m,女子m+1m+w。不同的工程取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學(xué)生自己設(shè)定。m=20,n=20。功能要求:1)可以輸入各個學(xué)校各個工程的前三名或前五名的成績;2)能統(tǒng)計各學(xué)??偡?;3)可以按學(xué)校編號或名稱、學(xué)校總分、男女團體總分排序輸出;4)可以按學(xué)校編號查詢學(xué)校*個工程的情況;可以按工程編號查詢?nèi)〉们叭蚯拔迕膶W(xué)校;5)數(shù)據(jù)存入文件并能隨時查詢;6)規(guī)定:輸入數(shù)據(jù)形式和*圍:可以輸入學(xué)校的名稱,運動工程的名稱。輸出形
8、式:有中文提示,各學(xué)校分數(shù)為整形。界面要求:有合理的提示,每個功能可以設(shè)立菜單,根據(jù)提示,可以完成相關(guān)的功能要求。2總體設(shè)計2.1 系統(tǒng)功能設(shè)計根據(jù)運動會分數(shù)統(tǒng)計系統(tǒng)問題的分析和設(shè)計要求,可以將該系統(tǒng)可以分為三個模塊:信息統(tǒng)計模塊、信息輸出模塊、信息查詢模塊,其系統(tǒng)功能構(gòu)造圖如圖1所示。1信息統(tǒng)計模實現(xiàn)信息的輸入、統(tǒng)計、存檔。2信息輸出模塊,實現(xiàn)信息的輸出。3信息查詢實現(xiàn)信息的查詢。運動會分數(shù)統(tǒng)計系統(tǒng)運動會分數(shù)統(tǒng)計系統(tǒng)信息查詢模塊信息輸出模塊信息查詢模塊信息輸出模塊 信息統(tǒng)計模塊 輸入信息分數(shù)統(tǒng)計信息存檔讀出數(shù)據(jù)數(shù)據(jù)存儲查詢信息輸入信息分數(shù)統(tǒng)計信息存檔讀出數(shù)據(jù)數(shù)據(jù)存儲查詢信息 圖1 . 系統(tǒng)功
9、能構(gòu)造圖2.2 函數(shù)構(gòu)造根據(jù)系統(tǒng)功能構(gòu)造圖的描述,可以構(gòu)造出該系統(tǒng)的幾個根本的函數(shù),其方法名和功能如表1所示。表1 函數(shù)功能表函數(shù)功能void inputinformation( )輸入和統(tǒng)計信息函數(shù)void output( )輸出信息函數(shù)void inquiry( )查詢信息函數(shù)void writedata( )數(shù)據(jù)存儲函數(shù)void readdata( )讀入數(shù)據(jù)函數(shù)3 詳細設(shè)計3.1 數(shù)據(jù)類型及重要變量的定義1定義運動工程數(shù)據(jù)類型,用于存放運動工程,包括工程編號、工程所取名次數(shù)、名次、分數(shù)。/定義工程結(jié)點的類型typedef struct int itemnum; /工程編號 int to
10、p; /工程取名次的數(shù)目,由用戶定義3或5 int range5; /名次 int mark5; /分數(shù)itemnode;2定義學(xué)校數(shù)據(jù)類型,用來存儲參賽學(xué)校信息,包括學(xué)校編號、學(xué)??偡?、男團總分、女團總分、工程數(shù)組。/定義學(xué)校結(jié)點類型typedef structint schoolnum; /學(xué)校編號 int score; /學(xué)??偡?int mscore; /男團體總分 int wscore; /女團體總分 itemnode cm+w; /工程數(shù)組schoolnode;3定義學(xué)校數(shù)組schoolnode hn。采用數(shù)組構(gòu)造有利于隨機的存儲和查詢。定義全局標志變量int flag1、flag
11、2,分別用以標志是否已經(jīng)向系統(tǒng)輸入了信息和標志系統(tǒng)中是否已經(jīng)存在信息。定義文件指針FILE * report,用來指向存檔的文件。3.2函數(shù)的設(shè)計和實現(xiàn)在概要設(shè)計中已經(jīng)對該系統(tǒng)涉及的抽象數(shù)據(jù)類型和函數(shù)及其功能做了說明,這里就不在對每個函數(shù)進展一一說明,只對其中比擬重要的功能模塊進展描述。1信息輸入及分數(shù)統(tǒng)計功能void inputinformation( )為輸入信息及分數(shù)統(tǒng)計函數(shù)。在輸入信息的同時進展分數(shù)的統(tǒng)計??梢暂斎敫鱾€學(xué)校各工程前三名或前五名的成績。在輸入學(xué)校的參賽工程時,結(jié)果取前三名還是前五名自己定,用一個選擇語句實現(xiàn)。利用swith語句前三名的分數(shù)賦為5、3、2,前五名的成績賦為7
12、,5、3、2、1,未取得成績則賦為0。并統(tǒng)計團體總分,男團總分和女團總分。其主要功能代碼如下:for(s=0;sk;s+) printf(*名次:); scanf(%d,&hi.cj.ranges); /輸入所獲名次信息 if(hi.cj.top=3) switch(hi.cj.ranges) case 0: hi.cj.marks=0; break;case 1: hi.cj.marks=5; break;case 2: hi.cj.marks=3; break;case 3: hi.cj.marks=2; break; else switch(hi.cj.ranges)case 0: hi
13、.cj.marks=0; break;case 1: hi.cj.marks=7; break;case 2: hi.cj.marks=5; break; case 3: hi.cj.marks=3; break; case 4: hi.cj.marks=2; break; case 5: hi.cj.marks=1; break; hi.score=hi.score+hi.cj.marks;2信息輸出功能void output( )為輸出函數(shù)。列出一個輸出目錄利用swich語句使函數(shù)按學(xué)校編號輸出或按學(xué)??偡?、男團總分、女團總分由高到低排序輸出。利用輔助數(shù)組remember和冒泡排序的方法使
14、之按分數(shù)的由高到低輸出。利用循環(huán)語句do while( )當(dāng)輸入2時返回輸出目錄,輸入0是跳出循環(huán)返回主菜單。其流程圖如圖2所示。否開場顯示選擇菜單否開場顯示選擇菜單輸入選項輸入選項按學(xué)??偡州敵霭磳W(xué)??偡州敵霭磁訄F體總分輸出按學(xué)校編號輸出按男子團體總分輸出按女子團體總分輸出按學(xué)校編號輸出按男子團體總分輸出是否跳出是否跳出是是跳出 完畢跳出 完畢圖2 輸出信息模塊流程圖3信息查詢功能void inquiry( )為查詢函數(shù)。列車一個查詢目錄利用swich 語句使函數(shù)按學(xué)校編號或工程編號查詢,輸出*學(xué)校的*個工程的得分情況或*個工程的前幾名的學(xué)校。再利用循環(huán)語句do while( )當(dāng)輸入2是
15、返回查詢目錄,輸入0時跳出循環(huán)返回主菜單。其程序流程圖如圖3所示。否開場跳出完畢是是否跳出按工程編號查詢按學(xué)校編號查詢輸入選項顯示選擇菜單否開場跳出完畢是是否跳出按工程編號查詢按學(xué)校編號查詢輸入選項顯示選擇菜單圖3 查詢信息模塊程序流程圖4主函數(shù)void main( )是主函數(shù)。列出主菜單,利用switch語句調(diào)用以上函數(shù)實現(xiàn)各個菜單的功能。想在每次查詢完畢想返回主菜單進展其它項時,應(yīng)在main( )函數(shù)中調(diào)用其它函數(shù)時再調(diào)用main( )函數(shù),如:switch(choice) case 1: printf(輸入信息:n);inputinformation();writedata();prin
16、tf(信息已存入檔案!);main(); case 2: printf(輸出信息:n);if(flag1)readdata();output();main();在進入主菜單后為了確保系統(tǒng)中已經(jīng)輸入了信息,用標志標量flag1和flag2來控制循環(huán)。如果系統(tǒng)中沒有任何信息,用戶就不能選擇輸入或查詢操作,此時會輸出提示信息,并返回主菜單。直到用戶輸入了信息或退出系統(tǒng)。其實現(xiàn)代碼如下:doprintf(=歡送使用=n); printf(nn*運動會分數(shù)統(tǒng)計系統(tǒng)*n); printf(nn*1.輸入信息*n); printf(*2.輸出信息*n); printf(*3.查詢信息*n); printf(
17、*4.退出系統(tǒng)*nnn); printf(=nn);printf(*請選擇要實現(xiàn)步驟的編號( 請確保已經(jīng)輸入信息! ):nn);scanf(%d,&choice);if(choice=4)break;else if(choice=1)flag1=0;else if(report=fopen(sportsdata.t*t,r)!=null )flag2=0;else system(cls);printf(nnnn系統(tǒng)中無任何信息!nn請先輸入信息!nnnn); while(flag1 & flag2);4 編碼信息輸出功能void output( )為輸出函數(shù)。列出一個輸出目錄利用swich語句
18、使函數(shù)按學(xué)校編號輸出或按學(xué)??偡?、男團總分、女團總分由高到低排序輸出。利用輔助數(shù)組remember和冒泡排序的方法使之按分數(shù)的由高到低輸出。利用循環(huán)語句do while( )當(dāng)輸入2時返回輸出目錄,輸入0是跳出循環(huán)返回主菜單。其流程圖如圖2所示。否開場顯示選擇菜單否開場顯示選擇菜單輸入選項輸入選項按學(xué)??偡州敵霭磳W(xué)??偡州敵霭磁訄F體總分輸出按學(xué)校編號輸出按男子團體總分輸出按女子團體總分輸出按學(xué)校編號輸出按男子團體總分輸出是否跳出是否跳出是是跳出 完畢跳出 完畢圖2 輸出信息模塊流程圖/信息輸出模塊,用來輸出信息,可以選擇按不同的方式輸出信息void output() int choice,i
19、,j,k;int remembern;int sign; do printf(*1.按學(xué)校編號輸出.*n); printf(*2.按學(xué)??偡州敵?*n); printf(*3.按男團總分輸出.*n); printf(*4.按女團總分輸出.*n); printf(nn* 請選擇編號*nn:); scanf(%d,&choice); switch(choice) case 1: /按編號順序輸出for(i=0;in;i+) printf(nn*學(xué)校編號:%dn,hi.schoolnum); printf(*學(xué)??偡?%dn ,hi.score); printf(*男團總分:%dn,hi.mscor
20、e); printf(*女團總分: %dnnn,hi.wscore); break; case 2: /按學(xué)校總分輸出 for(i=0;in;i+)rememberi=i; for(i=0;in;i+) for(j=i+1;jn;j+)if(hrememberi.scorehj.score)k=rememberi; rememberi=rememberj; rememberj=k; / 用冒泡排序方法,用輔助數(shù)組記住學(xué)校結(jié)點下標 for(i=0;in;i+) printf(nn*學(xué)校編號:%dn,hrememberi.schoolnum); printf(*學(xué)校總分:%dn ,hremembe
21、ri.score); printf(*男團總分:%dn,hrememberi.mscore); printf(*女團總分: %dnnn,hrememberi.wscore);/按所記下標順序輸出 break; case 3: /按男團總分輸出 for(i=0;in;i+) rememberi=i; for(i=0;in;i+) for(j=i+1;jn;j+)if(hrememberi.scorehj.score)k=rememberi; rememberi=rememberj; rememberj=k; for(i=0;in;i+) printf(nn*學(xué)校編號:%dn,hrememberi
22、.schoolnum); printf(*學(xué)??偡?%dn ,hrememberi.score); printf(*男團總分:%dn,hrememberi.mscore); printf(*女團總分: %dnnn,hrememberi.wscore); break; case 4: /按女團總分輸出 for(i=0;in;i+) rememberi=i; for(i=0;in;i+) for(j=i+1;jn;j+) if(hrememberi.scorehj.score)k=rememberi; rememberi=rememberj; rememberj=k; for(i=0;in;i+)
23、 printf(nn*學(xué)校編號:%dn,hrememberi.schoolnum); printf(*學(xué)??偡?%dn ,hrememberi.score); printf(*男團總分:%dn,hrememberi.mscore); printf(*女團總分: %dnnn,hrememberi.wscore); break; printf(請選擇 2 繼續(xù),0 跳出n); scanf(%d,&sign);while(sign=2); /循環(huán)執(zhí)行輸出語句5 測試運行程序,進入系統(tǒng)主菜單。用戶可以選擇輸入、輸出、查詢信息或退出系統(tǒng),界面如圖4所示。圖4 系統(tǒng)主界面1輸入信息輸入1得到進入輸入信息模
24、塊。根據(jù)系統(tǒng)提示將以下信息輸入系統(tǒng)中:學(xué)校編號1,工程編號1,取前5名,獲得1個名次,是第5名;工程編號2,取前3名,獲得3個名次,分別是1、2、3名。學(xué)校編號2,工程編號1,取前5名,獲得4個名次,分別是1、2、3、4名;工程編號2,取前5名,獲得0個名次。輸入信息后,會自動存檔,并提示存檔成功,然后自動返還主菜單,如圖5所示。圖5 信息成功輸入系統(tǒng)并存入了文檔 2輸出信息輸入2進入輸出信息模塊,該模塊分四項,分別代表一種輸出方式,如圖6所示。圖6 輸入信息模塊界面用戶可以按照自己的喜好,選擇一種方式輸入信息,輸入2返回輸出信息模塊,輸入0返回主菜單。如圖79分別是按照學(xué)校編號、學(xué)??偡?、女
25、團總分輸出的情況。圖7 按學(xué)校編號輸出圖8 按學(xué)??偡州敵鰣D9 按女團總分輸出3查詢信息輸入3進入信息查詢模塊,該模塊分為兩項,如圖10所示。圖10 信息查詢模塊用戶可以選擇不同菜單進展查詢,如圖11和圖12分別是按照學(xué)校編號和工程編號查詢的情況。圖11 按學(xué)校編號查詢圖12 按工程編號查詢4退出系統(tǒng)在主菜單下輸入4可以退出系統(tǒng),并有中文提示,如下圖。圖13 退出系統(tǒng)6課程設(shè)計總結(jié)6.1 調(diào)試中遇到的較重要問題回憶1提出問題:所有輸入輸出內(nèi)容只能在一屏內(nèi)顯示,學(xué)過c語言,很知道n是換行,f是換屏的,可是在這里就是無法實現(xiàn)。解決問題: 輸入clrscr();2提出問題:設(shè)置選項,供用戶輸入選擇時
26、,當(dāng)按任意鍵時都會跳入下一步操作,或者直接退出系統(tǒng)。分析問題:在供用戶選擇時,提供了幾個選項,就寫幾個case語句,但是當(dāng)用戶輸入的并不是這幾個數(shù)字時,系統(tǒng)就不能做出正確判斷。解決問題:修改case語句,添加default語句提示出錯,要求重新輸入。源代碼如下:Default:clrscr(); /*清屏*/printf(輸入錯誤,請重新選擇);3提出問題:用戶在系統(tǒng)主菜單上進展選擇時,假設(shè)沒有輸入任何初始信息,而選擇輸出或查詢操作,系統(tǒng)也會做出相應(yīng)操作。解決問題:增加標識變量作為循環(huán)終止變量,用來判斷系統(tǒng)中是否已經(jīng)輸入了信息。假設(shè)沒有就提示用戶先輸入信息。6.2算法的效率及改良設(shè)想算法的效率
27、:總的來講,嚴重影響執(zhí)行速度的便是查找,查找任意一個數(shù)據(jù),便要將其所在的構(gòu)造從頭至尾遍歷一次,消耗大量的時間。改良設(shè)想:因大局部顯示均是以學(xué)校為單位,所以將以由有關(guān)人的各種信息為集合的構(gòu)造改為以由有關(guān)學(xué)校的各種信息為集合的構(gòu)造。致 謝這次的程序?qū)嵲O(shè)計實驗是對我們進入大學(xué)以來學(xué)習(xí)程序設(shè)計語言結(jié)果的一次大檢驗。自己動手,自己發(fā)現(xiàn)和解決問題。發(fā)現(xiàn)了自己的許多缺乏。平時沒有掌握好的知識在這次實驗中徹底暴露出來,經(jīng)過不斷思考,不斷查閱資料和上機運行,解決其中大局部問題,當(dāng)然還存在一些問題沒有解決。我相信在以后的學(xué)習(xí)能夠解決好它們。通過本課題程序的設(shè)計、調(diào)試以及論文的編寫,我不僅提高了利用C語言編程及識錯
28、能力和撰寫論文的能力,而且它使我更加深入的了解到了計算機應(yīng)用根底這門課在現(xiàn)實生活中的重要性。在這次課程設(shè)計過程中遇到過一些問題,但經(jīng)過不懈努力,解決了局部,還有的現(xiàn)在不能解決,留待日后思考和解決。比方說在運用數(shù)據(jù)構(gòu)造排序的時候,方法的選擇上,總是想用時間復(fù)雜度小的算法,但結(jié)果出了問題,最后還是用了我們熟悉的選擇法排序。 在編寫之前,做整體規(guī)劃和詳細設(shè)計很重要。只有思路清晰,設(shè)計合理可行,編碼才有可能有的放矢,才能更加有效的完成任務(wù)。本次課程設(shè)計,對我來說可以算是一次挑戰(zhàn),因為在理論學(xué)習(xí)中沒有好好的掌握,現(xiàn)在要獨立完成一個較復(fù)雜的程序編寫,確實有一點困難。但我對于難度一向是以積極迎戰(zhàn)的態(tài)度來面對
29、,認真積極努力完成這次課程設(shè)計的任務(wù)。對我來說這是一次很好的時機,同時我也很好的把握了這次時機,認真的完成了此次的任務(wù),對自己今后在程序編寫方面以及文檔撰寫方面相信會有很大的幫助,在此也對學(xué)校安排這樣一次學(xué)習(xí)表示感謝,最后希望自己在數(shù)據(jù)構(gòu)造以及計算機的其他學(xué)習(xí)方面能夠得到很好的提高。參考文獻1王連相,C/C+程序設(shè)計教程,中國鐵道,20062譚浩強,C語言程序設(shè)計,清華大學(xué),19993譚浩強,C程序設(shè)計題解與上機指導(dǎo),清華大學(xué),19994王連相,C/C+程序設(shè)計上機指導(dǎo)與測試,中國鐵道,20065 C語言函數(shù)手冊,機械工業(yè),19996 C語言的實際應(yīng)用,*科學(xué)技術(shù),2000附錄程序:#incl
30、ude#include#include #include #define n 2/學(xué)校數(shù)目 #define m 1/男子工程數(shù)目 #define w 1/女子工程數(shù)目#define null 0int flag1=1;int flag2=1;/全局變量,用來標識是否已經(jīng)向系統(tǒng)輸入信息FILE *report;/定義工程結(jié)點的類型typedef struct int itemnum; /工程編號 int top; /工程取名次的數(shù)目,由用戶定義3或5 int range5; /名次 int mark5; /分數(shù)itemnode; /定義學(xué)校結(jié)點類型typedef structint school
31、num; /學(xué)校編號 int score; /學(xué)??偡?int mscore; /男團體總分 int wscore; /女團體總分 itemnode cm+w; /工程數(shù)組schoolnode;schoolnode hn;/定義一個學(xué)校結(jié)點數(shù)組/信息輸入模塊,用來輸入信息,建立系統(tǒng)void inputinformation() int i,j,k,s; for(i=0;in;i+) hi.score=0; hi.mscore=0; hi.wscore=0; /初始化各結(jié)點 for(i=0;in | hi.schoolnum=0);/輸入學(xué)校結(jié)點信息for(j=0;jm+w | hi.cj.it
32、emnum=0); do printf(*取前3名or前5名:); scanf(%d,&hi.cj.top);while(hi.cj.top!=3 & hi.cj.top!=5); printf(*獲得幾個名次:); scanf(%d,&k); /輸入工程信息 for(s=0;s5;s+) hi.cj.ranges=0, hi.cj.marks=0; /初始化排名和分數(shù) for(s=0;sk;s+) printf(*名次:); scanf(%d,&hi.cj.ranges); /輸入所獲名次信息 if(hi.cj.top=3) switch(hi.cj.ranges) case 0: hi.c
33、j.marks=0; break; case 1: hi.cj.marks=5; break; case 2: hi.cj.marks=3; break; case 3: hi.cj.marks=2; break; else switch(hi.cj.ranges) case 0: hi.cj.marks=0; break; case 1: hi.cj.marks=7; break; case 2: hi.cj.marks=5; break; case 3: hi.cj.marks=3; break; case 4: hi.cj.marks=2; break; case 5: hi.cj.ma
34、rks=1; break; hi.score=hi.score+hi.cj.marks;/按取前三名還是取前五名分別記分 if(j=m-1)hi.mscore=hi.mscore+hi.cj.marks;/是男子工程則記到男子分數(shù)里面去 else hi.wscore=hi.wscore+hi.cj.marks;/是女子工程則記到女子工程里面去 printf(n); /信息輸出模塊,用來輸出信息,可以選擇按不同的方式輸出信息void output() int choice,i,j,k;int remembern;int sign; do printf(*1.按學(xué)校編號輸出.*n); printf
35、(*2.按學(xué)??偡州敵?*n); printf(*3.按男團總分輸出.*n); printf(*4.按女團總分輸出.*n); printf(nn* 請選擇編號*nn:); scanf(%d,&choice); switch(choice) case 1: /按編號順序輸出for(i=0;in;i+) printf(nn*學(xué)校編號:%dn,hi.schoolnum); printf(*學(xué)??偡?%dn ,hi.score); printf(*男團總分:%dn,hi.mscore); printf(*女團總分: %dnnn,hi.wscore); break; case 2: /按學(xué)??偡州敵?f
36、or(i=0;in;i+)rememberi=i; for(i=0;in;i+) for(j=i+1;jn;j+)if(hrememberi.scorehj.score)k=rememberi; rememberi=rememberj; rememberj=k; / 用冒泡排序方法,用輔助數(shù)組記住學(xué)校結(jié)點下標 for(i=0;in;i+) printf(nn*學(xué)校編號:%dn,hrememberi.schoolnum); printf(*學(xué)??偡?%dn ,hrememberi.score); printf(*男團總分:%dn,hrememberi.mscore); printf(*女團總分:
37、 %dnnn,hrememberi.wscore);/按所記下標順序輸出 break; case 3: /按男團總分輸出 for(i=0;in;i+) rememberi=i; for(i=0;in;i+) for(j=i+1;jn;j+)if(hrememberi.scorehj.score)k=rememberi; rememberi=rememberj; rememberj=k; for(i=0;in;i+) printf(nn*學(xué)校編號:%dn,hrememberi.schoolnum); printf(*學(xué)??偡?%dn ,hrememberi.score); printf(*男團總
38、分:%dn,hrememberi.mscore); printf(*女團總分: %dnnn,hrememberi.wscore); break; case 4: /按女團總分輸出 for(i=0;in;i+) rememberi=i; for(i=0;in;i+) for(j=i+1;jn;j+) if(hrememberi.scorehj.score)k=rememberi; rememberi=rememberj; rememberj=k; for(i=0;in)printf(錯誤:這個學(xué)校沒有參加此次運動會!nnn); elseprintf(要查詢的工程編號:); scanf(%d,&j
39、); if(jm+w|j=0) printf(此次運動會沒有這個工程nnn);/學(xué)校編號超出*圍,則輸出警告 else printf(這個工程取前 %d名,該學(xué)校的成績?nèi)缦?n, h0.cj-1.top); for(k=0;km+w|s=0)printf(此次運動會不包括這個工程.nnn);/工程編號超出*圍則輸出警告elseprintf(該工程取前 %d名,取得名次的學(xué)校n,h0.cs-1.top);for(i=0; in;i+) for(j=0;j5;j+) if(hi.cs-1.rangej!=0) printf(學(xué)校編號:%d,名次:%dn,hi.schoolnum,hi.cs-1.rangej); /輸出該工程取得名次學(xué)校的成績 printf(nnn繼續(xù) 2,跳出 0n);scanf(%d,&i);printf(nnn);while(i=2); break;void writedata() /把數(shù)據(jù)存儲在文件中 /FILE *report; int i; if(report=fopen(sportsdata.t*t,w)=null) printf(文件不存在,不能翻開文件!n); e*it(1); for(i=0;in;i+)fwrite(&hi,sizeof(schoolnode),1,report); fclose(report);
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- JG/T 130-2007建筑門窗五金件單點鎖閉器
- DZ/T 0268-2014數(shù)字地質(zhì)數(shù)據(jù)質(zhì)量檢查與評價
- DZ/T 0151-1995區(qū)域地質(zhì)調(diào)查中遙感技術(shù)規(guī)定(1∶50 000)
- DZ/T 0083-1993核地球物理記刻度井標準
- DZ/T 0067-1993地質(zhì)勘探內(nèi)燃機車技術(shù)條件
- CJ/T 476-2015建筑機電設(shè)備抗震支吊架通用技術(shù)條件
- CJ/T 460-2014垃圾滾筒篩
- CJ/T 312-2009建筑排水管道系統(tǒng)噪聲測試方法
- CJ/T 259-2007城鎮(zhèn)燃氣用二甲醚
- CJ/T 103-1999城市生活垃圾全氮的測定半微量開氏法
- 2024年江蘇省常熟市事業(yè)單位公開招聘教師崗考試題帶答案分析
- 接處警規(guī)范化操作培訓(xùn)體系
- 2025年中考語文作文終極押題(附范文5篇)
- 水利水電工程科技創(chuàng)新與試題及答案
- 抗凝藥術(shù)前停用的指南
- 儲能集裝箱項目可行性研究報告(模板)
- 數(shù)控車工考試試題及答案
- 餐廳食品安全培訓(xùn)知識
- 25黃帝的傳說課件
- 2024年因公出國專項工作自查報告
- 2025甘肅省安全員C證考試(專職安全員)題庫及答案
評論
0/150
提交評論