掐头去尾求平均值(去掉最高和最低)

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容

我的解答思路和尝试过的方法
我想要达到的结果

掐头去尾求均分
题目描述

有 n个学生,每个学生包括学号、姓名、成绩,学号和姓名是长度小于 20 个字符的字符串,成绩是整数,成绩按百分制计算。

要求输入 n个学生的数据,计算掐头去尾的平均分。

掐头去尾的平均分计算方法为:去掉一个最高分,去掉一个最低分,再计算平均分。

输入描述

输入共n+1行

第一行包括一个整数n(n < 10)

接下来有n行输入,每行输入一个学生的学号、姓名、成绩

输出描述

输出一行,包括一个数字,该数为按照题目要求的方法计算出的平均分,结果保留两位小数

输入样例

3

A001 Jane 90

A002 Puck 76

A003 Elan 84
输出样例

84.00

求出最高分、最低分和总分,然后(总分-最高分-最低分)/(人数-2)就是平均分

#include <stdio.h>
typedef struct _student
{
    char name[20];
    char id[20];
    float s;
}student;
int main()
{
    student s[100];
    int n,i;
    float max=0,min=101,sum=0;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%s %s %f",s[i].name,s[i].id,&s[i].s);
        sum += s[i].s;
        if(s[i].s>max)
            max = s[i].s;
        if(s[i].s < min)
            min = s[i].s;
    }
    printf("%.2f",(sum-max-min)/(n-2));
    return 0;
}