题目描述
四(1)班要举行一次歌唱比赛,以选拔更好的苗子参加校的歌唱比赛。评分办法如下:设N个评委,打N个分数(0 <= 每个分数 <= 10),去掉一个最高分,去掉一个最低分,剩下的评委的平均分即为该选手的最后得分。但是选手太多了,靠人工计算每个选手的得分太慢太麻烦。你能不能设计一个程序让计算机来算出选手的最后得分呢?
输入
第一行为一个整数N( 5 <= N <= 10 )
第二行为N个整数Ai( 0 <= Ai <= 10 )
输出
选手的最后得分(保留两位小数)
样例输入 Copy
5
5 6 7 8 9
样例输出 Copy
7.00
#include <stdio.h>
int main()
{
int n,sum=0,min,max,i;
scanf("%d", &n);
for(i=0;i<n;i++){
int a;
scanf("%d", &a);
sum += a;
if(i==0){
min = a;
max = a;
}
else if(a > max)
max = a;
else if(a > min)
min = a;
}
sum -= max;
sum -= min;
printf("%.2f",1.0*sum/(n-2));
return 0;
}
输出结果:
7.00
#include<stdio.h>
int main()
{
int i, j, temp, N, sum = 0, len, a[100];
double ave;
scanf_s("%d", &N);
for ( i = 0; i < N; i++)
scanf_s("%d", &a[i]);
len = i;
for (i = 0; i < len - 1; i++)
{
for (j = 0; j < len - 1 - i; j++)
{
if (a[j] > a[j + 1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for (i = 1; i < len - 1; i++)
sum += a[i];
ave = 1.0 * sum / (len - 2);
printf("%f", ave);
return 0;
}
下面是一个实现,供参考:
#include <stdio.h>
int main(void){
int N;
int Ai[10];
int i;
int min=10 ,max=0;
int all=0;
scanf("%d",&N); //获取评委有几个
for(i=0;i<N;i++){
scanf("%d",&Ai[i]); //获取评分
all+=Ai[i]; //累积所有分数
if(Ai[i]>max){ //寻找最高分
max=Ai[i];
}
if(Ai[i]<min){ //寻找最低分
min=Ai[i];
}
}
printf("%.2lf\n",(double)(all-max-min)/(N-2)); //打印成绩
return 0;
}