課程設(shè)計(jì)運(yùn)動會分?jǐn)?shù)統(tǒng)計(jì)_第1頁
課程設(shè)計(jì)運(yùn)動會分?jǐn)?shù)統(tǒng)計(jì)_第2頁
課程設(shè)計(jì)運(yùn)動會分?jǐn)?shù)統(tǒng)計(jì)_第3頁
課程設(shè)計(jì)運(yùn)動會分?jǐn)?shù)統(tǒng)計(jì)_第4頁
課程設(shè)計(jì)運(yùn)動會分?jǐn)?shù)統(tǒng)計(jì)_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、課程設(shè)計(jì)報告書設(shè)計(jì)題目一: 運(yùn)動會分?jǐn)?shù)統(tǒng)計(jì)任務(wù):參加運(yùn)動會有n個學(xué)校,學(xué)校編號為1n。比賽分成m個男子項(xiàng)目,和w個女子項(xiàng)目。項(xiàng)目編號為男子1m,女子m+1m+w。不同的項(xiàng)目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些項(xiàng)目取前五名或前三名由學(xué)生自己設(shè)定。(m<=20,n<=20)。功能要求:1)可以輸入各個項(xiàng)目的前三名或前五名的成績;2)能統(tǒng)計(jì)各學(xué)??偡郑?)可以按學(xué)校編號、學(xué)??偡?、男女團(tuán)體總分排序輸出;4)可以按學(xué)校編號查詢學(xué)校某個項(xiàng)目的情況;5) 可以按項(xiàng)目編號查詢?nèi)〉们叭蚯拔迕膶W(xué)校。需求分析:本演示程序中,用戶自定義

2、學(xué)校個數(shù),項(xiàng)目個數(shù),并且自動生成學(xué)校編號和項(xiàng)目編號詳細(xì)設(shè)計(jì):#include <stdio.h> void main() int n,w,m,i,num,j,t,r,f,g;int inumber2; int inumber;int schnumber;int c20,d20,e20;int array40;struct Schoolint number;int schgl;int mgl;int wmgl;int items40; school20;struct Itemint a3,b5; int number; item40;printf("-n");pr

3、intf("-運(yùn)動會分?jǐn)?shù)統(tǒng)計(jì)-n");printf("-n");printf("n");printf("請輸入?yún)⒓舆\(yùn)動會的學(xué)校個數(shù):");scanf("%d",&n); while(n<=0|n>20) printf("對不起,您輸入的數(shù)不符合要求,請重新輸入:"); scanf("%d",&n);printf("規(guī)定它們的編號分別是:");for( i=1;i<=n;i+)schooli-1.numb

4、er=i;printf("%d,",i);printf("nn"); printf("請輸入男項(xiàng)的個數(shù)(020):"); scanf("%d",&m);while(m<=0|m>20) printf("您輸入的數(shù)據(jù)有誤,請重新輸入:"); scanf("%d",&m);printf("n"); printf("請輸入女項(xiàng)的個數(shù)(020):"); scanf("%d",&w); wh

5、ile(w<=0|w>20) printf("對您輸入的數(shù)據(jù)有誤,請重新輸入:"); scanf("%d",&w); printf("n"); printf("男項(xiàng)的編號分別是:");for(i=1;i<=m;i+)itemi-1.number=i;printf("%d,",i); printf("n"); printf("女項(xiàng)的編號分別是:");for(i=m+1;i<=m+w;i+)itemi-1.number=i;pr

6、intf("%d,",i); printf("n"); printf("請輸入需要取前三名的項(xiàng)目個數(shù)(040):"); scanf("%d",&num);while(num<0|num>m+w) printf("您輸入的數(shù)據(jù)有誤,請重新輸入:"); scanf("%d",&num);printf("n"); printf("n");for(i=1;i<=20;i+) schooli.schgl=0; s

