#include <stdio.h>
//定义学生结构体,包含学生编号和成绩两部分
typedef struct Competitor
{ double grade;
int number;
} Competitor;
double get_grade(int n)
{
int sum = 0;
int min,max;//定义总分,最高分,最低分
int s;//老师打分
int i;//循环控制变量
double average;//定义平均分
printf("现在对编号为%d的选手打分\n",n);
for(i=0;i<8;i++)
{
printf("请第%d位老师打分:\n",i+1);
scanf("%d",&s);
//第一个老师打的分赋值
if(i==0)
{
max=s;
min=s;
}
//找最高分最低分
if(max<s) max=s;
if(min>s) min=s;
sum = sum + s;
}
sum = sum - min - max;//去掉最高分、去掉最低分
average = sum/6.0;
printf("编号为%d的选手平均分为%f\n",n,average);
return average;
}
int main()
{
Competitor c[5];//20位太多了,5位测试
int i;
int j;
for(i=0;i<5;i++)
{
int n;
printf("请输入学生编号:");
scanf("%d",&n);
c[i].number = n;
c[i].grade = get_grade(n);
}
printf("打分完毕!");
for(j=0;j<3;j++)
{
for(i=j+1;i<5;i++)
{
if(c[i].grade>c[j].grade)
{
double temp_g = c[j].grade;
int temp_n = c[j].number;
c[j].grade = c[i].grade;
c[j].number = c[i].number;
c[i].grade = temp_g;
c[i].number = temp_n;
}
}
printf("第%d名选手编号为%d,成绩为:%lf",j+1,c[j].number,c[j].grade);
}
}