HDU 2014青年歌手大奖赛_评委会打

本文介绍了一种去除最高分和最低分后计算平均得分的方法,适用于青年歌手大奖赛等评分场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 main() {
	int n;
	double s[100], sum, ave, t;
	while (scanf("%d", &n) != EOF) {
		sum = 0;
		for (int k = 0; k < n; k++) { 
			scanf("%lf", &s[k]);
			sum += s[k];
		}

		for (int i = 0; i < n - 1; i++) 
			for (int j = 0; j < n - 1 - i; j++)  
				if (s[j] > s[j + 1]) {
					t = s[j];
					s[j] = s[j + 1];
					s[j + 1] = t;
				}
	//	for (int i = 0; i < n; i++)
	//		printf("%lf ", s[i]);

		sum = sum - s[0] - s[n-1];
		ave = sum / (n-2);
		printf("%.2lf\n", ave);
	}
	return 0;
}

自己写的好像有点多。还排序了。


别人的代码:

    #include<stdlib.h>
    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #define INF 0x3f3f3f3f
    int main(){
        int n,i;
        while(scanf("%d",&n)!=EOF){
            int max=0,min=INF,sum=0,tmp;
            for(i=0;i<n;i++){
                scanf("%d",&tmp);
                sum+=tmp;
                if(max<=tmp)
                    max=tmp;
                if(min>=tmp)
                    min=tmp;
            }
            sum=sum-max-min;
            printf("%.2lf\n",sum*1.0/(n-2));
        }
    }
别人的解法:找到分别最大和最小的数,然后从总和中减去他们,再求平均数(不要排序)

0x3f3f3f3f 无穷大常量


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值