運動會分數(shù)統(tǒng)計系統(tǒng) 數(shù)據結構課程設計

上傳人:無*** 文檔編號:133625851 上傳時間:2022-08-10 格式:DOC 頁數(shù):19 大?。?66KB
收藏 版權申訴 舉報 下載
運動會分數(shù)統(tǒng)計系統(tǒng) 數(shù)據結構課程設計_第1頁
第1頁 / 共19頁
運動會分數(shù)統(tǒng)計系統(tǒng) 數(shù)據結構課程設計_第2頁
第2頁 / 共19頁
運動會分數(shù)統(tǒng)計系統(tǒng) 數(shù)據結構課程設計_第3頁
第3頁 / 共19頁

本資源只提供3頁預覽,全部文檔請下載后查看!喜歡就下載吧,查找使用更方便

10 積分

下載資源

資源描述:

《運動會分數(shù)統(tǒng)計系統(tǒng) 數(shù)據結構課程設計》由會員分享,可在線閱讀,更多相關《運動會分數(shù)統(tǒng)計系統(tǒng) 數(shù)據結構課程設計(19頁珍藏版)》請在裝配圖網上搜索。

1、精品文檔,僅供學習與交流,如有侵權請聯(lián)系網站刪除 石家莊經濟學院 華信學院 課程設計報告 學 院: 專 業(yè): 班 級: 學 號: 姓 名: 運動會分數(shù)統(tǒng)計系統(tǒng)的設計與實現(xiàn) 一.問題描述 大學作為一個提供學生全面發(fā)展的高等教育機構,不僅要培養(yǎng)學生的學習能力,而且更要注重學生的德智體美全面

2、發(fā)展。在大學中有很多豐富多彩的比賽和活動,例如運動會,演講比賽,歌唱比賽,書法比賽等,在比賽和競爭中,我們的這些素質和能力更容易得到培養(yǎng)提升。但是比賽最后的分數(shù)統(tǒng)計和查詢往往是舉辦者頭疼的事情,分數(shù)的統(tǒng)計和查詢需要快速準確,因此我們設計了這個運動會分數(shù)統(tǒng)計系統(tǒng),以方便分數(shù)的統(tǒng)計查詢。 參加運動會的n個學校編號為1~n。比賽分成m個男子項目和w個女子項目,項目編號分別為1~m和m+1~m+w。由于各項目參加人數(shù)差別較大,有些項目取前五名,得分順序為7,5,3,2,1;還有些項目只取前三名,得分順序為5,3,2。寫一個統(tǒng)計程序產生各種成績單和得分報表。 二.需求分析 系統(tǒng)功能描述

3、: (1)可以輸入各個項目的前三名或前五名的成績; (2)能統(tǒng)計各學??偡?; (3)可以按學校編號或名稱、學??偡帧⒛信畧F體總分排序輸出; (4)可以按學校編號查詢學校某個項目的情況;可以按項目編號查詢取得前三或前五名的學校。 三.概要設計 3.1鏈表結構的ADT的定義 ADT List{ 數(shù)據對象:D={ai|ai∈ElemSet,i=1,2,…,n,n≥0} 數(shù)據關系:R1={|ai-1,ai∈D,i=2,…,n} 基本操作: InitList(&L) 操作結果:構造一個空的線性表L。

4、 GetElem(L,i,&e) 初始條件:線性表L已存在,1≦i≦ListLength(L) 操作結果:用e返回L中第i個數(shù)據元素的值。 LocateElem(L,e,compare()) 初始條件:線性表L已存在,compare()是數(shù)據元素判定函數(shù)。 操作結果:返回L中第1個與e滿足關系compare()的數(shù)據元素的位序。若這樣的數(shù)據元素不存在,則返回值為0。 PriorElem(L,cur_e,&pre_e) 初始條件:線性表L

5、已存在。 操作結果:若cur_e是L的數(shù)據元素,且不是第一個,則用pre_e返回它的前驅,否則操作失敗,pre_e無定義。 NextElem(L,cur_e,&next_e) 初始條件:線性表L已存在。 操作結果:若cur_e是L的數(shù)據元素,且不是最后一個,則用next_e返回它的后繼,否則操作失敗,next_e無定義。 ListInsert(&L,I,e) 初始條件:線性表L已存在,1≦i≦ListLength(L)+1 操作結果:在L中第i個位

6、置之前插入新的元素e,L是表長度加1 ListTraverse(L,visit()) 初始條件:線性表L已存在。 操作結果:依次對L的每個數(shù)據元素調用函數(shù)visit()。一旦visit()失敗,則操作失敗。 }ADT List 3.2系統(tǒng)功能模塊設計 運動會分數(shù)統(tǒng)計系統(tǒng) 輸入各學校名稱 輸入男子運動項目 輸入女子運動項目 輸入男子項目的成績 輸入女子項目的成績 查詢某校各個項目的成績 查詢某校各個項目的成績 圖 3-1運動會分數(shù)統(tǒng)計系統(tǒng)功能模塊圖 main()

