东北大学数据结构运动会竞赛成绩统计实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“东北大学数据结构实验”。
《数据结构》实验报告
实验内容:运动会竞赛成绩统计
数据结构实验报告
一.课题概述........................................................1
二.概要设计原理................................................1
三.详细程序清单及注释说明............................2
四.运行与测试及结果........................................7
五.本人编写函数..............................................11
六.心得体会......................................................13
七.参考文献......................................................13
一、课题概述
1.实验目的:线性表应用类实验题目参考 2.实验内容:运动会竞赛成绩统计
【问题描述】
东北大学第51届运动大会成功举行。共有N个学院的男女代表队参赛。大会共设M个男子项目和W个女子项目。大会即将闭幕,准备公布成绩。【实验要求】
设计运动会竞赛成绩统计程序。
(1)采用顺序表或链表等数据结构。
(2)统计各代表队的男女总分和团体总分。
(3)公布各单项成绩的前六名和团体成绩的前三名。
(4)可以查询成绩。
二、概要设计原理
本程序主要采用了链表的存储结构,实现了对数据的存储,访问等操作。本程序实现了男子团体成绩、女子团体成绩、总成绩的输出。以及对个单项和团体成绩的前六名的输出。并实现了查找功能。
程序主要分为四个函数: 1.Zongfen()这个函数主要实现计算各学院的男子总分、女子总分、以及团体总分的计算以及存储操作。2.tuandui_paiming()此函数运用了排顺函数,实现了对团体总分的排序,以及前六名的输出。3.danxiang_paiming()此函数运用了排序函数,实现了对单项成绩的排名,以及对各个单项前六名的输出。4.chazhao()通过此函数,可以实现对各个学院的查找,并且显示出各个学院的单项成绩,以及男子团体成绩、女子团体成绩、总成绩的输出。5.main()6.主函数,实现对所有函数的协调,并且执行了一些程序中相当关键的部分,对整个程序的执行以及正确的输出起到了很大的作用。7.zhujiemain()主界面函数,实现函数运行时界面的输出,以及对接下来操作的选择,是整个程序的关键部分。
三、详细程序清单及注释说明
#include #include #include
typedef struct xueyuan { char name[10];
//学院名称
int Mdata[5];
//5个男子项目成绩
int Wdata[5];
//5个女子项目成绩
int man;
//男子项目总成绩
int woman;
//女子项目总成绩
int total;
//学院总成绩
struct xueyuan *next;}xueyuan,*Lxueyuan;Lxueyuan L;void zhujiemian();
char Mname[5][20];
//5个男子项目名称 char Wname[5][20];
//5个女子项目成绩 char b[9][10];int a[9];char xueyuan_name[][9]={“信息”,“机械”,“软件”,“材冶”,“资土”,“外国语”,“文法”,“工管”,“理”};int fenshu[9][10]={{7,8,5,6,2,5,8,7,4,5}, {5,6,8,7,4,5,2,1,3,5}, {8,6,5,4,2,3,5,4,7,4}, {8,5,4,7,1,5,4,7,8,5}, {7,5,4,6,5,8,6,9,5,6}, {7,5,6,4,2,3,8,9,6,5}, {7,5,4,2,6,9,8,5,6,1}, {5,6,4,8,5,6,5,4,9,8}, {8,5,4,2,6,8,9,6,5,8}
};
void shuju()
//数据处理 { int i,j;strcpy(Mname[0],“男子100米”);strcpy(Mname[1],“男子110米栏”);strcpy(Mname[2],“男子铅球”);strcpy(Mname[3],“男子铁饼”);strcpy(Mname[4],“男子体操”);strcpy(Wname[0],“女子100米”);strcpy(Wname[1],“女子100米栏”);strcpy(Wname[2],“女子铅球”);strcpy(Wname[3],“女子铁饼”);strcpy(Wname[4],“女子体操”);L=(Lxueyuan)malloc(sizeof(xueyuan));Lxueyuan p;L->next=NULL;for(i=0;i
p=(Lxueyuan)malloc(sizeof(xueyuan));
strcpy(p->name,xueyuan_name[i]);
for(j=0;j
p->Mdata[j]=fenshu[i][j];
for(j=0;j
p->Wdata[j]=fenshu[i][j+5];
p->next=L->next;L->next=p;} }
void zongfen()
//计算总分
以及输出 { int i;Lxueyuan p;p=L->next;printf(“----------------------各学院总分---------------------n”);printf(“学院
男子总成绩
女子总成绩
总成绩”);for(i=0;i
printf(“n%stt”,p->name);
p->man=p->Mdata[0]+p->Mdata[1]+p->Mdata[2]+p->Mdata[3]+p->Mdata[4];
p->woman=p->Wdata[0]+p->Wdata[1]+p->Wdata[2]+p->Wdata[3]+p->Wdata[4];
p->total=p->Mdata[0]+p->Mdata[1]+p->Mdata[2]+p->Mdata[3]+p->Mdata[4]+p->Wdata[0]+p->Wdata[1]+p->Wdata[2]+p->Wdata[3]+p->Wdata[4];
printf(“%dtt%dtt”,p->man,p->woman);
printf(“%d”,p->total);
p=p->next;} }
void paixu(int a[9],char b[9][10]){ int i,j,k;char c[10];for(i=0;i
for(j=0;j
{
if(a[j]
{
k=a[j];a[j]=a[j+1];a[j+1]=k;
strcpy(c,b[j]);strcpy(b[j],b[j+1]);strcpy(b[j+1],c);
}
} } void tuandui_paiming()
//公布团体排名 { int i;printf(“nnn--------------------团体排名--------------------n”);printf(“ 学院
第一名
第二名
第三名
第四名六名 ”);Lxueyuan p;p=L->next;
for(i=0;i
{
a[i]=p->man;strcpy(b[i],p->name);
p=p->next;
}
paixu(a,b);
printf(“n男子项目t”);
for(i=0;i
{
printf(“%st”,b[i]);
}
p=L->next;
for(i=0;i
{
a[i]=p->woman;strcpy(b[i],p->name);
p=p->next;
}
paixu(a,b);
printf(“n女子项目t”);
for(i=0;i
{
printf(“%st”,b[i]);
}
p=L->next;
for(i=0;i
{
a[i]=p->total;strcpy(b[i],p->name);
第五名第 p=p->next;
}
paixu(a,b);
printf(“n总项目tt”);
for(i=0;i
{
printf(“%st”,b[i]);
} printf(“n”);zhujiemian();}
void danxiang_paiming(){ int i,j;printf(“nnn--------------------单项排名--------------------n”);printf(“ 学院
第一名
第二名
第三名
第四名六名 ”);Lxueyuan p;for(j=0;j
p=L->next;
for(i=0;i
{
a[i]=p->Mdata[j];strcpy(b[i],p->name);
p=p->next;
}
paixu(a,b);
printf(“n%st”,Mname[j]);
for(i=0;i
{
printf(“%st”,b[i]);
} }
for(j=0;j
p=L->next;
for(i=0;i
{
a[i]=p->Wdata[j];strcpy(b[i],p->name);
p=p->next;
}
paixu(a,b);
第五名第printf(“n%st”,Wname[j]);
for(i=0;i
{
printf(“%st”,b[i]);
} } zhujiemian();}
void chazhao()
//查找函数 { int i;char abc[20];printf(“请输入您要查找的学院名称:”);scanf(“%s”,abc);Lxueyuan p;p=L->next;while(p){
if(strcmp(p->name,abc))
break;} if(p==NULL)
printf(“您查找的学院不存在!n”);else {
for(i=0;i
printf(“%s:t%d分n”,Mname[i],p->Mdata[i]);
for(i=0;i
printf(“%s:t%d分n”,Wname[i],p->Wdata[i]);
printf(“男子总成绩:t%d分n”,p->man);
printf(“女子总成绩:t%d分n”,p->woman);
printf(“总成绩:t%d分n”,p->total);} zhujiemian();}
void zhujiemian(){
printf(“---------------------n”
“----
1.总成绩及团体排名
”----
2.单项排名
“----
3.查找
----n”----n“----n”
“----
其他.退出
----n”
“---------------------n”);int choose;printf(“请输入您的选择:”);scanf(“%d”,&choose);switch(choose){ case 1:zongfen();tuandui_paiming();break;case 2:danxiang_paiming();break;case 3:chazhao();break;default:exit(0);} } void main()
//主函数 { shuju();
zhujiemian();}
四.运行与测试及结果
1.主界面 2.各学院总分
3.团体总分
4.单项排名
5.查找—信息
---机械
6.退出 五.本人编写函数
#include #include #include
typedef struct xueyuan { char name[10];
//学院名称
int Mdata[5];
//5个男子项目成绩
int Wdata[5];
//5个女子项目成绩
int man;
//男子项目总成绩
int woman;
//女子项目总成绩
int total;
//学院总成绩
struct xueyuan *next;}xueyuan,*Lxueyuan;Lxueyuan L;void zhujiemian();
char Mname[5][20];
//5个男子项目名称 char Wname[5][20];
//5个女子项目成绩 char b[9][10];int a[9];char xueyuan_name[][9]={“信息”,“机械”,“软件”,“材冶”,“资土”,“外国语”,“文法”,“工管”,“理”};int fenshu[9][10]={{7,8,5,6,2,5,8,7,4,5}, {5,6,8,7,4,5,2,1,3,5}, {8,6,5,4,2,3,5,4,7,4}, {8,5,4,7,1,5,4,7,8,5}, {7,5,4,6,5,8,6,9,5,6}, {7,5,6,4,2,3,8,9,6,5}, {7,5,4,2,6,9,8,5,6,1}, {5,6,4,8,5,6,5,4,9,8}, {8,5,4,2,6,8,9,6,5,8}
};void shuju()
//数据处理 { int i,j;strcpy(Mname[0],“男子100米”);strcpy(Mname[1],“男子110米栏”);strcpy(Mname[2],“男子铅球”);strcpy(Mname[3],“男子铁饼”);strcpy(Mname[4],“男子体操”);strcpy(Wname[0],“女子100米”);strcpy(Wname[1],“女子100米栏”);strcpy(Wname[2],“女子铅球”);strcpy(Wname[3],“女子铁饼”);strcpy(Wname[4],“女子体操”);L=(Lxueyuan)malloc(sizeof(xueyuan));Lxueyuan p;L->next=NULL;for(i=0;i
p=(Lxueyuan)malloc(sizeof(xueyuan));
strcpy(p->name,xueyuan_name[i]);
for(j=0;j
p->Mdata[j]=fenshu[i][j];
for(j=0;j
p->Wdata[j]=fenshu[i][j+5];
p->next=L->next;L->next=p;} }
void zongfen()
//计算总分
以及输出 { int i;Lxueyuan p;p=L->next;printf(“----------------------各学院总分---------------------n”);printf(“学院
男子总成绩
女子总成绩
总成绩”);for(i=0;i
printf(“n%stt”,p->name);
p->man=p->Mdata[0]+p->Mdata[1]+p->Mdata[2]+p->Mdata[3]+p->Mdata[4];
p->woman=p->Wdata[0]+p->Wdata[1]+p->Wdata[2]+p->Wdata[3]+p->Wdata[4];
p->total=p->Mdata[0]+p->Mdata[1]+p->Mdata[2]+p->Mdata[3]+p->Mdata[4]+p->Wdata[0]+p->Wdata[1]+p->Wdata[2]+p->Wdata[3]+p->Wdata[4];
printf(“%dtt%dtt”,p->man,p->woman);
printf(“%d”,p->total);
p=p->next;} } void zhujiemian(){
printf(“---------------------n”
“----
1.总成绩及团体排名
----n”
“----
2.单项排名
----n”
“----
3.查找
----n”
“----
其他.退出
----n”
“---------------------n”);int choose;printf(“请输入您的选择:”);scanf(“%d”,&choose);switch(choose){ case 1:zongfen();tuandui_paiming();break;case 2:danxiang_paiming();break;case 3:chazhao();break;default:exit(0);} } void main()
//主函数 { shuju();
zhujiemian();}
六.心得体会
通过这次的程序设计,使自己对链表的操作有了更进一步的了解。在程序设计中遇到了一些困难。
在程序设计中,对一些函数的运用有了更进一步的了解。
七.参考文献
《数据结构(C语言版)》 严蔚敏 清华大学出版社
《数据结构教程上机实验指导》 李春葆 清华大学出版社