7、chooli.wmgl=0; schooli.mgl=0;for(i=1;i<=40;i+)for(j=0;j<3;j+)itemi.aj=0; for(i=1;i<=40;i+)for(j=0;j<5;j+)itemi.bj=0; for(i=1;i<=20;i+)for(j=1;j<=40;j+) schooli.itemsj=0;for(i=0;i<=40;i+)arrayi=0;printf("請輸入項(xiàng)目編號和項(xiàng)目前三名的學(xué)校編號。n");printf("項(xiàng)目編號 該項(xiàng)目前三名的學(xué)校編號:n ");for

8、(i=0;i<num;i+)scanf("%d",&inumber);arrayi=inumber;t=inumber;printf(" ");for(j=0;j<3;j+)scanf("%d",&itemt.aj); schoolitemt.a0.schgl=schoolitemt.a0.schgl+5; schoolitemt.a1.schgl=schoolitemt.a1.schgl+3; schoolitemt.a2.schgl=schoolitemt.a2.schgl+2; schoolitemt

9、.a0.itemst=schoolitemt.a0.itemst+5; schoolitemt.a1.itemst=schoolitemt.a1.itemst+3; schoolitemt.a2.itemst=schoolitemt.a2.itemst+2;if(inumber<=m)schoolitemt.a0.mgl=schoolitemt.a0.mgl+5; schoolitemt.a1.mgl=schoolitemt.a1.mgl+3; schoolitemt.a2.mgl=schoolitemt.a2.mgl+2;else schoolitemt.a0.wmgl=schooli

10、temt.a0.wmgl+5; schoolitemt.a1.wmgl=schoolitemt.a1.wmgl+3; schoolitemt.a2.wmgl=schoolitemt.a2.wmgl+2;printf("n");printf("請輸入前五名的項(xiàng)目編號以及項(xiàng)目前五名的學(xué)校編號:n");printf("項(xiàng)目編號 該項(xiàng)目前五名的學(xué)校編號:n ");for(i=0;i<m+w-num;i+) scanf("%d",&inumber); t=inumber;printf(" "

11、); for(j=0;j<5;j+)scanf("%d",&itemt.bj); schoolitemt.b0.schgl=schoolitemt.b0.schgl+7; schoolitemt.b1.schgl=schoolitemt.b1.schgl+5; schoolitemt.b2.schgl=schoolitemt.b2.schgl+3; schoolitemt.b3.schgl=schoolitemt.b3.schgl+2; schoolitemt.b4.schgl=schoolitemt.b4.schgl+1; schoolitemt.b0.it

12、emst=schoolitemt.b0.itemst+7; schoolitemt.b1.itemst=schoolitemt.b1.itemst+5; schoolitemt.b2.itemst=schoolitemt.b2.itemst+3; schoolitemt.b3.itemst=schoolitemt.b3.itemst+2; schoolitemt.b4.itemst=schoolitemt.b4.itemst+1;if(inumber<=m)schoolitemt.b0.mgl=schoolitemt.b0.mgl+7; schoolitemt.b1.mgl=school

13、itemt.b1.mgl+5; schoolitemt.b2.mgl=schoolitemt.b2.mgl+3; schoolitemt.b3.mgl=schoolitemt.b3.mgl+2; schoolitemt.b4.mgl=schoolitemt.b4.mgl+1;else schoolitemt.b0.wmgl=schoolitemt.b0.wmgl+7; schoolitemt.b1.wmgl=schoolitemt.b1.wmgl+5; schoolitemt.b2.wmgl=schoolitemt.b2.wmgl+3; schoolitemt.b3.wmgl=schoolit