7、 womansports(LinkList?&L,int?n) 循環(huán)語句依次輸入每個值 ListTraverse(L,visit()) schoolname(LinkList?&L,int?n) mansports(LinkList?&L,int?n) 循環(huán)語句依次輸入每個值 ListTraverse(L,visit()) ListTraverse(L,visit()) ListTraverse(L,visit()) 3.3主要函數(shù)調用關系圖 圖 3-2系統(tǒng)函數(shù)調用關系圖 3.4主界面設計 為了實現(xiàn)運動

8、會分數(shù)統(tǒng)計系統(tǒng),需要設計一個含有多菜單項的主控菜單子程序,以鏈接系統(tǒng)中各個子項目的調用,為了方便用戶使用本系統(tǒng),本系統(tǒng)主控菜單的運行界面如圖3-3所示。 圖 3-3主菜單運行界面 四.詳細設計 實現(xiàn)運動會分數(shù)統(tǒng)計系統(tǒng)的開發(fā),采用鏈表結構類型存儲運動會學校名稱、男子女子運動項目以及男子女子項目成績的信息。 4.1數(shù)據類型定義 //每一個學校的信息 typedef struct Lnode//結點 char data[20]; //學校名稱 int da,d1,d2; //學校編號、學??偡?、男女團體分 struct Lnode *next

9、; //指向下一學校 } Lnode,*LinkList; int sz[20]; //每一個項目的信息 存取 typedef struct Lnode1 char data[20],data1[20],data2[20],data3[20],data4[20],data5[20]; //該項目前五名學校的名稱 int da1,da2,da3,da4,da5; //該項目前五名學校的編號 struct Lnode1 *next; //指向下一項目 } Lnode1,*LinkList1; 4.2 系統(tǒng)子程序詳細設計 輸入各學校名稱的算法: //按從頭到尾的順序依次建立

10、線性鏈表L1共有n個節(jié)點 void schoolname(LinkList &L1,int n) int i; LinkList p,q; //輸入頭結點信息,即輸入第一個學校的名字 L1=(LinkList)malloc(sizeof(Lnode));// malloc是動態(tài)開辟內存,函數(shù)返回為void型指針(指向開辟的內存空間);(LinkList)定義的指針的類型;(sizeof(Lnode)malloc開辟的內存空間的大小 printf("請輸入這%d 個學校的名字:\n",n); p=(LinkList)malloc(sizeof(Lnode));//指向一個有意義的地

11、方 L1->next=p;//把p的值賦給next next指向實際的空間 p時指針 scanf("%s",&p->data);//修改空間的值,&取p的數(shù)據域的地址 //從第二個節(jié)點開始依次輸入到第n個節(jié)點信息 for(i=2;i<=n;i++) //p是第一個,所以i=2從2開始 先指出第一個,然后第一個在指出剩下的 q=p; //q指向p開辟的空間 即 q指向p指向的地方 p=(LinkList)malloc(sizeof(Lnode));//給新開辟的空間賦值 開始 輸入n個學校的名字 i=0 i>n 將第i個結點加入鏈表L 結束 N Y scanf

12、("%s",&p->data); q->next=p; 輸入男子運動項目名字的算法: //按從頭到尾的順序依次建立線性鏈表L2共有n2個節(jié)點 void mansports(LinkList1 &L2,int n2) //輸入第一個節(jié)點的信息,即第一個男子項目的名字 int i; LinkList1 r,s; L2=(LinkList1)malloc(sizeof(Lnode1)); printf("請輸入這%d 個項目的名字:\n",n2); r=(LinkList1)malloc(sizeof(Lnode1)); //把新開辟的空間data1-5初始化 for(

13、int t=0;t<20;t++) r->data1[t] = '\0'; for( t=0;t<20;t++) r->data2[t] = '\0'; for( t=0;t<20;t++) r->data3[t] = '\0'; for( t=0;t<20;t++) r->data4[t] = '\0'; for( t=0;t<20;t++) r->data5[t] = '\0'; L2->next=r; scanf("%s",&r->data); //從第二個節(jié)點開始輸入到第n2個節(jié)點的信息 for(i=2;i<=n2;i++) s=r; //s指向r指向的

