无
掐头去尾求均分
题目描述
有 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;
}