问题标题: 酷町堂:4868 酷町猫的班**评选1

0
0
已解决
姜宇轩
姜宇轩
中级天翼
中级天翼

 

4868   酷町猫的班**评选1

经验值:0 时间限制:1000毫秒

题目描述 Description

酷町猫小时候在班上除了学习编程的时候非常认真,学习其它科目也非常认真。有一次班上评选班**,全班一共n位同学,除了酷町猫,其他同学都给酷町猫打分。
现在评分规则是这样:
去掉一个最高分和最低分后,剩下的分数取平均分,为酷町猫的最终评分。

输入描述 Input Description

共2行
第一行,输入一个n
第二行,输入n个数,最后一个数为0(表示酷町猫没有参与评分)

输出描述 Output Description

输出一个实数,为酷町猫的最终得分(保留2位小数)

样例输入 Sample Input

5

60 100 90 85 0

样例输出 Sample Output

87.50

数据范围及提示 Data Size & Hint

评分范围为0~100
n<=100

我的代码:

#include<iostream>

#include<cstdio>

using namespace std;

int main(){

    int n,a,h[n];

    cin>>n;

    int da=0,sum=0,cnt=0;

    for(int i=1;i<=n;i++){

        cin>>a;

        h[i]=a;

        if(a>da) da=a;

}

    for(int i=1;i<=n;i++){

        if(h[i]!=da){

            sum+=h[i];

            cnt++;

        }

    }

    printf("%.2f",sum*1.0/cnt);

    return 0;

}

我测试出来的:

输入

5

60 100 90 85 0

输出

-nan

 

我服了,真是个 * *,各位大佬能不能给我核心的代码,我很着急用,非常感谢!!!!!


0
已采纳
李宜和
李宜和
高级启示者
高级启示者
for(int i=1;i<=n;i++){
        cin>>b;
        if(b==0){
            continue;
        }
        if(b>maxn){
            maxn=b;
        }
        if(b<minn){
            minn=b;
        }
        sum+=b;
    }
    sum-=(maxn+minn);
    printf("%.2f",sum/(n-3.0));

 

0
潮文馨
潮文馨
新手光能
新手光能

double n,a;
    long long max=0,min=101,sum=0;
    cin>>n;
    for(int i=1;i<n;i++){
        cin>>a;
        sum+=a;
        if(a<min){
            min=a;
        } 
        if(a>max){
            max=a;
        }
    }
    sum=sum-min-max;
    n=n-3;
    printf("%.2f",sum/n);

这很简单

0
0
我要回答