14、地方 r=(LinkList1)malloc(sizeof(Lnode1)); for(int t=0;t<20;t++) r->data1[t] = '\0'; for( t=0;t<20;t++) r->data2[t] = '\0'; for( t=0;t<20;t++) r->data3[t] = '\0'; for( t=0;t<20;t++) r->data4[t] = '\0'; for( t=0;t<20;t++) r->data5[t] = '\0'; scanf("%s",&r->data); s->next=r; 開始 輸入n個男子項目的名字

15、 i=0 i>n 將第i個結點加入鏈表L 結束 N Y 輸入女子運動項目名字的算法: //按從頭到尾的順序依次建立線性鏈表L3共有n1個節(jié)點 void womansports(LinkList1 &L3,int n1) //輸入第一個節(jié)點的信息,即第一個女子項目的名字 int i; LinkList1 r,s; L3=(LinkList1)malloc(sizeof(Lnode1)); printf("請輸入這%d 個項目的名字:\n",n1); r=(LinkList1)malloc(sizeof(Lnode1)); L3->next=r; sca

16、nf("%s",&r->data); //從第二個節(jié)點開始依次輸入到第n1個節(jié)點信息 for(i=2;i<=n1;i++) s=r; r=(LinkList1)malloc(sizeof(Lnode1)); scanf("%s",&r->data); s->next=r; 開始 輸入n個女子項目的名字 i=0 i>n 將第i個結點加入鏈表L 結束 N Y } 參加比賽的學校的總分排名的算法: void schoolrankings(LinkList &L1,int n) LinkList p; 學校的數(shù)據類型 上邊 int z,i,j,y; pr

17、intf("參加這次比賽的學校的總分排名:\n"); p=L1->next; //下一個地方的指針給p p是學校的數(shù)據類型 p是一個節(jié)點,L1下一個節(jié)點給p //先把每個學校的總分依次遍歷,存放在數(shù)組sz中。 一個一個取,一個一個找先讓p指向一個鏈表 for(i=0;i<=n-1;i++) sz[i]=p->da; //節(jié)點的信息指向一個數(shù)組,data學??倲?shù)的數(shù)據域, 把所有的學校的總分 p=p->next; //再對數(shù)組sz用冒泡排序法進行從小到大排序 for(i=1;i<=n-1;i++) for(j=1;j<=n-i;j++) if(sz[j-1]>sz

18、[j]) y=sz[j-1]; sz[j-1]=sz[j]; sz[j]=y; z=1; //初始化 //把線性鏈表L1按項目總分從大到小的順序排列,并打印名次 for(i=n-1;i>=0;i--) p=L1->next; // L1表示一個節(jié)點,取出里面一個數(shù)據,那個數(shù)據的名字是next,next也是一個節(jié)點,p也是一個節(jié)點, if(i>0) // 意義是判斷下一個是不是 //如果值相等則鏈表指針直接指向下一個,不用交換位置 while(sz[i]==sz[i-1]) 相鄰的兩個數(shù)組素不素相等 i--; //從大到小,從最后一個比較 //在鏈表L1

19、中找到與sz[i] 相等的節(jié)點的位置,并打印出名次信息 for(j=1;j<=n;j++) if(sz[i]==p->da) //數(shù)組里面的值從最后一個開始取 printf("第%d 名%s :%d 分\n",z,p->data,p->da); z++; p=p->next; 開始 結束 i=0 i++ i>n Y N 將每個學校的總分賦給數(shù)組sz[n] 對數(shù)組sz[n]進行冒泡排序 遍歷鏈表L找到與sz[i]相等的結點并輸出總分 參加這次比賽的學校的男子項目的成績排名的算法: //男子項目排名算法代碼與上述學??偡值呐琶惴ㄍ耆恢?,其

20、中男子項目排序的過程為比較男子項目總分 void manrankings(LinkList &L1,int n) LinkList p; int z,i,j,y; printf("參加這次比賽的學校的男子項目的成績排名:\n"); p=L1->next; //先把每個學校的男子項目總分依次遍歷,存放在數(shù)組sz中。 for(i=0;i<=n-1;i++) z[i]=p->d1; p=p->next; //再對數(shù)組sz用冒泡排序法進行從小到大排序 for(i=1;i<=n-1;i++) for(j=1;j<=n-i;j++) if(sz[j-1]>sz[j]) y=s

