课程设计运动会分数统计_第1页
课程设计运动会分数统计_第2页
课程设计运动会分数统计_第3页
课程设计运动会分数统计_第4页
课程设计运动会分数统计_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计报告书设计题目一: 运动会分数统计任务:参加运动会有n个学校,学校编号为1n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1m,女子m+1m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些项目取前五名或前三名由学生自己设定。(m<=20,n<=20)。功能要求:1)可以输入各个项目的前三名或前五名的成绩;2)能统计各学校总分;3)可以按学校编号、学校总分、男女团体总分排序输出;4)可以按学校编号查询学校某个项目的情况;5) 可以按项目编号查询取得前三或前五名的学校。需求分析:本演示程序中,用户自定义

2、学校个数,项目个数,并且自动生成学校编号和项目编号详细设计:#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("-运动会分数统计-n");printf("-n");printf("n");printf("请输入参加运动会的学校个数:");scanf("%d",&n); while(n<=0|n>20) printf("对不起,您输入的数不符合要求,请重新输入:"); scanf("%d",&n);printf("规定它们的编号分别是:");for( i=1;i<=n;i+)schooli-1.numb

4、er=i;printf("%d,",i);printf("nn"); printf("请输入男项的个数(020):"); scanf("%d",&m);while(m<=0|m>20) printf("您输入的数据有误,请重新输入:"); scanf("%d",&m);printf("n"); printf("请输入女项的个数(020):"); scanf("%d",&w); wh

5、ile(w<=0|w>20) printf("对您输入的数据有误,请重新输入:"); scanf("%d",&w); printf("n"); printf("男项的编号分别是:");for(i=1;i<=m;i+)itemi-1.number=i;printf("%d,",i); printf("n"); printf("女项的编号分别是:");for(i=m+1;i<=m+w;i+)itemi-1.number=i;pr

6、intf("%d,",i); printf("n"); printf("请输入需要取前三名的项目个数(040):"); scanf("%d",&num);while(num<0|num>m+w) printf("您输入的数据有误,请重新输入:"); 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("请输入项目编号和项目前三名的学校编号。n");printf("项目编号 该项目前三名的学校编号: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("请输入前五名的项目编号以及项目前五名的学校编号:n");printf("项目编号 该项目前五名的学校编号: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("规定前五名的项目积分为7,5,3,2,1."); printf("n"); printf("规定前三名的项目积分为5,3,2."); printf("n"); printf("请输入需要查询的项目编号n"); printf("输入1代表按学校编号输出总分n"); printf("输入2代表按学

15、校总分由大到小输出总分n"); printf("输入3代表按男团成绩由大到小输出总分n"); printf("输入4代表按女团成绩由大到小输出总分n"); printf("输入其他数字代表跳过这一查询阶段n"); f=1; for(i=0;f>0&&f<=4;i+) printf("请输入查询的数字:"); scanf("%d",&f); if(f=1) printf("按学校编号输出总分为:"); 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("按学校总分由大到小输出总分为:"); 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("输入学校编号,查找学校运动会某个项目情况"); scanf("%d",&schnumber); while(schnumber<=0|schnumber>20) print

19、f("您输入的数据有误,请重新输入:"); scanf("%d",&schnumber); printf("n"); r=schnumber; printf("学校该项目的总分,男子,女子分数分别是:"); printf("%d,%d,%d",schoolr.schgl,schoolr.mgl,schoolr.wmgl);printf("n");printf("学校所有项目的分数: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("继续查找则输入学校编号数字,否则输入其他数字"); scanf("%d",&t); t=1; while(t>=1&&t<=m+w) printf("输入项目编号查找该项目学校的排名情况:n"); scanf("%d"

21、;,&inumber2); while(inumber2<=0|inumber2>m+w) printf("您输入的数据有误,请重新输入:"); scanf("%d",&inumber2); printf("n"); r=inumber2; printf("您输入的项目编号是%d.n",r); for(i=0;i<num;i+) if(r=arrayi) g=1; break; else g=0; if(g=1) printf("该项目的前三名学校编号以及积分是:n&qu

22、ot;); for(i=0;i<3;i+) printf("%d ",itemr.ai); printf("n"); printf("5 3 2"); if(g=0) printf("该项目的前五名学校编号以及积分是:n"); for(i=0;i<5;i+) printf("%d ",itemr.bi); printf("n"); printf("7 5 3 2 1"); printf("n"); printf("

23、继续查找则输入项目编号数字,否则输入其他数字:"); scanf("%d",&t); 调试分析:按照程序给定的要求和指令,可以得到相应的结果。比如按照学校总分排高低,按男子(或女子)总分排高低分数;某项目前三名的学校编号;某一学校各项目的分数情况。用户手册:1) 演示程序的运行环境为Windows Vista系统,Microsoft Visual Studio 6.0中的Microsoft Visual C+ 6.0中运行。执行文件为:运动会分数统计.exe测试结果:学校个数:5 男子项目个数:4 女子项目个数:3 总项目个数:7设计题目二: 哈希表查找的

24、设计任务:设哈希表长为20,用除留余数法构造一个哈希函数,以开放定址法中的线性探测再散列法作为解决冲突的方法,编程实现哈希表查找、插入和建立算法。需求分析:用户在给定的哈希表长中输入不多于20个的正整数,并取一个不大于20的数作为除数,改造一个哈希函数,并将这些数按要求插入到哈希表中。若某个数插入时,该哈希表中有了一个数,此时用线性探测在散列的方法处理冲突。功能要求:在构造好哈希表后,可以查找在哈希表中的某个关键字,并能指出该关键字在表中的位置,当输入的某数不在表中时,可以将其插入到哈希表中。概要设计:for(i=0;i<m;i+) /构建一个哈希函数 t=arrayi%p; /余数t为

25、哈希地址 if(hashsizet=-1) /表示该位置为空 hashsizet=arrayi; /将数加到该位置上 else /用开发地址法解决冲突 for(j=0;hashsizet!=-1;j+)t=(t+1)%20; /线性探测在散列解决冲突hashsizet=arrayi; /将数加到该位置上 详细设计:#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个数据:",m);for(i=0;i<m;i+) scanf("%d",&arrayi);for(i=0;i<m;i+) t=arrayi%p; /余数t为哈希地址 if(hashsizet=-1) /表示该位置

28、为空,将数加到该位置上 hashsizet=arrayi; else /用开发地址法解决冲突 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("请输入你想要查找其地址的一个正整数:"); scanf("%d",&c); printf("您输入的数为%d",c); printf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论