14、emt.b3.wmgl+2; schoolitemt.b4.wmgl=schoolitemt.b4.wmgl+1;printf("n"); printf("規(guī)定前五名的項(xiàng)目積分為7,5,3,2,1."); printf("n"); printf("規(guī)定前三名的項(xiàng)目積分為5,3,2."); printf("n"); printf("請輸入需要查詢的項(xiàng)目編號n"); printf("輸入1代表按學(xué)校編號輸出總分n"); printf("輸入2代表按學(xué)

15、??偡钟纱蟮叫≥敵隹偡謓"); printf("輸入3代表按男團(tuán)成績由大到小輸出總分n"); printf("輸入4代表按女團(tuán)成績由大到小輸出總分n"); printf("輸入其他數(shù)字代表跳過這一查詢階段n"); f=1; for(i=0;f>0&&f<=4;i+) printf("請輸入查詢的數(shù)字:"); scanf("%d",&f); if(f=1) printf("按學(xué)校編號輸出總分為:"); for( i=1;i<=

16、n;i+) printf("%d ",schooli.schgl); printf("nn"); if(f=2) for(i=1;i<=20;i+)ci=schooli.schgl; printf("按學(xué)校總分由大到小輸出總分為:"); for(i=1;i<=n;i+) for(j=i;j<=n;j+) if(ci<cj) t=ci; ci=cj; cj=t; for(i=1;i<=n;i+) printf("%d ",ci); printf("nn"); if(f

17、=3) for(i=1;i<=20;i+) di=schooli.mgl; printf("男子成績由大到小輸出"); for(i=1;i<=n;i+) for(j=i;j<=n;j+) if(di<dj) t=di; di=dj; dj=t; for(i=1;i<=n;i+) printf("%d ",di); printf("nn"); if(f=4) for(i=1;i<=20;i+) ei=schooli.wmgl; printf("女子成績由大到小輸出"); for(i

18、=1;i<=n;i+) for(j=i;j<=n;j+) if(ei<ej) t=ei; ei=ej; ej=t; for(i=1;i<=n;i+) printf("%d ",ei); printf("nn"); t=1; while(t>=1&&t<=n) printf("輸入學(xué)校編號,查找學(xué)校運(yùn)動會某個項(xiàng)目情況"); scanf("%d",&schnumber); while(schnumber<=0|schnumber>20) print

