【2016-c-三-2】歌咏比赛,去掉最高分最低分,输出前三名

#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);
    }

}