#include
#include
#define N 10//定义最多选手个数
typedef struct xuanshou
{
char bianhao[20];//选手编号
char name[20];//选手姓名
float a[10];//评委打分
float grade;//平均分,嫌麻烦可以直接放到数组里去
}Xu;
Xu xuanshou[N];//选手数组
Xu temp;//用来调换
void init()//输入函数
{
int i,j;
float sum,max,min;
char c;
for(i=0;i
sum=0;//统计总分最后求得平均分
max=0;min=100;
printf("请输入第%d个选手的姓名:",i+1);
scanf("%s",&xuanshou[i].name);
printf("请输入10位评委的打分:");
for(j=0;j<10;j++)
{
scanf("%f",&xuanshou[i].a[j]);
scanf("%c",&c);
sum+=xuanshou[i].a[j];
if(max
if(j==9)xuanshou[i].grade=(sum-max-min)/8;
}
}
temp.grade=xuanshou[0].grade;
}
void paixu()//对数组进行从大到小的排序
{
int i,j,k;
for(i=0;i
if(temp.grade
strcpy(temp.name,xuanshou[i].name);
temp.grade=xuanshou[i].grade;
for(k=0;k<10;k++)
temp.a[k]=xuanshou[i].a[k];//temp存储当前排序中要排位置的信息
strcpy(xuanshou[i].name,xuanshou[j].name);
xuanshou[i].grade=xuanshou[j].grade;
for(k=0;k<10;k++)
xuanshou[i].a[k]=xuanshou[j].a[k];//将较大的移到当前要排序的位置
strcpy(xuanshou[j].name,temp.name);
xuanshou[j].grade=temp.grade;
for(k=0;k<10;k++)
xuanshou[j].a[k]=temp.a[k];//将之前排序位置元素移至该处
}
}
void chazhao()
{
char s[20];
int i;
printf("请输入选手编号或姓名:");
scanf("%s",s);
for(i=0;i
{
printf("选手分数为:%d 排名为:%d",xuanshou[i].grade,i+1);
break;
}
}
void display()//显示输出函数
{
int i;
printf("名次\t编号\t姓名\t分数\n");
for(i=0;i
}
int main()
{
int n;
printf(" ===========歌手比赛==========\n");
printf("操作:(退出请直接关闭窗口)\n1.输入信息\n2.排序输出名次\n3.查找选手\n");
while(1)
{
printf("选择:");
scanf("%d",&n);
switch(n)
{
case 1:
{
printf("请输入选手信息\n");
printf("注意:输入评委分数的时候请用空格将各分数隔开输入(例如:10 20 30 40Enter)\n");
init();
paixu();
}break;
case 2:display();
case 3:chazhao();
}
}
}
拿不下来