运动会比赛计分系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#include
#include
#include
#include
#define n 2//学校数目
#define m 1//男子项目数目
#define w 1//女子项目数目
#define null 0
struct itemnode{
int itemnum; //项目编号
int top; //取名次的数目
int range[5]; //名次
int mark[5]; //分数
char name[8];
}; //定义项目结点的类型
struct headnode{
int schoolnum; //学校编号
int score; //学校总分
int mscore; //男团体总分
int wscore; //女团体总分
itemnode c[m+w]; //项目数组
};//定义头结点类型
headnode h[n];//定义一个头结点数组
void inputinformation() //输入信息,建立系统
{
int i,j,k,s;
char ch;
for(i=0;i { h[i].score=0; h[i].mscore=0; h[i].wscore=0; //初始化头结点 printf("====参赛学校编号:"); scanf("%d",&h[i].schoolnum); //输入头结点信息 for(j=0;j { printf(" 参赛项目编号:"); scanf("%d",&h[i].c[j].itemnum); printf(" 取前3名or前5名:"); scanf("%d",&h[i].c[j].top); printf(" 所取名次数量:"); scanf("%d",&k); //输入项目信息 for(s=0;s { h[i].c[j].range[s]=0; h[i].c[j].mark[s]=0; //初始化排名和分数 printf(" 所获得的名次:"); scanf("%d",&h[i].c[j].range[s]); //输入所获名次信息 printf(" 该运动员姓名:"); getchar(ch); gets(h[i].c[j].name); if(h[i].c[j].top==3) switch(h[i].c[j].range[s]) { case 0: h[i].c[j].mark[s]=0; break; case 1: h[i].c[j].mark[s]=5; break; case 2: h[i].c[j].mark[s]=3; break; case 3: h[i].c[j].mark[s]=2; break; } else switch(h[i].c[j].range[s]) { case 0: h[i].c[j].mark[s]=0; break; case 1: h[i].c[j].mark[s]=7; break; case 2: h[i].c[j].mark[s]=5; break; case 3: h[i].c[j].mark[s]=3; break; case 4: h[i].c[j].mark[s]=2; break; case 5: h[i].c[j].mark[s]=1; break; } h[i].score=h[i].score+h[i].c[j].mark[s]; //按取前三名还是取前五名分别记分 if(j<=m-1) h[i].mscore=h[i].mscore+h[i].c[j].mark[s];//是男子项目(取前三名)则记到男子分数里面去 else h[i].wscore=h[i].wscore+h[i].c[j].mark[s];//是女子项目(取前五名)则记到女子项目里面去 } printf("\n"); } } printf("\n"); } void output() //输出函数 { int choice,i,j,k; int remember[n]; int sign; do { printf("*******************1.按参赛学校编号输出.*******************\n"); printf("*******************2.按参赛学校总分输出.*******************\n"); printf("\n*********************** 请选择编号*************************\n:"); scanf("%d",&choice); switch(choice) { case 1: for(i=0;i { printf("\n\n*****学校编号:%d",h[i].schoolnum); printf("*****学校总分:%d" ,h[i].score); printf("*****男团总分:%d",h[i].mscore); printf("*****女团总分:%d ",h[i].wscore); } //按编号顺序输出 break; case 2: for(i=0;i remember[i]=i; for(i=0;i { for(j=i+1;j if(h[remember[i]].score { k=remember[i]; remember[i]=remember[j]; remember[j]=k; } } // 用冒泡排序方法,用辅助数组记住头结点下标 for(i=0;i { printf("\n\n*****学校总分:%d",h[remember[i]].score); printf("*****学校编号:%d" ,h[remember[i]].schoolnum); printf("*****男团总分:%d",h[remember[i]].mscore); printf("*****女团总分:%d ",h[remember[i]].wscore); //按所记下标顺序输出 } //按学校总分输出 break; } printf("\n"); printf("请选择 2 继续,0 跳出\n");