21、z[j-1]; sz[j-1]=sz[j]; sz[j]=y; z=1; //把線性鏈表L1按男子項目總分從大到小的順序排列,并打印名次 for(i=n-1;i>=0;i--) p=L1->next; if(i>0) while(sz[i]==sz[i-1]) i--; //在鏈表L1中找到與sz[i] 相等的節(jié)點的位置,并打印出名次信息 for(j=1;j<=n;j++) if(sz[i]==p->d1) printf("第%d 名%s :%d 分\n",z,p->data,p->d1); z++; p=p->next; 開始 結束 i=0 i++

22、i>n Y N 將男子項目的總分賦給數(shù)組sz[n] 對數(shù)組sz[n]進行冒泡排序 遍歷鏈表L找到與sz[i]相等的結點并輸出總分 參加這次比賽的學校的女子項目的成績排名的算法: //女子項目排名算法代碼與上述學校總分的排名算法完全一致,其中女子項目排序的過程為比較女子項目總分 void womanrankings(LinkList &L1,int n) LinkList p; int z,i,j,y; printf("參加這次比賽的學校的女子項目的成績排名:\n"); p=L1->next; //先把每個學校的女子項目總分依次遍歷,存放在數(shù)組sz中 for(i=

23、0;i<=n-1;i++) sz[i]=p->d2; p=p->next; //再對數(shù)組sz用冒泡排序法進行從小到大排序 for(i=1;i<=n-1;i++) for(j=1;j<=n-i;j++) if(sz[j-1]>sz[j]) y=sz[j-1]; sz[j-1]=sz[j]; sz[j]=y; z=1; //把線性鏈表L1按女子項目總分從大到小的順序排列,并打印名次 for(i=n-1;i>=0;i--) p=L1->next; if(i>0) //如果值相等則鏈表指針直接指向下一個,不用交換位置 while(sz[i]==sz[i-1]) i--

24、; //在鏈表L1中找到與sz[i] 相等的節(jié)點的位置,并打印出名次信息 for(j=1;j<=n;j++) if(sz[i]==p->d2) printf("第%d 名%s :%d 分\n",z,p->data,p->d2); z++; p=p->next; 開始 結束 i=0 i++ i>n Y N 將女子項目的總分賦給數(shù)組sz[n] 對數(shù)組sz[n]進行冒泡排序 遍歷鏈表L找到與sz[i]相等的結點并輸出總分 五.編碼實現(xiàn)及系統(tǒng)測試 圖 5-1輸入基本信息 圖 5-2學校及項目排名 圖 5-3查詢某校各個項目的成績 圖 5-4查詢

25、某個項目的比賽結果 圖 5-5結束本程序 六.結果分析 表 6-1時間、空間復雜度 操作 時間復雜度 空間復雜度 1 O(n+m) O(1) 2 O(n) O(1) 3 O(m) O(1) 注:m為學校個數(shù),n為項目個數(shù)。 七.學習體會 通過這次數(shù)據結構課程設計,我收獲了很多: 一.經過這幾天的學習,進一步提升了C語言的應用能力,鞏固了數(shù)據結構上課所學習的內容,數(shù)據結構知識的應用能力有了一定的提升,并且對C語言和數(shù)據結構有了更深層次的認識。 二.這次課程設計我們選的課題是運動會分數(shù)統(tǒng)計,涉及到線性鏈表

26、以及C語言的一些基本的知識。在以前的學習中,對知識只是掌握了大概的內容,基礎知識掌握的不牢固,所以編寫程序的過程非常的困難,通過這次課程設計,讓我知道基礎知識非常重要。在進行概要設計的時候要注意結合問題的需求分析,函數(shù)調用要和系統(tǒng)功能相結合。在書寫程序時,要認真細心,很多錯誤都是因為自己的粗心,調試程序就花費了非常多的時間。 三.通過這次課程設計,讓我明白了獨立思考的重要性。一個東西只有經過自己的思考,自己明白了才是真的明白了。在思考的過程中,對一個問題思考的越深入,可以挖掘的東西就越多。在解決問題時要結合多方面的因素,不能只單方面思考問題。 八.源程序清單 #include

27、 #include #include typedef struct Lnode 類型定義 char data[20]; //學校名稱 int da,d1,d2; //學校編號、學校總分、男女團體分 struct Lnode *next; //指向下一學校 } Lnode,*LinkList; int sz[20]; //每一個項目的信息 typedef struct Lnode1 char data[20],data1[20],data2[20],data3[20],data4[20],data5[20];

