本文实例为大家分享了C语言实现歌手比赛系统的具体代码,供大家参考,具体内容如下
一、项目简介
对一次歌手比赛的成绩进行管理
输入每个选手的数据包括编号、姓名、十个评委的成绩,根据输入计算出总成绩和平均成绩(去掉最高分,去掉最低分)。
二、任务概述
要求歌手比赛系统实现对学生基本信息(如编号、姓名、性别等)及十个评委的成绩的管理(增加、删除、修改或更新、查询、统计、保存到文件、从文件装载等操作)。
三、功能展示
四、思维导图
五、程序源码
#include<stdio.h>
#include<stdlib.h>
struct singer
{
int num;
char name[10];
float score[20];
float aver;
float sum;
int ord;
}singer[100];
void singer_information(int b)
{
int i;
for(i=1;i<=b;i++)
{
printf("请输入选手编号:");
scanf("%d",&singer[i].num);
printf("请输入选手姓名:");
scanf("%s",&singer[i].name);
}
}
int singer_score(int b)
{
int j,c;
float a[50];
for(j=1;j<=b;j++)
{
printf("\n请输入评委1对歌手%d的打分",j);
scanf("%f",&singer[j].score[1]);
printf("请输入评委2对歌手%d的打分",j);
scanf("%f",&singer[j].score[2]);
printf("请输入评委3对歌手%d的打分",j);
scanf("%f",&singer[j].score[3]);
printf("请输入评委4对歌手%d的打分",j);
scanf("%f",&singer[j].score[4]);
printf("请输入评委5对歌手%d的打分",j);
scanf("%f",&singer[j].score[5]);
printf("请输入评委6对歌手%d的打分",j);
scanf("%f",&singer[j].score[6]);
printf("请输入评委7对歌手%d的打分",j);
scanf("%f",&singer[j].score[7]);
printf("请输入评委8对歌手%d的打分",j);
scanf("%f",&singer[j].score[8]);
printf("请输入评委9对歌手%d的打分",j);
scanf("%f",&singer[j].score[9]);
printf("请输入评委10对歌手%d的打分",j);
scanf("%f",&singer[j].score[10]);
a[j]=singer[j].score[1]+singer[j].score[2]+singer[j].score[3]+singer[j].score[4]+singer[j].score[5]+singer[j].score[6]+singer[j].score[7]+singer[j].score[8]+singer[j].score[9]+singer[j].score[10];
singer[j].sum=a[j];
}
}
int singer_grade(int b)
{
int a,c;
float n[50],max,min;
for(a=1;a<=b;a++)
{
max=singer[a].score[1];
min=singer[a].score[1];
for(c=1;c<=10;c++)
{
if(max<singer[a].score[c]) max=singer[a].score[c];
if(min>singer[a].score[c]) min=singer[a].score[c];
}
n[a]=(singer[a].sum-max-min)/8.0;
singer[a].aver=n[a];
}
}
int order(int b)
{
int j,t,i;
for(i=1;i<=b;i++)
{
for(j=1,t=1;j<=b;j++)
{
if(singer[i].aver<singer[j].aver)
{
t=t+1;
}
}
singer[i].ord=t;
}
for(i=1;i<=b;i++)
{
for(j=1;j<=b;j++)
{
if(i==singer[j].ord)
printf("%s是第%d 得分为%15.2f\n",singer[j].name,i,singer[j].aver);
}
printf("\n\n\n");
}
}
int search(int c)
{
printf("所查选手的数据:编号%d 姓名%s 平均成绩%f 总成绩%f\n",singer[c].num,singer[c].name,singer[c].aver,singer[c].score[c]);
}
int addition(int i)
{
printf("请输入选手编号及姓名:");
scanf("%d,%s/n",&singer[i+1].num,&singer[i+1].name);
printf("请输入评委1对歌手%d的打分",i+1);
scanf("%d",&singer[i+1].score[1]);
printf("请输入评委2对歌手%d的打分",i+1);
scanf("%d",&singer[i+1].score[2]);
printf("请输入评委3对歌手%d的打分",i+1);
scanf("%d",&singer[i+1].score[3]);
printf("请输入评委4对歌手%d的打分",i+1);
scanf("%d",&singer[i+1].score[4]);
printf("请输入评委5对歌手%d的打分",i+1);
scanf("%d",&singer[i+1].score[5]);
printf("请输入评委6对歌手%d的打分",i+1);
scanf("%d",&singer[i+1].score[6]);
printf("请输入评委7对歌手%d的打分",i+1);
scanf("%d",&singer[i+1].score[7]);
printf("请输入评委8对歌手%d的打分",i+1);
scanf("%d",&singer[i+1].score[8]);
printf("请输入评委9对歌手%d的打分",i+1);
scanf("%d",&singer[i+1].score[9]);
printf("请输入评委10对歌手%d的打分",i+1);
scanf("%d",&singer[i+1].score[10]);
}
main()
{
int a,b,c,i,n=1;
FILE *fp;
fp = fopen("歌手.txt","wt+");
printf(" 歌手比赛系统 \n");
printf("*********************\n");
printf("* 1)输入选手数据 *\n");
printf("* 2)评委打分 *\n");
printf("* 3)成绩排序 *\n");
printf("* 4)数据查询 *\n");
printf("* 5)追加学生数据 *\n");
printf("* 6)写入数据文件 *\n");
printf("* 7)退出系统 *\n");
printf("*********************\n");
while(n)
{
printf("你想进行的操作: ");
scanf("%d",&a);
printf("\n\n");
switch(a)
{
case 1:
printf("你想进行的操作:输入选手数据\n ");
printf("请输入选手个数");
scanf("%d",&b);
singer_information(b);
printf("----------------------\n");
break;
case 2:
printf("你想进行的操作:评委打分\n ");
singer_score(b);
printf("-----------------------\n");
break;
case 3:
printf("你想进行的操作:成绩排序(按平均分)\n ");
singer_grade(b);
order(b);
printf("-------------------------\n");
break;
case 4:
printf("你想进行的操作:数据查询\n ");
printf("请输入要查询选手编号:");
scanf("%d",&c);
printf("所查选手的数据:编号%d 姓名%s 平均成绩%f 总成绩%f\n",singer[c].num,singer[c].name,singer[c].aver,singer[c].sum);
printf("--------------------------\n");
break;
case 5:
printf("你想进行的操作:追加学生数据\n ");
addition(b);
printf("---------------------------\n");
break;
case 6:
printf("你想进行的操作:写入数据文件\n ");
printf("将数据写入文件中:\n");
for (i = 0 ; i <=b ; i++)
{
fprintf(fp,"%d ",singer[i].num);
fprintf(fp,"%s ",singer[i].name);
fprintf(fp,"%d\n",singer[i].aver);
}
break;
case 7: exit(0);
default :printf("输入错误请重新输入!\n");
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。