唱歌比赛评委打分。去掉最高分和最低分,求平均分。

题目描述
四(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

img


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