28、 //該項目前五名學校的名稱 int da1,da2,da3,da4,da5; //該項目前五名學校的編號 struct Lnode1 *next; //指向下一項目 } Lnode1,*LinkList1; 輸入各學校名稱的算法: //按從頭到尾的順序依次建立線性鏈表L1共有n個節(jié)點 void schoolname(LinkList &L1,int n) int i; LinkList p,q; //輸入頭結點信息,即輸入第一個學校的名字 L1=(LinkList)malloc(sizeof(Lnode)); printf("請輸入這%d 個學校的名字:\n",n);

29、 p=(LinkList)malloc(sizeof(Lnode)); L1->next=p; scanf("%s",&p->data); //從第二個節(jié)點開始依次輸入到第n個節(jié)點信息 for(i=2;i<=n;i++) q=p; p=(LinkList)malloc(sizeof(Lnode)); scanf("%s",&p->data); q->next=p; 輸入男子運動項目名字的算法: //按從頭到尾的順序依次建立線性鏈表L2共有n2個節(jié)點 void mansports(LinkList1 &L2,int n2) //輸入第一個節(jié)點的信息,即第一個男子項

30、目的名字 int i; LinkList1 r,s; L2=(LinkList1)malloc(sizeof(Lnode1)); printf("請輸入這%d 個項目的名字:\n",n2); r=(LinkList1)malloc(sizeof(Lnode1)); for(int t=0;t<20;t++) r->data1[t] = '\0'; for( t=0;t<20;t++) r->data2[t] = '\0'; for( t=0;t<20;t++) r->data3[t] = '\0'; for( t=0;t<20;t++) r->data4[t] = '

31、\0'; for( t=0;t<20;t++) r->data5[t] = '\0'; L2->next=r; scanf("%s",&r->data); //從第二個節(jié)點開始輸入到第n2個節(jié)點的信息 for(i=2;i<=n2;i++) s=r; r=(LinkList1)malloc(sizeof(Lnode1)); for(int t=0;t<20;t++) r->data1[t] = '\0'; for( t=0;t<20;t++) r->data2[t] = '\0'; for( t=0;t<20;t++) r->data3[t] = '\0'; for

32、( t=0;t<20;t++) r->data4[t] = '\0'; for( t=0;t<20;t++) r->data5[t] = '\0'; scanf("%s",&r->data); s->next=r; 輸入女子運動項目名字的算法: //按從頭到尾的順序依次建立線性鏈表L3共有n1個節(jié)點 void womansports(LinkList1 &L3,int n1) //輸入第一個節(jié)點的信息,即第一個女子項目的名字 int i; LinkList1 r,s; L3=(LinkList1)malloc(sizeof(Lnode1)); printf("請

33、輸入這%d 個項目的名字:\n",n1); r=(LinkList1)malloc(sizeof(Lnode1)); L3->next=r; scanf("%s",&r->data); //從第二個節(jié)點開始依次輸入到第n1個節(jié)點信息 for(i=2;i<=n1;i++) s=r; r=(LinkList1)malloc(sizeof(Lnode1)); scanf("%s",&r->data); s->next=r; 參加比賽的學校的總分排名的算法: void schoolrankings(LinkList &L1,int n) LinkList p; int z,i

34、,j,y; printf("參加這次比賽的學校的總分排名:\n"); p=L1->next; //先把每個學校的總分依次遍歷,存放在數(shù)組sz中。 for(i=0;i<=n-1;i++) sz[i]=p->da; p=p->next; //再對數(shù)組sz用冒泡排序法進行從小到大排序 for(i=1;i<=n-1;i++) for(j=1;j<=n-i;j++) if(sz[j-1]>sz[j]) y=sz[j-1]; sz[j-1]=sz[j]; sz[j]=y; z=1; //把線性鏈表L1按項目總分從大到小的順序排列,并打印名次 for(i=n-1;i>=0;i

35、--) p=L1->next; if(i>0) //如果值相等則鏈表指針直接指向下一個,不用交換位置 while(sz[i]==sz[i-1]) i--; //在鏈表L1中找到與sz[i] 相等的節(jié)點的位置,并打印出名次信息 for(j=1;j<=n;j++) if(sz[i]==p->da) printf("第%d 名%s :%d 分\n",z,p->data,p->da); z++; p=p->next; 參加這次比賽的學校的男子項目的成績排名的算法: //男子項目排名算法代碼與上述學??偡值呐琶惴ㄍ耆恢?,其中男子項目排序的過程為比較男子項目總分 void

36、manrankings(LinkList &L1,int n) LinkList p; int z,i,j,y; printf("參加這次比賽的學校的男子項目的成績排名:\n"); p=L1->next; //先把每個學校的男子項目總分依次遍歷,存放在數(shù)組sz中。 for(i=0;i<=n-1;i++) z[i]=p->d1; p=p->next; //再對數(shù)組sz用冒泡排序法進行從小到大排序 for(i=1;i<=n-1;i++) for(j=1;j<=n-i;j++) if(sz[j-1]>sz[j]) y=sz[j-1]; sz[j-1]=sz[j]; s

