top1编程
← 返回题目
题解

【入门】去掉x个最高最低分后的平均分

1 条题解

  • 0
    @ 2026-7-28 22:09:27
    #include<bits/stdc++.h>
    using namespace std;
    int main(){
        int n,x,s=0;//n:分数总数,x:要去掉的个数,s:累加器
        double avg;//avg:平均分
        int a[10000];
        cin>>n>>x;
        for(int i=0;i<n;i++){//填入数据 
            cin>>a[i];
        }
        for(int i=1;i<n;i++){
    	//冒泡排序,为了找到x个最大最小值的位置 
            for(int j=0;j<=n-1-i;j++){
                if(a[j]>a[j+1]){
                     swap(a[j],a[j+1]);
                }
            }
        }
        for(int i=x;i<n-x;i++){
    	//求出去掉x个最大最小值后的和 
            s+=a[i];
        }
        avg=s*1.0/(n-2*x);//求平均数 
        cout<<fixed<<setprecision(1)<<avg;//保留一位小数 
        return 0;
    }
    
    • 1