版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构课程设计汇报书课内设计任务一:设计题目:运动会分数统计2.任务:参与运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1~m,女子m+1~m+w。不一样项目取前五名或前三名积分;取前五名积分分别为:7、5、3、2、1,前三名积分分别为:5、3、2;哪些项目取前五名或前三名由学生自己设定。(m<=20,n<=20)功效要求:1)能够输入各个项目标前三名或前五名成绩;2)能统计各学校总分;3)能够按学校编号、学校总分、男女团体总分排序输出;4)能够按学校编号查询学校某个项目标情况;5)能够按项目编号查询取得前三或前五名学校。需求分析:本程序需要建立两个个线性表,一个计运动项目,一个计学校,项目信息中统计了前几名,经过遍历项目表能够统计出每个学校成绩,统计出成绩统计在学校数组中,最终算出男子,女子和总体总分,并以此排序。概要设计:typedefstructschool{charname[60];intid;intmale_score;intfemale_score;}School,*School_List;typedefstructsport{charname[60];intid;intcategory;intwinner[5];}Sport,*Sport_List;School_Listscl;Sport_Listspl;具体设计:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>typedefstructschool{charname[60];intid;intmale_score;intfemale_score;}School,*School_List;typedefstructsport{charname[60];intid;//类别(积分类型1:75321;0:532)intcategory;intwinner[5];}Sport,*Sport_List;//统计每个学校分数voidcount_score(intm,intn,intw,School_Listscl,Sport_Listspl){inti=0;//初始化分数为0for(i;i<n;i++){scl[i].male_score=0;scl[i].female_score=0;}//统计男子项目for(i=0;i<m;i++){if(spl[i].category==1){scl[spl[i].winner[0]-1].male_score+=7;scl[spl[i].winner[1]-1].male_score+=5;scl[spl[i].winner[2]-1].male_score+=3;scl[spl[i].winner[3]-1].male_score+=2;scl[spl[i].winner[4]-1].male_score+=1;}else{scl[spl[i].winner[0]-1].male_score+=5;scl[spl[i].winner[1]-1].male_score+=3;scl[spl[i].winner[2]-1].male_score+=2;}}//女子项目for(i=m;i<m+w;i++){if(spl[i].category==1){scl[spl[i].winner[0]-1].female_score+=7;scl[spl[i].winner[1]-1].female_score+=5;scl[spl[i].winner[2]-1].female_score+=3;scl[spl[i].winner[3]-1].female_score+=2;scl[spl[i].winner[4]-1].female_score+=1;}else{scl[spl[i].winner[0]-1].female_score+=5;scl[spl[i].winner[1]-1].female_score+=3;scl[spl[i].winner[2]-1].female_score+=2;}}}//初始化全部数据voidinit(int*m,int*n,int*w,School_List*scl,Sport_List*spl){*m=*n=*w=0;//初始化数量intM,N,W;M=N=W=0;printf("课题1:运动会分数统计");printf("请分别输入学校数目,男子项目和女子项目数:\n");while(N<1||N>20){printf("学校数目(1-20):");fflush(stdin);scanf("%d",&N);}while(M<1||M>20){printf("男子项目数(1-20):");fflush(stdin);scanf("%d",&M);}while(W<1||W>20){printf("女子项目数(1-20):");fflush(stdin);scanf("%d",&W);}*m=M;*n=N;*w=W;//分配空间*scl=(School*)malloc(N*sizeof(School));*spl=(Sport*)malloc((M+W)*sizeof(Sport));//初始化项目学校基础信息School_Listsh_l=*scl;Sport_Listsp_l=*spl;inti=0;printf("请依次输入%d个学校名称:\n",N);for(i;i<N;i++){fflush(stdin);scanf("%s",sh_l[i].name);sh_l[i].id=i+1;}printf("请依次输入%d个男子项目:\n",M);for(i=0;i<M;i++){fflush(stdin);scanf("%s",sp_l[i].name);sp_l[i].id=i+1;}printf("请依次输入%d个女子项目:\n",W);for(i=M;i<M+W;i++){fflush(stdin);scanf("%s",sp_l[i].name);sp_l[i].id=i+1;}//初始化项目成绩printf("请依次输入%d个项目标积分类型和成绩:\n",W+M);for(i=0;i<M+W;i++){sp_l[i].category=-1;while(sp_l[i].category!=1&&sp_l[i].category!=0){printf("选择%s积分类型(1.统计前5名;0.统计前3名):",sp_l[i].name);fflush(stdin);scanf("%d",&sp_l[i].category);}if(sp_l[i].category==1){printf("请次序输入%s前五名所属学校(1-%d):",sp_l[i].name,N);fflush(stdin);scanf("%d%d%d%d%d",&(sp_l[i].winner[0]),&(sp_l[i].winner[1]),&(sp_l[i].winner[2]),&(sp_l[i].winner[3]),&(sp_l[i].winner[4]));intj=0;for(j;j<5;j++){if(sp_l[i].winner[j]>N||sp_l[i].winner[j]<1){//不正当输入强制设为1sp_l[i].winner[j]=1;}}}else{printf("请次序输入%s前三名所属学校(1-%d):",sp_l[i].name,N);fflush(stdin);scanf("%d%d%d",&(sp_l[i].winner[0]),&(sp_l[i].winner[1]),&(sp_l[i].winner[2]));sp_l[i].winner[3]=sp_l[i].winner[4]=0;intj=0;for(j;j<3;j++){if(sp_l[i].winner[j]>*n||sp_l[i].winner[j]<1){//不正当输入强制设为1sp_l[i].winner[j]=1;}}}}count_score(M,N,W,sh_l,sp_l);}//按学校编号查询全部项目标成绩voidgetshool_mark(ints_id,intm,intw,School_Listscl,Sport_Listspl){printf("学校%s在此次运动会成绩:\n",scl[s_id-1].name);inti=0;for(i;i<m+w;i++){intj=0;if(spl[i].category==1){for(j;j<5;j++){if(s_id==spl[i].winner[j]){printf("在%s中取得第%d名!\n",spl[i].name,1+j);}}}else{for(j;j<3;j++){if(s_id==spl[i].winner[j]){printf("在%s中取得第%d名!\n",spl[i].name,1+j);}}}}}//按项目编号查询前几名学校voidgetsport_inf(ints_id,School_Listscl,Sport_Listspl){if(spl[s_id-1].category==1){printf("%s前五名分别为:\n",scl[s_id-1].name);intj=0;for(j;j<5;j++){printf("第%d名:%d%s\n",1+j,spl[s_id-1].winner[j],scl[spl[s_id-1].winner[j]-1].name);}}else{printf("%s前三名分别为:\n,",scl[s_id-1].name);intj=0;for(j;j<3;j++){printf("第%d名:%d%s\n",1+j,spl[s_id-1].winner[j],scl[spl[s_id-1].winner[j]-1].name);}}}//全部学校按某种次序输出voidprintschool(intn,School_Listscl){intchoose=-1;while(choose>5||choose<0){printf("0.返回\n");printf("1.按学校编号输出\n");printf("2.按成绩排名输出\n");printf("3.按男子成绩输出\n");printf("4.按女子成绩输出\n");fflush(stdin);scanf("%d",&choose);}inti=0;switch(choose){case0:return;case1:{for(i=0;i<n;i++){printf("%d:%s总分为%d\n",1+i,scl[i].name,scl[i].male_score+scl[i].female_score);}break;}case2:{int*max=newint[n];for(i=0;i<n;i++){max[i]=i;}//排序,max[i]统计第i大项位置for(i=0;i<n-1;i++){intj=1+i;for(j;j<n;j++)if(scl[max[i]].male_score+scl[max[i]].female_score<scl[max[j]].male_score+scl[max[j]].female_score){max[i]=max[j]+max[i];max[j]=max[i]-max[j];max[i]=max[i]-max[j];}}//输出for(i=0;i<n;i++){printf("%d:%s总分为%d\n",1+max[i],scl[max[i]].name,scl[max[i]].male_score+scl[max[i]].female_score);}break;}case3:{int*max=newint[n];for(i=0;i<n;i++){max[i]=i;}//排序,max[i]统计第i大项位置for(i=0;i<n-1;i++){intj=1+i;for(j;j<n;j++)if(scl[max[i]].male_score<scl[max[j]].male_score){max[i]=max[j]+max[i];max[j]=max[i]-max[j];max[i]=max[i]-max[j];}}//输出for(i=0;i<n;i++){printf("%d:%s男子项目总分为%d\n",1+max[i],scl[max[i]].name,scl[max[i]].male_score);}break;}case4:{int*max=newint[n];for(i=0;i<n;i++){max[i]=i;}//排序,max[i]统计第i大项位置for(i=0;i<n-1;i++){intj=1+i;for(j;j<n;j++)if(scl[max[i]].female_score<scl[max[j]].female_score){max[i]=max[j]+max[i];max[j]=max[i]-max[j];max[i]=max[i]-max[j];}}//输出for(i=0;i<n;i++){printf("%d:%s女子项目总分为%d\n",1+max[i],scl[max[i]].name,scl[max[i]].female_score);}break;}}}intmain(){intm,n,w;School_Listscl;Sport_Listspl;init(&m,&n,&w,&scl,&spl);intchoose=-1;while(choose!=0){printf("0.退出\n");printf("1.按次序输出学校信息\n");printf("2.查询学校在各项目标成绩\n");printf("3.打印全部项目\n");printf("4.查询项目标前几名\n\n");fflush(stdin);scanf("%d",&choose);switch(choose){case0:return0;case1:{printschool(n,scl);break;}case2:{intsid=0;while(sid>n||sid<1){printf("请输入需查询学校编号(1-%d):\n",n);scanf("%d",&sid);}getshool_mark(sid,m,w,scl,spl);break;}case3:{inti=0;for(i;i<m+w;i++){printf("%d:%s\n",spl[i].id,spl[i].name);}break;}case4:{intsid=0;while(sid>m+w||sid<1){printf("请输入需查询项目编号(1-%d):\n",m+w);fflush(stdin);scanf("%d",&sid);}getsport_inf(sid,scl,spl);break;}}}return0;}调试分析:a)因为\n忘记添加造成界面混乱。b)有值在循环时,程序自动判定有时不正当,所以需要循环前进行判定。或强制讲不正当内容默认为1.c.)max没有要求用户手册:演示程序运行环境为Windows8系统,C-free5中C-free5.0中运行。实施文件为:sports_meet.exe进入演示程序后即显示DOS形式界面:输入各个项目和名次,系统计算排名。接收其它命令后即实施对应运算和显示对应结果。测试结果:课内设计任务二:1.哈希表查找设计问题描述:设哈希表长为20,用除留余数法结构一个哈希函数,以开放定址法中线性探测再散列法作为处理冲突方法,编程实现哈希表查找、插入和建立算法。测试数据关键字组为{19,01,23,14,55,20,84,27,68,11,10,77},哈希函数为H(key)=key%132.需求分析:用户能够依据自己需求输入一个次序表(哈希表)经过用除留余数法结构哈希函数,并用开放地址二次探测再散列处理冲突。在经过排序后显示该哈希表。程序实施命令包含:创建哈希表输出哈希表二次探测再散列处理冲突3.概要设计:#include<malloc.h>#include<iostream.h>#include<iomanip.h>#include<process.h>#include<ctype.h>#defineTableSize20#defineSUCCESS1#defineUNSUCCESS0typedefintStatus;typedefstruct{ intkey;}Elemtype;typedefstruct{ Elemtypeelem; inttag;}HashItem;typedefstruct{ HashItemtable[TableSize]; intcurrentSize;}HashTable;StatusInitiate(HashTable*h){ inti; for(i=0;i<TableSize;i++) { (*h).table[i].tag=0; (*h).table[i].elem.key=NULL; } (*h).currentSize=0; returnSUCCESS;}intSearchHash(HashTableh,Elemtypex,intp){ inti=x.key%p; intj=i; while(h.table[j].tag==1&&h.table[j].elem.key!=x.key) { j=(j+1)%TableSize; if(j==i) { cout<<"哈希表中未查找到"<<x.key<<endl; returnTableSize; } } if(h.table[j].tag==1) {cout<<"该元素在哈希表第"<<j<<"位"<<endl;return-j;} else {cout<<"哈希表中未查找到"<<x.key<<endl;returnj;}}StatusInsert(HashTable*h,Elemtypex,intp){ inti=SearchHash(*h,x,p); if(i<0) {cout<<x.key<<"元素已存在,无法再录入,操作失败!"<<endl<<endl; returnUNSUCCESS;} else { if(i!=TableSize&&(*h).table[i].tag!=1) { (*h).table[i].elem.key=x.key; (*h).table[i].tag=1; (*h).currentSize++; cout<<"录入成功!"<<endl<<endl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 冀少版八年级生物上册专项突破5微生物的结构特点及作用课件
- 电工电子教案整流电路
- 《回族维吾尔族民俗风情》教案
- 中考化学专项复习:根据化学方程式的简单计算
- 电商平台农产品质量承诺书
- 屋顶创业园区租赁协议
- 政府公务车辆租赁协议
- 交通运输电子招投标技术探讨
- 企事业单位标识牌施工合同
- 城市绿化管理员聘用样本
- GB 253-2008煤油
- 投标报价明显低于采购预算价说明函
- 小学三年级下册综合实践活动.奇妙的水果-(16张)ppt
- 介绍南充特色文化课件
- 中医病历书写基本规范
- 挤出机螺杆组合原理和应用教育课件
- 五年级上册美术《船》-课件
- 《三黑和土地》ppt一
- 健康教育学【完整版】课件
- 工商企业管理专业案例分析报告
- 中外美术史年表
评论
0/150
提交评论