先算平均数,再去离散较大的数,再算平均数

选手参加校园歌手大赛,编程读入20个整数(0-100之间)并存入数组中为评委打分。最后得分计算规则:先计算20个数的平均分,然后去掉与平均分相差十分以上的分数,最后把剩下的分数再取平均数作为最后得分。如果没有剩下分数,此次打分无效。
输入样例:
86 87 83 70 99 94 78 89 86 80 97 84 90 87 95 87 84 99 84 95
输出样例:
所有评委平均分:87.700分.
不合格得分:70 99 99.
最后得分:87.412分.

#include<iostream>
using namespace std;
int a[20];
int main() {
    double ave,s=0;
    int n=0;
    for(int i=0;i<20;i++){
        cin>>a[i];
        s+=a[i];
    }
    ave = s/20;
    s=0;
    for(int i=0;i<20;i++){
        if(fabs(a[i]-ave)<=10){
            s+=a[i]; 
            n++;
        }
    }
    if(n==0){
        cout<<"打分无效";
    }else{
        ave = s/n;
        cout<<"最终平均分:"<<ave;
    }
    return 0;
}

觉得有用的话采纳一下哈

代码如下,如有帮助,请帮忙采纳一下,谢谢。

#include<iostream>
#include <math.h>
#include <iomanip>
using namespace std;
int main() 
{
    int a[20],b[20];
    double ave,stotal=0,sef=0;
    int i,nef=0,nfail=0;
    for(int i=0;i<20;i++)
    {
        cin>>a[i];
        stotal+=a[i];
    }
    ave = stotal/20;
    
    for(i=0;i<20;i++)
    {
        if(fabs(a[i]-ave)<=10)
        {
            sef+=a[i]; 
            nef++;
        }else
            b[nfail++] = a[i];
    }
    if(nef ==0){
        cout<<"此次打分无效";
    }else
    {
        cout << "所有评委平均分:"<< fixed << setprecision(3) << ave <<"分."<<endl;
        cout << "不合格得分:";
        for(i=0;i<nfail;i++) 
        {
            if(i==0) cout << b[i];
            else cout <<" "<<b[i];
        }
        cout <<"."<<endl;
        cout<<"最后得分:"<< fixed << setprecision(3)<<sef/nef<<"分.";
    }
    return 0;
}