Problem Description
青年歌手大奖赛中,评委会给参赛选手打分。选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。
Input
输入数据有多组,每组占一行,每行的第一个数是n(2<n<=100),表示评委的人数,然后是n个评委的打分
Output
对于每组输入数据,输出选手的得分,结果保留2位小数,每组输出占一行。
Sample Input
3 99 98 97
4 100 99 98 97
Sample Output
98.00
98.50
代码
#include <stdio.h>
int max();
int min();
int main()
{
int n;//评判人数
int i;
double sum;//总成绩
double average; //平均成绩
int max_grade,min_grade;//最高和最低成绩
while(scanf("%d",&n)!=EOF)
{ sum=0;//总成绩初始化
int grade[100];//评分
for(i=0;i<n;i++)
{
scanf("%d",&grade[i]);
sum+=grade[i];
}
max_grade=max(grade,n); //最大值
min_grade=min(grade,n);//最小值
average=(sum -max_grade-min_grade)/(n-2);//总成绩减去最大值和最小值再除以总人数减去二就是平均值
printf("%.2lf\n",average);//打印平均值
}
return 0;
}
int max(int a[], int n)//求最大值
{
int j,max_a=a[0];
for(j=1;j<n;j++)
{
if (a[j]>max_a)
{
max_a=a[j];
}
}
return max_a;
}
int min(int a[], int n)//求最小值
{
int j,min_a=a[0];
for(j=1;j<n;j++)
{
if (a[j]<min_a)
{
min_a=a[j];
}
}
return min_a;
}