




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-運(yùn)動會分?jǐn)?shù)統(tǒng)計(jì)運(yùn)動會分?jǐn)?shù)統(tǒng)計(jì)一、需求分析1、本演示程序中,可以輸入?yún)⒓舆\(yùn)動會的學(xué)校編號及項(xiàng)目編號,學(xué)校編號要求為1<<N,男子比賽項(xiàng)目編號要求為1M,女子比賽項(xiàng)目編號要求為M+1M+W;根據(jù)具體情況選擇輸入?yún)⒓禹?xiàng)目的男女類別和取成績名次類別;最后選擇輸入名次。2、演示程序以用戶和計(jì)算機(jī)對話方式進(jìn)行,即在計(jì)算機(jī)終端上顯示提示信息之后,由用戶輸入進(jìn)行查詢成績的操作:產(chǎn)生各學(xué)校的成績單,包括:各學(xué)校所取得的每項(xiàng)成績的項(xiàng)目號、名次(成績)、姓名和得產(chǎn)生團(tuán)體總分報(bào)表,內(nèi)容包括校號、男子團(tuán)體總分、女子團(tuán)子總分和團(tuán)體總分,然后進(jìn)行數(shù)據(jù)保存操作。3、本程序執(zhí)行命令包括:1)輸入比
2、賽數(shù)據(jù)2)查詢相關(guān)記錄3)顯示各學(xué)校的成績單4)顯示各校團(tuán)體總分報(bào)表4、 測試數(shù)據(jù)N=4,M=3,W=2,編號為奇數(shù)的項(xiàng)目取前五名,為偶數(shù)的項(xiàng)目取前三名。具體數(shù)據(jù)如下:輸入學(xué)校編號:1 2 4輸入項(xiàng)目編號:1 3 2性別選擇: 男 女 男取成績名次: 前3名 前5名 前3名名次選擇: 第1名 第4名 第2名二、概要設(shè)計(jì)1. 程序中所有數(shù)據(jù)類型有:int , struct , char , struct * , struct , char;2. 整形定義nsc學(xué)??倲?shù)msp男子項(xiàng)目總數(shù)wsp女子項(xiàng)目總數(shù)ntsp項(xiàng)目總數(shù)serial學(xué)校編號item得分項(xiàng)目range得分名次score得分成績ove
3、rgame已結(jié)束的項(xiàng)目編號menscore男子團(tuán)體總分womenscore女子團(tuán)體總分totalscore校團(tuán)體總分3. 本程序包含六個(gè)模塊:1)主程序模塊main ( ) 初始化; If(“命令”=“輸入”) 判斷數(shù)據(jù)是否合法;接受輸入數(shù)據(jù);數(shù)據(jù)處理運(yùn)算; If(“命令”=“查詢”)接受具體指令; 顯示相應(yīng)數(shù)據(jù);2)Input()比賽結(jié)果錄入3)Cout()范圍判斷4)School()各學(xué)校取得成績細(xì)表5)Overall()各校男、女及總團(tuán)體總分6)Calculate()數(shù)據(jù)處理4. 程序流程圖如下:Case2Y成績查詢N繼續(xù)查詢團(tuán)體總分N結(jié)束退出NY繼續(xù)輸出查詢學(xué)校成績Case1Case3
4、查詢各學(xué)校成績N輸入某項(xiàng)目各名次成績Y繼續(xù)輸入輸入學(xué)校及男女項(xiàng)目范圍YY輸入開始-初始化三、詳細(xì)設(shè)計(jì)1. 元素類型、變量、指針類型struct athletestruct /*參賽運(yùn)動員*/ char name20; char xingming20; /*姓名*/ int score; /*得分成績*/ int range; /*得分名次*/ int item; /*得分項(xiàng)目*/;struct schoolstruct /*參賽學(xué)校*/ int count; /*計(jì)算實(shí)際運(yùn)動員個(gè)數(shù)*/ int serial; /*學(xué)校編號*/ int menscore; /*男子團(tuán)體總分*/ int wome
5、nscore; /*女子團(tuán)體總分*/ int totalscore; /*團(tuán)體總分*/ struct athletestruct athleteMaxSize; /*參賽運(yùn)動員*/ struct schoolstruct *next; /*參賽學(xué)校*/;int nsc,msp,wsp; /*實(shí)際參賽學(xué)校個(gè)數(shù),男子、女子項(xiàng)目*/int ntsp; /*項(xiàng)目總數(shù)*/int i,j; /*循環(huán)控制變量*/int overgame; /*已結(jié)束的項(xiàng)目編號*/int serial,range; /*獲獎(jiǎng)的學(xué)校編號 & 獲獎(jiǎng)名次*/int n; /*用來判斷項(xiàng)目類型(奇&偶)*/struc
6、t schoolstruct *head,*pfirst,*psecond; /*用于開辟存儲區(qū)域*/int *phead=NULL,*pafirst=NULL,*pasecond=NULL; /*用于項(xiàng)目數(shù)組指針*/2. 輸入模塊,建立鏈表,然后存儲數(shù)據(jù)。包括學(xué)校、男女項(xiàng)目范圍、各項(xiàng)目成績及對輸入數(shù)據(jù)合法性判斷等。1) 輸入學(xué)校及項(xiàng)目的范圍并判斷輸入范圍合法性: Is_Star_DoMain: printf("n請輸入?yún)①悓W(xué)??倲?shù)(<= 20): "); scanf("%d",&nsc); if(nsc<=0|nsc>20)
7、printf("輸入錯(cuò)誤,請重新輸入!n"); goto Is_Star_DoMain; Is_Msp_DoMain:輸入男子項(xiàng)目總數(shù)并判斷男子項(xiàng)目范圍大小是否合法 Is_Wsp_DoMain:輸入女子項(xiàng)目總數(shù)并判斷女子項(xiàng)目范圍大小是否合法2) 輸入記錄:char answer; /*接受判斷所有項(xiàng)目是否結(jié)束:'y'結(jié)束,'n'沒結(jié)束*/ head = (struct schoolstruct *)malloc(sizeof(struct schoolstruct); head->next = NULL; pfirst = head;
8、/*工作指針*/ answer = 'y' while ( answer = 'y' ) Is_Game_DoMain: 提示用戶選擇取前三名還是前五名,奇數(shù)項(xiàng)為取五名,偶數(shù)項(xiàng)取前三名,判斷是否已經(jīng)輸入過或者是否超出范圍。 overgame = *pafirst; if ( pafirst != phead ) for ( pasecond = phead ; pasecond < pafirst ; pasecond + ) if ( overgame = *pasecond ) printf("n*此運(yùn)動項(xiàng)目已經(jīng)輸入過,請重新選擇其他項(xiàng)目序號
9、!n"); goto Is_Game_DoMain; pafirst = pafirst + 1; if ( overgame > ntsp|overgame<=0 ) printf("n沒有這樣的運(yùn)動項(xiàng)目!"); printf("n請重新輸入!"); goto Is_Game_DoMain; switch ( overgame%2 ) /*判斷奇偶性*/ case 0: n = 3;break; case 1: n = 5;break; for ( i = 1 ; i <= n ; i+ ) Is_Serial_DoMain
10、: printf("n請輸入第 %d名學(xué)校的編號(>0&<=%d): ",i,nsc); scanf("%d",&serial); if ( serial > nsc ) /*判斷是否存在該校*/ printf("n編號超出學(xué)??倲?shù)!n請重新輸入!"); goto Is_Serial_DoMain; if ( head->next = NULL ) /*建立第一個(gè)節(jié)點(diǎn)*/ create(); psecond = head->next ; /*遍歷指針*/ while ( psecond !
11、= NULL ) /*遍歷鏈表判斷是否已存在該校*/ if ( psecond->serial = serial ) pfirst = psecond; pfirst->count = pfirst->count + 1; goto Store_Data; else psecond = psecond->next; create();Store_Data:/*存儲數(shù)據(jù)*/ pfirst->athletepfirst->count.item = overgame; pfirst->athletepfirst->count.range = i; pf
12、irst->serial = serial; printf("請輸入學(xué)校名稱: "); scanf("%s",pfirst->athletepfirst->); printf("請輸入運(yùn)動員姓名: "); scanf("%s",pfirst->athletepfirst->count.xingming); 3. 計(jì)算統(tǒng)計(jì)模塊,通過遍歷鏈表,將各參賽學(xué)校的成績統(tǒng)計(jì)出來并存入結(jié)構(gòu)成員中,來修改鏈表中的數(shù)據(jù).判斷運(yùn)動項(xiàng)目奇偶性予以不通名字賦值: if ( pfirst-&
13、gt;athletei.item % 2 = 0 ) /*偶數(shù)項(xiàng)目*/ switch (pfirst->athletei.range) case 1:pfirst->athletei.score = 5;break; case 2:pfirst->athletei.score = 3;break; case 3:pfirst->athletei.score = 2;break; else /*奇數(shù)項(xiàng)目*/ switch (pfirst->athletei.range) case 1:pfirst->athletei.score = 7;break; case
14、 2:pfirst->athletei.score = 5;break; case 3:pfirst->athletei.score = 3;break; case 4:pfirst->athletei.score = 2;break; case 5:pfirst->athletei.score = 1;break; 計(jì)算男女項(xiàng)目的各自成績及團(tuán)體總成績: if ( pfirst->athletei.item <=msp ) /*男子項(xiàng)目*/ pfirst->menscore = pfirst->menscore + pfirst->athl
15、etei.score; else /*女子項(xiàng)目*/ pfirst->womenscore = pfirst->womenscore + pfirst->athletei.score; pfirst->totalscore = pfirst->menscore + pfirst->womenscore; pfirst = pfirst->next;4. 成績的輸入,即成績的查詢。1) 查詢單個(gè)學(xué)校的成績表。School()printf("請選擇要查詢的學(xué)校編號(1-%d):",nsc);pfirst = head->next;
16、psecond = head->next; while ( pfirst->next != NULL ) /*學(xué)校*/scanf("%d",&a); if(a<=0|a>nsc) printf("輸入學(xué)校編號超出范圍,請重新輸入!"); School(); 在小于總項(xiàng)目數(shù)范圍呢,從第一個(gè)項(xiàng)目開始察看是否有學(xué)校代碼與要察看的學(xué)校代碼相同的,如果有輸出。 printf("n編號為%d的學(xué)校的成績?nèi)缦拢簄",a); printf("n項(xiàng)目編號t運(yùn)動員姓名t名次t得分"); for (i=1
17、;i<=ntsp;i+) /*運(yùn)動員*/ for(j=1;j<=5;j+) if(pfirst->athletej.serial=a)printf("n%dtt%st%dt%dn",j,pfirst->athletepfirst->count.xingming, pfirst->athletej.range,pfirst->athletej.score); 2) 男女總分及團(tuán)體總分輸出。由于男女團(tuán)體總分,和團(tuán)體總分在計(jì)算過程中已經(jīng)計(jì)算完成,這里可以直接調(diào)用。Overall() printf("n比賽情況結(jié)果顯示:n學(xué)校編號
18、t學(xué)校名稱tt男子團(tuán)體總分t女子團(tuán)體總分t團(tuán)體總分"); pfirst = head->next; while ( pfirst->next != NULL ) printf("n %dtt %stt %dtt %dtt %d",pfirst->serial,pfirst->athletepfirst->,pfirst->menscore,pfirst->womenscore,pfirst->totalscore); pfirst = pfirst->next; pfirst = pfirs
19、t->next; 5. 主函數(shù)和其他函數(shù)算法。 main() /*主函數(shù):主函數(shù)很簡單,大部分是調(diào)用其他函數(shù)來實(shí)現(xiàn)功能的*/ 初始化 Firstout(); Inserts(); Firstout() printf("n*n"); printf("* 運(yùn)動會分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng) *n"); printf("*n"); printf("* 1.開始輸入數(shù)據(jù) *n"); printf("* 2.退出系統(tǒng) *n"); printf("*n"); printf("請選擇操作:
20、n"); i=getche(); switch(i)/*根據(jù)選擇進(jìn)行操作*/ 其他一些提示性操作6. 函數(shù)的調(diào)用關(guān)系圖反映了演示程序的層次結(jié)構(gòu):MainCputCalculateStartFirstoutFindSchoolOverallInsertsInputSceondoutIs_Star_DoMainIs_Wsp_DoMainIs_Msp_DoMainStore_DataIs_Game_DoMainIs_Serial_DoMain四、測試分析1. 調(diào)試中所遇到的較重要問題的回顧:1) 提出問題:所有輸入輸出內(nèi)容只能在一屏內(nèi)顯示,學(xué)過c語言,很知道”n”是換行,”f”是換屏的,可
21、是在這里就是無法實(shí)現(xiàn)。解決問題: 輸入clrscr();2)提出問題:設(shè)置選項(xiàng),供用戶輸入選擇時(shí),當(dāng)按任意鍵時(shí)都會跳入下一步操作,或者直接退出系統(tǒng)。分析問題:在供用戶選擇時(shí),提供了幾個(gè)選項(xiàng),就寫幾個(gè)case語句,但是當(dāng)用戶輸入的并不是這幾個(gè)數(shù)字時(shí),系統(tǒng)就不能做出正確判斷。解決問題:修改case語句,添加default語句提示出錯(cuò),要求重新輸入; Default: clrscr(); /*清屏*/ printf("輸入錯(cuò)誤,請重新選擇"); 3)提出問題:當(dāng)同一項(xiàng)目中有同一學(xué)校的兩個(gè)人時(shí),便不能正確輸出或者輸出相同人名。 分析問題:由于同時(shí)有兩個(gè)相同學(xué)校編號的人存在,系統(tǒng)在輸
22、出時(shí),不能確定那個(gè)是正確的,或者用后來的覆蓋以前的。 解決問題:用for函數(shù)實(shí)現(xiàn)從開始到結(jié)尾的遍歷。2. 算法的效率及改進(jìn)設(shè)想 算法的效率:總的來講,嚴(yán)重引響執(zhí)行速度的便是查找,查找任意一個(gè)數(shù)據(jù),便要將其所在的結(jié)構(gòu)從頭至尾遍歷一次,耗費(fèi)大量的時(shí)間。 改進(jìn)設(shè)想:因大部分顯示均是以學(xué)校為單位,所以將以由有關(guān)人的各種信息為集合的結(jié)構(gòu)改為以由有關(guān)學(xué)校的各種信息為集合的結(jié)構(gòu)。五、用戶手冊1) 運(yùn)行可執(zhí)行程序sport.exe;2) 出現(xiàn)提示:* 運(yùn)動會分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng) * 1.開始輸入數(shù)據(jù) * 2.退出系統(tǒng) *請選擇操作:選擇1,進(jìn)入數(shù)據(jù)錄入;3) 根據(jù)提示輸入學(xué)校個(gè)數(shù),男子項(xiàng)目個(gè)數(shù)及女子項(xiàng)目個(gè)數(shù),如果輸入
23、超出范圍,會出現(xiàn)提示:“輸入錯(cuò)誤,請重新輸入!”并返回重新輸入; 4) 出現(xiàn)如下提示:奇數(shù)項(xiàng)目取前五名偶數(shù)項(xiàng)目取前三名請輸入運(yùn)動項(xiàng)目序(<=ntsp)根據(jù)需要輸入項(xiàng)目編號; 如果輸入編號超出范圍,會提示“沒有這樣的運(yùn)動項(xiàng)目!請重新輸入!” ,如果該項(xiàng)目已經(jīng)輸入過,則提示:“此運(yùn)動項(xiàng)目已經(jīng)輸入過,請重新選擇其他項(xiàng)目序號!” ; 5) 根據(jù)屏幕提示輸入各個(gè)名次學(xué)校編號、學(xué)校名稱和運(yùn)動員姓名,如果輸入學(xué)校編號超出范圍會提示:“編號超出學(xué)??倲?shù)!n請重新輸入!”;特別說明:如果兩次對同一編號的學(xué)校輸入不通的校名,將保留后來輸入的校名; 6) 輸入完畢,提示用戶是否繼續(xù)輸入下一個(gè)項(xiàng)目數(shù)據(jù),“y”是
24、“n”否;7) 選擇否后進(jìn)入下一界面:* 運(yùn)動會分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng) * 1.成績查詢 * 2.全部重錄(重新開始) * * 3.退出 * *請選擇繼續(xù)操作:選擇1進(jìn)程成績查詢,選擇2返回2);8) 選擇1后進(jìn)入查詢選擇頁面:* 運(yùn)動會分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)查詢 * 1.各學(xué)校成績單 * 2.團(tuán)體總分 * 3.返回上一級 * 請選擇繼續(xù)操作:選擇1按學(xué)校編號進(jìn)行查詢,選擇2查詢學(xué)校男女團(tuán)體總分和團(tuán)體總分表,選擇3返回到上一界面;9) 選擇1后,提示用戶輸入查詢學(xué)校編號,輸入即顯示改校成績,包括項(xiàng)目編號、運(yùn)動員姓名、分?jǐn)?shù)和名次,并可根據(jù)提示選擇其他操作;* * 運(yùn)動會分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)-各學(xué)校成績查詢 * 1.繼續(xù)各學(xué)
25、校成績查詢 * 2.團(tuán)體總分查詢 * 3.返回上一級菜單 * 4.退出系統(tǒng) * 編號為%d的學(xué)校的成績?nèi)缦拢?項(xiàng)目編號 運(yùn)動員姓名 名次 得分 * * * * 10) 選擇2后,顯示各學(xué)校編號、男子團(tuán)體總分、女子團(tuán)子總分和團(tuán)體總分,并可根據(jù)提示選擇其他操作,顯示如下: * 運(yùn)動會分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)-團(tuán)體總分查詢 * 1.各學(xué)校成績查詢 * 2.返回上一級菜單 * 3.退出 * 比賽情況結(jié)果顯示:學(xué)校編號 學(xué)校名稱 男子團(tuán)體總分 女子團(tuán)體總分 團(tuán)體總分"* * * * *六、測試結(jié)果: 輸入學(xué)校數(shù)目:8,男子項(xiàng)目5,女子項(xiàng)目5; 輸入成績?nèi)缦拢海ㄗⅲ好螐淖笸乙来芜f增,其它同一)項(xiàng)目編號:
26、1 得分類型: 五級制取得名次12345學(xué)校編號12345學(xué)校名稱青島理工大學(xué)青島科技大學(xué)青島大學(xué)中國海洋大學(xué)石油大學(xué)項(xiàng)目編號:4 得分類型: 三級制學(xué)校編號461學(xué)校名稱中國海洋大學(xué)青島濱海學(xué)院青島理工大學(xué)項(xiàng)目編號:3 得分類型:五級制學(xué)校編號3178(10)2學(xué)校名稱青島大學(xué)青島理工大學(xué)青島職業(yè)學(xué)院萊陽農(nóng)學(xué)院青島科技大學(xué)項(xiàng)目編號:8 得分類型:三級制學(xué)校編號(0)362學(xué)校名稱 青島大學(xué)青島濱海學(xué)院青島科技大學(xué)項(xiàng)目編號:5 得分類型:五級制學(xué)校編號82144學(xué)校名稱萊陽農(nóng)學(xué)院青島科技大學(xué)青島理工大學(xué)中國海洋大學(xué)中國海洋大學(xué)項(xiàng)目編號:7 得分類型:五級制學(xué)校編號23517學(xué)校名稱青島科技大學(xué)
27、青島大學(xué)華東石油大學(xué)青島理工大學(xué)青島職業(yè)學(xué)院項(xiàng)目編號:6 得分類型:三級制學(xué)校編號353學(xué)校名稱青島大學(xué)華東石油大學(xué)青島大學(xué)輸入數(shù)據(jù)后所得的不同方式查詢的結(jié)果:1、 從主菜單起的路徑:1開始輸入數(shù)據(jù)進(jìn)行數(shù)據(jù)輸入繼續(xù)輸入數(shù)據(jù)1.查詢成績2.團(tuán)體總分查詢顯示結(jié)果如下:學(xué)校編號學(xué)校名男子團(tuán)體總分女子團(tuán)體總分團(tuán)體總分8萊陽農(nóng)學(xué)院9097青島職業(yè)學(xué)院3146青島濱海學(xué)院3365華東石油大學(xué)1674中國海洋大學(xué)100103青島大學(xué)1017272青島科技大學(xué)119201青島理工大學(xué)172192、從1顯示提示起的路徑:1.各學(xué)校成績查詢輸入學(xué)校編號查詢輸入編號:1項(xiàng)目編號學(xué)校名稱名次得分1青島理工大學(xué)173青
28、島理工大學(xué)254青島理工大學(xué)325青島理工大學(xué)337青島理工大學(xué)423. 從2顯示提示起的路徑:1.各學(xué)校成績查詢輸入學(xué)校編號查詢輸入編號:4項(xiàng)目編號學(xué)校名稱名次得分1中國海洋大學(xué)424中國海洋大學(xué)155中國海洋大學(xué)425中國海洋大學(xué)515. 從3顯示提示起的路徑:1.各學(xué)校成績查詢輸入學(xué)校編號查詢 輸入編號:9 輸入學(xué)校編碼超出范圍,請重新輸入!6. 從4顯示提示起的路徑4退出,退出系統(tǒng).七、心得體會在此次設(shè)計(jì)中,明顯感到自己所學(xué)知識不夠,而且運(yùn)用不是很熟練。在數(shù)據(jù)結(jié)構(gòu)分析和使用上還有待改進(jìn)和提高。在今后的學(xué)習(xí)中,一定得認(rèn)真學(xué)習(xí),多做練習(xí),多寫程序。對于指針的使用,由于之前在c語言的學(xué)習(xí)過程
29、中,沒有很好的掌握,在數(shù)據(jù)處理和調(diào)用過程中導(dǎo)致調(diào)用失敗,結(jié)果無法顯示.經(jīng)過幾天的學(xué)習(xí),對數(shù)據(jù)結(jié)構(gòu)的知識有了更深一步的了解,對c語言的知識也有了深一步的鞏固,知道了一個(gè)系統(tǒng)設(shè)計(jì)的大體步驟和方法,特別的是函數(shù)的調(diào)用問題有了更深的理解,由于調(diào)用的出現(xiàn)可以減少很多不必要的麻煩,可同時(shí)也造成了系統(tǒng)處理的緩慢.總之,作這個(gè)系統(tǒng)讓我收獲很多,給我將來的設(shè)計(jì)之路作好了很好的準(zhǔn)備. 八、附錄:程序原代碼如下:/*包含的頭文件有:*/#include <malloc.h> /*分配size個(gè)字節(jié)的內(nèi)存空間*/#include <stdio.h> /*輸入輸出函數(shù)*/#include <
30、;stdlib.h> /*動態(tài)存儲分配函數(shù)或其他函數(shù)*/#define NULL 0#define MaxSize 30/*變量的定義一:*/struct athletestruct /*參賽運(yùn)動員*/ char name20; int score; /*得分成績*/ int range; /*得分名次*/ int item; /*得分項(xiàng)目*/;struct schoolstruct /*參賽學(xué)校*/ int count; /*計(jì)算實(shí)際運(yùn)動員個(gè)數(shù)*/ int serial; /*學(xué)校編號*/ int menscore; /*男子團(tuán)體總分*/ int womenscore; /*女子團(tuán)體總
31、分*/ int totalscore; /*團(tuán)體總分*/ struct athletestruct athleteMaxSize; /*參賽運(yùn)動員*/ struct schoolstruct *next; /*參賽學(xué)校*/;/*變量的定義二:*/int nsc,msp,wsp; /*實(shí)際參賽學(xué)校個(gè)數(shù),男子項(xiàng)目,女子項(xiàng)目*/int ntsp; /*項(xiàng)目總數(shù)*/int i,j; /*循環(huán)控制變量*/int overgame; /*已結(jié)束的項(xiàng)目編號*/int serial,range; /*獲獎(jiǎng)的學(xué)校編號 & 獲獎(jiǎng)名次*/int n; /*用來判斷項(xiàng)目類型(奇&偶)*/struct
32、schoolstruct *head,*pfirst,*psecond; /*用于開辟存儲區(qū)域*/int *phead=NULL,*pafirst=NULL,*pasecond=NULL; /*用于項(xiàng)目數(shù)組指針*/*A:輸入模塊*/* 建立鏈表,然后存儲數(shù)據(jù)。*/ /*建立鏈表*/cput () Is_Star_DoMain: printf("n請輸入?yún)①悓W(xué)??倲?shù)(<= 20): "); scanf("%d",&nsc); if(nsc<=0|nsc>20) printf("輸入錯(cuò)誤,請重新輸入!n"); g
33、oto Is_Star_DoMain; Is_Msp_DoMain: printf("請輸入男子項(xiàng)目總數(shù)(<=30): "); scanf("%d",&msp); if(msp<=0|msp>30) printf("輸入錯(cuò)誤,請重新輸入!n"); goto Is_Msp_DoMain; Is_Wsp_DoMain: printf("請輸入女子項(xiàng)目總數(shù)(<=20): "); scanf("%d",&wsp); if(wsp<=0|wsp>20)
34、printf("輸入錯(cuò)誤,請重新輸入!n"); goto Is_Wsp_DoMain;input () char answer; /*接受判斷所有項(xiàng)目是否結(jié)束:'y'結(jié)束,'n'沒結(jié)束*/ head = (struct schoolstruct *)malloc(sizeof(struct schoolstruct); head->next = NULL; pfirst = head; /*工作指針*/ answer = 'y' while ( answer = 'y' ) Is_Game_DoMain:
35、 printf("n奇數(shù)項(xiàng)目取前五名n偶數(shù)項(xiàng)目取前三名"); printf("n請輸入運(yùn)動項(xiàng)目序號(<=%d):",ntsp); scanf("%d",pafirst); overgame = *pafirst; if ( pafirst != phead ) for ( pasecond = phead ; pasecond < pafirst ; pasecond + ) if ( overgame = *pasecond ) printf("n*此運(yùn)動項(xiàng)目已經(jīng)輸入過,請重新選擇其他項(xiàng)目序號!n")
36、; goto Is_Game_DoMain; pafirst = pafirst + 1; if ( overgame > ntsp|overgame<=0 ) printf("n沒有這樣的運(yùn)動項(xiàng)目!"); printf("n請重新輸入!"); goto Is_Game_DoMain; switch ( overgame%2 ) case 0: n = 3;break; case 1: n = 5;break; for ( i = 1 ; i <= n ; i+ ) Is_Serial_DoMain: printf("n請輸入
37、第 %d名學(xué)校的編號(>0&<=%d): ",i,nsc); scanf("%d",&serial); if ( serial > nsc ) /*判斷是否存在該校*/ printf("n編號超出學(xué)校總數(shù)!n請重新輸入!"); goto Is_Serial_DoMain; if ( head->next = NULL ) /*建立第一個(gè)節(jié)點(diǎn)*/ create(); psecond = head->next ; /*遍歷指針*/ while ( psecond != NULL ) /*遍歷鏈表判斷是否
38、已存在該校*/ if ( psecond->serial = serial ) pfirst = psecond; pfirst->count = pfirst->count + 1; goto Store_Data; else psecond = psecond->next; create();Store_Data: /*存儲數(shù)據(jù)*/ pfirst->athletepfirst->count.item = overgame; pfirst->athletepfirst->count.range = i; pfirst->serial =
39、serial; printf("請輸入學(xué)校名稱: "); scanf("%s",pfirst->athletepfirst->); printf("n是否是否繼續(xù)輸入運(yùn)動項(xiàng)目?(y&n) "); answer = getch(); printf("n"); /*B:計(jì)算統(tǒng)計(jì)模塊*/* 通過遍歷鏈表,將各參賽學(xué)校的成績統(tǒng)計(jì)出來并存入結(jié)構(gòu)成員中,來修改鏈表中的數(shù)據(jù)。*/*計(jì)算*/calculate() pfirst = head->next; while ( pfirst-
40、>next != NULL ) for (i=1;i<=pfirst->count;i+) if ( pfirst->athletei.item % 2 = 0 ) /*偶數(shù)項(xiàng)目*/ switch (pfirst->athletei.range) case 1:pfirst->athletei.score = 5;break; case 2:pfirst->athletei.score = 3;break; case 3:pfirst->athletei.score = 2;break; else /*奇數(shù)項(xiàng)目*/ switch (pfirst->athletei.range) case 1:pfirst->athletei.score = 7;break; case 2:pfirst->athletei.score = 5;break; case 3:pfirst->athletei.score = 3;break; case 4:pfirs
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 齒輪技術(shù)員崗位面試問題及答案
- 智能教學(xué)設(shè)備運(yùn)維師崗位面試問題及答案
- 知識圖譜工程師崗位面試問題及答案
- 湖南省邵東三中2025屆高一下化學(xué)期末監(jiān)測試題含解析
- 2025屆新疆昌吉市第九中學(xué)高一化學(xué)第二學(xué)期期末學(xué)業(yè)水平測試試題含解析
- 第六單元名著導(dǎo)讀《水滸傳》基本知識點(diǎn)梳理+2025-2026學(xué)年統(tǒng)編版語文九年級上冊
- 中子星吸積現(xiàn)象-洞察及研究
- 桐廬退役警犬管理辦法
- 北京社區(qū)規(guī)約管理辦法
- 材料安裝合同管理辦法
- 2025全員安全生產(chǎn)責(zé)任制范本
- 林業(yè)行政執(zhí)法培訓(xùn)
- 電大考試試題及答案商法
- 廣西壯族自治區(qū)柳州市上進(jìn)聯(lián)考2024-2025學(xué)年高一下學(xué)期6月期末聯(lián)合考試數(shù)學(xué)試題(含答案)
- 高中英語必背3500單詞表完整版
- 大連農(nóng)商銀行2024年招聘172人管理單位遴選500模擬題附帶答案詳解
- 安徽省工傷職工停工留薪期分類目錄
- 2019-2020學(xué)年湖南長沙長郡中學(xué)高一入學(xué)分班考試數(shù)學(xué)卷(常用)
- 職業(yè)安全衛(wèi)生知識競賽題
- SLAP損傷的治療課件
- 廣東省外語藝術(shù)職業(yè)學(xué)院后勤服務(wù)項(xiàng)目檢查評分標(biāo)準(zhǔn)
評論
0/150
提交評論