37、z[j]=y; z=1; //把線性鏈表L1按男子項目總分從大到小的順序排列,并打印名次 for(i=n-1;i>=0;i--) p=L1->next; if(i>0) while(sz[i]==sz[i-1]) i--; //在鏈表L1中找到與sz[i] 相等的節(jié)點的位置,并打印出名次信息 for(j=1;j<=n;j++) if(sz[i]==p->d1) printf("第%d 名%s :%d 分\n",z,p->data,p->d1); z++; p=p->next; 參加這次比賽的學校的女子項目的成績排名的算法: //女子項目排名算法代碼與上述學校總分

38、的排名算法完全一致,其中女子項目排序的過程為比較女子項目總分 void womanrankings(LinkList &L1,int n) LinkList p; int z,i,j,y; printf("參加這次比賽的學校的女子項目的成績排名:\n"); p=L1->next; //先把每個學校的女子項目總分依次遍歷,存放在數(shù)組sz中 for(i=0;i<=n-1;i++) sz[i]=p->d2; p=p->next; //再對數(shù)組sz用冒泡排序法進行從小到大排序 for(i=1;i<=n-1;i++) for(j=1;j<=n-i;j++) if(sz[j-1]

39、>sz[j]) y=sz[j-1]; sz[j-1]=sz[j]; sz[j]=y; z=1; //把線性鏈表L1按女子項目總分從大到小的順序排列,并打印名次 for(i=n-1;i>=0;i--) p=L1->next; if(i>0) //如果值相等則鏈表指針直接指向下一個,不用交換位置 while(sz[i]==sz[i-1]) i--; //在鏈表L1中找到與sz[i] 相等的節(jié)點的位置,并打印出名次信息 for(j=1;j<=n;j++) if(sz[i]==p->d2) printf("第%d 名%s :%d 分\n",z,p->data,p->d2)

40、; z++; p=p->next; void main () int i,j,z,x,n,m,w; //聲明學校鏈表 LinkList p,q,L1; //p,q沒有實際意義,L1是有實際意義,是儲存學校信息 //聲明項目鏈表 LinkList1 r,s,L2,L3; // 同上 男子男子鏈表,女子想么鏈表 do printf("*************************************\n"); printf("****1 輸入基本信息 ****\n"); printf("****2 查詢某校各個項目

41、的成績 ****\n"); printf("****3 查詢某個項目的比賽結果 ****\n"); printf("****4 結束本程序 ****\n"); printf("*************************************\n"); printf("請選擇您想進行的操作\n"); //輸入1,或2或3 選擇功能 scanf("%d",&z); //z=2查詢某校各個項目的成績 if(z==2) r=L2->next; printf("請輸入您想查尋的學校的名字:\n"); //輸入待查詢學校的名稱

42、s = (LinkList1)malloc(sizeof(Lnode1));//存儲學校的名字 scanf("%s",&s->data);//輸出查詢結果 //輸出查詢信息 for(i=1;i<=m;i++) // m為男子項目個數(shù) 字符串比較里面的是否相等,相等=0,不相等不=0 第一名的成績 第一名學校 if(strcmp(r->data1,s->data)==0) printf("貴校榮獲男子項目%s 的第1名,他該項目的成績是:%d\n",r->data,r->da1); if(strcmp(r->data2,s->data)==0) printf(

43、"貴校榮獲男子項目%s 的第2名,他該項目的成績是:%d\n",r->data,r->da2); if(strcmp(r->data3,s->data)==0) printf("貴校榮獲男子項目%s 的第3名,他該項目的成績是:%d\n",r->data,r->da3); if(strcmp(r->data4,s->data)==0) printf("貴校榮獲男子項目%s 的第4名,他該項目的成績是:%d\n",r->data,r->da4); if(strcmp(r->data5,s->data)==0) printf("貴校榮獲男子項目%s 的第5名,他該項目的成績是:%d\n",r

44、->data,r->da5); r=r->next; //男子項目的鏈表 r=L3->next; for(i=1;i<=w;i++) if(strcmp(r->data1,s->data)==0) printf("貴校榮獲女子項目%s 的第1名,她該項目的成績是:%d\n",r->data,r->da1); if(strcmp(r->data2,s->data)==0) printf("貴校榮獲女子項目%s 的第2名,她該項目的成績是:%d\n",r->data,r->da2); if(strcmp(r->data3,s->data)==0) printf("貴校榮獲女子