19、f("您輸入的數(shù)據(jù)有誤,請重新輸入:"); scanf("%d",&schnumber); printf("n"); r=schnumber; printf("學(xué)校該項(xiàng)目的總分,男子,女子分?jǐn)?shù)分別是:"); printf("%d,%d,%d",schoolr.schgl,schoolr.mgl,schoolr.wmgl);printf("n");printf("學(xué)校所有項(xiàng)目的分?jǐn)?shù):n");for(i=1;i<=m+w;i+)printf(&q

20、uot;%-3d",i); printf("n");for(i=1;i<=m+w;i+)printf("%-3d",schoolr.itemsi); printf("n"); printf("繼續(xù)查找則輸入學(xué)校編號數(shù)字,否則輸入其他數(shù)字"); scanf("%d",&t); t=1; while(t>=1&&t<=m+w) printf("輸入項(xiàng)目編號查找該項(xiàng)目學(xué)校的排名情況:n"); scanf("%d"

21、;,&inumber2); while(inumber2<=0|inumber2>m+w) printf("您輸入的數(shù)據(jù)有誤,請重新輸入:"); scanf("%d",&inumber2); printf("n"); r=inumber2; printf("您輸入的項(xiàng)目編號是%d.n",r); for(i=0;i<num;i+) if(r=arrayi) g=1; break; else g=0; if(g=1) printf("該項(xiàng)目的前三名學(xué)校編號以及積分是:n&qu

22、ot;); for(i=0;i<3;i+) printf("%d ",itemr.ai); printf("n"); printf("5 3 2"); if(g=0) printf("該項(xiàng)目的前五名學(xué)校編號以及積分是:n"); for(i=0;i<5;i+) printf("%d ",itemr.bi); printf("n"); printf("7 5 3 2 1"); printf("n"); printf("

23、繼續(xù)查找則輸入項(xiàng)目編號數(shù)字,否則輸入其他數(shù)字:"); scanf("%d",&t); 調(diào)試分析:按照程序給定的要求和指令,可以得到相應(yīng)的結(jié)果。比如按照學(xué)校總分排高低,按男子(或女子)總分排高低分?jǐn)?shù);某項(xiàng)目前三名的學(xué)校編號;某一學(xué)校各項(xiàng)目的分?jǐn)?shù)情況。用戶手冊:1) 演示程序的運(yùn)行環(huán)境為Windows Vista系統(tǒng),Microsoft Visual Studio 6.0中的Microsoft Visual C+ 6.0中運(yùn)行。執(zhí)行文件為:運(yùn)動會分?jǐn)?shù)統(tǒng)計(jì).exe測試結(jié)果:學(xué)校個數(shù):5 男子項(xiàng)目個數(shù):4 女子項(xiàng)目個數(shù):3 總項(xiàng)目個數(shù):7設(shè)計(jì)題目二: 哈希表查找的

24、設(shè)計(jì)任務(wù):設(shè)哈希表長為20,用除留余數(shù)法構(gòu)造一個哈希函數(shù),以開放定址法中的線性探測再散列法作為解決沖突的方法,編程實(shí)現(xiàn)哈希表查找、插入和建立算法。需求分析:用戶在給定的哈希表長中輸入不多于20個的正整數(shù),并取一個不大于20的數(shù)作為除數(shù),改造一個哈希函數(shù),并將這些數(shù)按要求插入到哈希表中。若某個數(shù)插入時,該哈希表中有了一個數(shù),此時用線性探測在散列的方法處理沖突。功能要求:在構(gòu)造好哈希表后,可以查找在哈希表中的某個關(guān)鍵字,并能指出該關(guān)鍵字在表中的位置,當(dāng)輸入的某數(shù)不在表中時,可以將其插入到哈希表中。概要設(shè)計(jì):for(i=0;i<m;i+) /構(gòu)建一個哈希函數(shù) t=arrayi%p; /余數(shù)t為

25、哈希地址 if(hashsizet=-1) /表示該位置為空 hashsizet=arrayi; /將數(shù)加到該位置上 else /用開發(fā)地址法解決沖突 for(j=0;hashsizet!=-1;j+)t=(t+1)%20; /線性探測在散列解決沖突hashsizet=arrayi; /將數(shù)加到該位置上 詳細(xì)設(shè)計(jì):#include <stdio.h>void main()int hashsize20;int i,j,array20,p,t,t2,c,m,n;int b,k,f=0;for(i=0;i<20;i+)hashsizei=-1; /用-1代表該位置為空printf(

26、"please input a key number (020):");scanf("%d",&p); while(p<=0|p>20) printf("sorry the number is fault,please input again:"); scanf("%d",&p);printf("n"); printf("please input positive intege number(020):");scanf("%d"

27、,&m);while(m>20|m<=0) printf("sorry the number is fault,please input again:"); scanf("%d",&m);printf("n");printf("請輸入這%d個數(shù)據(jù):",m);for(i=0;i<m;i+) scanf("%d",&arrayi);for(i=0;i<m;i+) t=arrayi%p; /余數(shù)t為哈希地址 if(hashsizet=-1) /表示該位置

28、為空,將數(shù)加到該位置上 hashsizet=arrayi; else /用開發(fā)地址法解決沖突 for(j=0;hashsizet!=-1;j+)t=(t+1)%20;hashsizet=arrayi; for(i=0;i<20;i+)printf("%-3d",i); /輸出右對齊printf("n");for(i=0;i<20;i+)if(hashsizei!=-1) printf("%-3d",hashsizei);elseprintf(" ");printf("n");for(k=1;k=1;) printf("請輸入你想要查找其地址的一個正整數(shù):"); scanf("%d",&c); printf("您輸入的數(shù)為%d",c); printf

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論