请帮忙看一下为什么会错,谢谢。

P5726 【深基4.习9】打分

DevilsFlame @ 2023-08-08 12:27:52

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,a[101],s=0;
    double h=0;
    cin>>n;
    for(int i=1;i<=n;i++)cin>>a[i];
    for(int i=1;i<=n;i++){
        for(int j=i+1;j<=n;j++)
            if(a[j]<a[i]){
                a[j]=s;
                a[j]=a[i];
                a[i]=s;
        }
        h+=a[i];
    }
    h=h-a[1];
    h=h-a[n];
    cout<<fixed<<setprecision(2)<<h/(n-2)<<endl;
}

by ybc2025chenyuyang @ 2023-08-08 12:30:53

为什么要排序呀?直接在输入的时候找最大值就可以了呀


by ybc2025chenyuyang @ 2023-08-08 12:31:57

@yhdxg


by ybc2025chenyuyang @ 2023-08-08 12:32:28

另外此题为什么是橙题呀,请求降红


by ZQIN_P @ 2023-08-08 12:34:09

@ybc2025125chenyuyang 黄及以下难度差别不大,管理不会处理


by DevilsFlame @ 2023-08-08 12:34:29

怎么找最大值?还不会......


by ZQIN_P @ 2023-08-08 12:36:10

@yhdxg 您可以定义一个变量,初始值设为最小值,之后遇到比他大的就替换,直至遍历完整个数组即可


by ybc2025chenyuyang @ 2023-08-08 12:36:25

@yhdxg

    for(int i=1;i<=n;i++){
        maxn=max(maxn,a[i]);
        minn=min(minn,a[i]);    
    }

以上是求数组中最大值和最小值的代码


by Butterfly___qwq @ 2023-08-08 12:36:44

@yhdxg 你这又不是堆排序,你这是冒泡,h在累加的时候不一定加的是排好序的。


by ybc2025chenyuyang @ 2023-08-08 12:37:58

@xyz 对,优先队列方便多了


by DevilsFlame @ 2023-08-08 12:38:05

知道了


| 下一页