45、項目%s 的第3名,她該項目的成績是:%d\n",r->data,r->da3); if(strcmp(r->data4,s->data)==0) printf("貴校榮獲女子項目%s 的第4名,她該項目的成績是:%d\n",r->data,r->da4); if(strcmp(r->data5,s->data)==0) printf("貴校榮獲女子項目%s 的第5名,她該項目的成績是:%d\n",r->data,r->da5); r=r->next; //查詢學校結束 //z=3查詢某個項目的比賽結果 if(z==3) printf("請輸入您想查尋的項目的名字:\n");

46、//輸入待查詢的項目名稱 s = (LinkList1)malloc(sizeof(Lnode1)); scanf("%s",&s->data); //存data里 r=L2->next; for(i=1;i<=m;i++) if(strcmp(r->data,s->data)==0) if(strlen(r->data4)==0) printf("第1名%s ,第2名%s,第3名%s\n",r->data1,r->data2,r->data3); if(strlen(r->data4)>0) printf("第1名%s ,第2名%s,第3名%s,第4名%s,第5名%s\n"

47、,r->data1,r->data2,r->data3,r->data4,r->data5); r=r->next; r=L3->next; //打印項目比賽結果 for(i=1;i<=w;i++) if(strcmp(r->data,s->data)==0) if(strlen(r->data4)==0) printf("第1名%s ,第2名%s,第3名%s\n",r->data1,r->data2,r->data3); //字長 沒有輸入第四名 strlen(r->data4)==0 if(strlen(r->data4)>0) printf(

48、"第1名%s ,第2名%s,第3名%s,第4名%s,第5名%s\n",r->data1,r->data2,r->data3,r->data4,r->data5); r=r->next; if(z==1) //輸入部分 //輸入學校的個數(shù)n printf("請輸入參加這次比賽的學校的個數(shù):\n"); scanf("%d",&n); //構建鏈表L1,依次輸入n個學校的名稱。 schoolname(L1,n); q=L1->next; //把L1鏈表中的總分da全部初始化為0 for(i=1;i<=n;i++) q->da=0; //初始化 q->d1=0;

49、 q->d2=0; q=q->next; //輸入男子個項目總數(shù)m printf("\n請輸入這次比賽的男子項目的個數(shù):\n"); scanf("%d",&m); //構建男子項目鏈表L2輸入m個男子運動項目名字 mansports(L2,m); r=L2->next; //依次m個男子項目的結果 for(i=1;i<=m;i++) printf("如果此次%s 比賽只取前3名的成績請輸入1,若只取前5名的成績請輸入2!\n",r->data); //輸入1或2 選擇成績記錄的方式 scanf("%d",&z); printf("請輸入第1名所來自的學校的名字和他該項

50、目的成績:\n"); //輸入第1名學校名稱和項目成績 scanf("%s%d",&r->data1,&r->da1); q=L1->next; for(j=1;j<=n;j++) if(strcmp(r->data1,q->data)==0) if(z==1) {q->da=q->da+r->da1;q->d1=q->d1+r->da1;}//把項目的成績把對應的項目的成績加到學校里 先把第一名的成績加到對應的學校 加到男子項目總分 if(z==2) {q->da=q->da+r->da1;q->d1=q->d1+r->da1;} q=q->next; prin

51、tf("請輸入第2名所來自的學校的名字和他該項目的成績:\n"); //輸入第2名學校名稱和項目成績 scanf("%s%d",&r->data2,&r->da2); q=L1->next; for(j=1;j<=n;j++) if(strcmp(r->data2,q->data)==0) if(z==1) {q->da=q->da+r->da2;q->d1=q->d1+r->da2;} if(z==2) {q->da=q->da+r->da2;q->d1=q->d1+r->da2;} q=q->next; printf("請輸入第3名所來自的學校的名字和他該項目

52、的成績:\n"); //輸入第3名學校名稱和項目成績 scanf("%s%d",&r->data3,&r->da3); q=L1->next; for(j=1;j<=n;j++) if(strcmp(r->data3,q->data)==0) if(z==1) {q->da=q->da+r->da3;q->d1=q->d1+r->da3;} if(z==2) {q->da=q->da+r->da3;q->d1=q->d1+r->da3;} q=q->next; //如果z=2,則繼續(xù)輸入第四,第五名的學校名稱和項目成績。 if(z==2) printf("請輸入第

