C语言 歌手比赛系统 对一次歌手比赛的成绩进行管理,功能要求: 1输入每个选手的数据包括编

2025-06-22 12:09:47
推荐回答(1个)
回答1:

#include
#include
int main()
{

printf("***************************歌手比赛管理系统************************************\n");
printf(" G**********************G \n");
printf("***********************************G*******************************************\n");
printf(" 1.输入选手数据 2. 评委打分 3.计算平均分 \n 4.成绩排序");
printf(" 5.写入数据文件 6.打开文件\n 7.退出系统\n");
printf("*******************************************************************************\n");
for(;;)
{
printf(" 请输入操作名\r");
int n,i=1,j,t;
char a;
FILE *fp;
struct singer
{int mingci;
char name[20];
}player[100];
scanf("%c",&a);
switch(a)
{
case '1':
printf("请输入选手的个数(少于100)");
scanf("%d",&n);
int sum[100],max[100],min[100];
float c[100];
for(i=1;i<=n;i++)
{sum[i]=0;
max[i]=0;
min[i]=900000;
}

printf("请输入选手的姓名\n ");
for(i=1;i<=n;i++)
{
scanf(" %s",&player[i].name);
}
break;
case '2':
struct assess
{int num1;
int num2;
int num3;
int num4;
int num5;
int num6;
int num7;
int num8;
int num9;
int num10;
}ass[100];
for(j=1;j<=n;j++)
{printf("\n请输入评委1对歌手%d的打分",j);
scanf("%d",&ass[j].num1);
printf("请输入评委2对歌手%d的打分",j);
scanf("%d",&ass[j].num2);
printf("请输入评委3对歌手%d的打分",j);
scanf("%d",&ass[j].num3);
printf("请输入评委4对歌手%d的打分",j);
scanf("%d",&ass[j].num4);
printf("请输入评委5对歌手%d的打分",j);
scanf("%d",&ass[j].num5);
printf("请输入评委6对歌手%d的打分",j);
scanf("%d",&ass[j].num6);
printf("请输入评委7对歌手%d的打分",j);
scanf("%d",&ass[j].num7);
printf("请输入评委8对歌手%d的打分",j);
scanf("%d",&ass[j].num8);
printf("请输入评委9对歌手%d的打分",j);
scanf("%d",&ass[j].num9);
printf("请输入评委10对歌手%d的打分",j);
scanf("%d",&ass[j].num10);
sum[j]=sum[j]+ass[j].num1+ass[j].num2+ass[j].num3+ass[j].num4+ass[j].num5;
sum[j]=sum[j]+ass[j].num6+ass[j].num7+ass[j].num8+ass[j].num9+ass[j].num10;
}
printf("\n\n\n");
break;
case '3':
for(j=1;j<=n;j++)
{max[j]=(max[j]>ass[j].num1) ? max[j]:ass[j].num1;
max[j]=(max[j]>ass[j].num2) ? max[j]:ass[j].num2;
max[j]=(max[j]>ass[j].num3) ? max[j]:ass[j].num3;
max[j]=(max[j]>ass[j].num4) ? max[j]:ass[j].num4;
max[j]=(max[j]>ass[j].num5) ? max[j]:ass[j].num5;
max[j]=(max[j]>ass[j].num6) ? max[j]:ass[j].num6;
max[j]=(max[j]>ass[j].num7) ? max[j]:ass[j].num7;
max[j]=(max[j]>ass[j].num8) ? max[j]:ass[j].num8;
max[j]=(max[j]>ass[j].num9) ? max[j]:ass[j].num9;
max[j]=(max[j]>ass[j].num10) ? max[j]:ass[j].num10;
}
for(j=1;j<=n;j++)
{min[j]=(min[j] min[j]=(min[j] min[j]=(min[j] min[j]=(min[j] min[j]=(min[j] min[j]=(min[j] min[j]=(min[j] min[j]=(min[j] min[j]=(min[j] min[j]=(min[j] }
for(j=1;j<=n;j++)
{c[j]=(sum[j]-max[j]-min[j])/8.0;
printf("第%d个选手的平均的分是%15.2f\n",j,c[j]);
}
printf("\n\n\n");
break;
case '4':
for(i=1;i<=n;i++)
{for(j=1,t=1;j<=n;j++)
{if(c[i] t=t+1;
}
player[i].mingci=t;
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(i==player[j].mingci)
printf("%s是第%d 得分为%15.2f\n",player[j].name,i,c[j]);
}
printf("\n\n\n");
}
break;
case '5':
if((fp=fopen("C:\\singer.dat","wb"))==NULL)
{printf("不能打开文件\n");
}
for(i=1;i<=n;i++)
fwrite(&player[i],sizeof(struct singer),1,fp);
fclose(fp);
printf(" 保存成功\n\n\n");
break;
case '6':printf("请输入选手的个数");
printf("(为了准确显示,您输入的人数不应该超过已保存信息的人数)");
scanf("%d",&n);
if((fp=fopen("C:\\singer.dat","rb"))==NULL)
{printf("不能打开文件\n");
}
for(i=1;i<=n;i++)
{
fread(&player[i],sizeof(struct singer),1,fp);
printf("   %s的名次为%10d \n",player[i].name,player[i].mingci);
}
fclose(fp);
break;
case '7':exit(0);
}
}
return 0;
}