53、4名所來自的學校的名字和他該項目的成績\n");//輸入第4名的學校名稱和項目成績。 scanf("%s%d",&r->data4,&r->da4); q=L1->next; for(j=1;j<=n;j++) if(strcmp(r->data4,q->data)==0) {q->da=q->da+r->da4;q->d1=q->d1+r->da4;} q=q->next; printf("請輸入第5名所來自的學校的名字和他該項目的成績:\n");//輸入第5名的學校名稱和項目成績。 scanf("%s%d",&r->data5,&r->da5); q=L1->next;

54、for(j=1;j<=n;j++) if(strcmp(r->data5,q->data)==0) {q->da=q->da+r->da4;q->d1=q->d1+r->da4;} q=q->next; r=r->next; //輸入男子項目完畢 printf("\n請輸入這次比賽的女子項目的個數(shù):\n"); //輸入女子項目的的個數(shù)w scanf("%d",&w); //構建鏈表L3,輸入w個項目名稱 womansports(L3,w); r=L3->next; //依次對w個女子項目進行結果記錄 for(i=1;i<=w;i++) printf("如果此次%s 比

55、賽只取前3名的成績請輸入1,若只取前5名的成績請輸入2!\n",r->data); //輸入1或2 選擇記錄的個數(shù) scanf("%d",&x); printf("請輸入第1名所來自的學校的名字和他該項目的成績:\n"); //輸入第 1 名所來自的學校的名字和他該項目的成績 scanf("%s%d",&r->data1,&r->da1); q=L1->next; for(j=1;j<=n;j++) if(strcmp(r->data1,q->data)==0) if(x==1) {q->da=q->da+r->da1;q->d2=q->d2+r->da1;} if(x==

56、2) {q->da=q->da+r->da1;q->d2=q->d2+r->da1;} q=q->next; printf("請輸入第2名所來自的學校的名字和他該項目的成績:\n"); //輸入第 2名所來自的學校的名字和他該項目的成績 scanf("%s%d",&r->data2,&r->da2); q=L1->next; for(j=1;j<=n;j++) if(strcmp(r->data2,q->data)==0) if(x==1) {q->da=q->da+r->da2;q->d2=q->d2+r->da2;} if(x==2) {q->da=q->da+r->da

57、2;q->d2=q->d2+r->da2;} q=q->next; printf("請輸入第3名所來自的學校的名字和他該項目的成績:\n"); //輸入第 3名所來自的學校的名字和他該項目的成績 scanf("%s%d",&r->data3,&r->da3); q=L1->next; for(j=1;j<=n;j++) if(strcmp(r->data3,q->data)==0) if(x==1) {q->da=q->da+r->da3;q->d2=q->d2+r->da3;} if(x==2) {q->da=q->da+r->da3;q->d2=q->d2+r->da3;

58、} q=q->next; if(x==2) printf("請輸入第4名所來自的學校的名字和他該項目的成績:\n");//輸入第4名所來自的學校的名字和他該項目的成績 scanf("%s%d",&r->data4,&r->da4); q=L1->next; for(j=1;j<=n;j++) if(strcmp(r->data4,q->data)==0) {q->da=q->da+r->da4;q->d2=q->d2+r->da4;} q=q->next; printf("請輸入第5名所來自的學校的名字和他該項目的成績:\n");//輸入第 5 名所來自的學校的名字和他該項目

59、的成績 scanf("%s%d",&r->data5,&r->da5); q=L1->next; for(j=1;j<=n;j++) if(strcmp(r->data5,q->data)==0) {q->da=q->da+r->da5;q->d2=q->d2+r->da5;} q=q->next; r=r->next; //輸入女子項目完畢 p=L1->next; printf("參加這次比賽的學校的成績?yōu)?\n"); //輸出n個學校的分數(shù) for(i=1;i<=n;i++) //n個學校 第一個節(jié)點開始一直打印到n個 printf("%s :總分:%d 分男子團體總分:%d 分女子團體總分:%d 分\n",p->data,p->da,p->d1,p->d2); //學校的名字…….. p=p->next; // p指向學校的鏈表 打印完之后指向下一個節(jié)點 //把團體總分按照從大到小進行排序并打印 schoolrankings (L1,n); //把男子總分按照從大到小進行排序并打印 manrankings (L1,n); //把女子總分按照從大到小進行排序并打印 womanrankings (L1,n); //輸入部分結束 while(z!=4); // printf("\n"); 【精品文檔】第 19 頁

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

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網,我們立即給予刪除!

五月丁香婷婷狠狠色,亚洲日韩欧美精品久久久不卡,欧美日韩国产黄片三级,手机在线观看成人国产亚洲