大家看一下

P5726 【深基4.习9】打分

8716555qwe @ 2022-10-14 20:50:36

我写的代码有问题,但洛谷给满分了

我是一个小萌新,学c一个月,代码有点乱,请大家多多包涵

#include <stdio.h>
int main()
{
    double n,i,max=0,min=12,x=0,a,result;//n是评委数,a是分数,x是次数,result是结果。

    scanf("%lf",&n);
    for(i=1;i<=n;i++){
        scanf("%lf",&a);
        if(a>max){
            max=a;
            a=max;
        }
    else {
    if(a<min){
            min=a;
            a=min;
        }
    }
        x=x+1;
        result=result+a;
    }
    printf("%.2lf",(result-max-min)/(x-2));
    return 0;
}

by 8716555qwe @ 2022-10-14 20:53:20

当我输入 3 1 2 3 时 我的min还是初始值12


by VitrelosTia @ 2022-10-14 20:54:55

@8716555qwe 我不是很理解您有什么问题


by CooooldWind_ @ 2022-10-14 21:24:22

很明显我不会C 但我会C++

#include <bits/stdc++.h>
using namespace std;
int p[1010],n;
int main()
{
    cin >> n;
    for(int i = 0;i < n;i++) cin >> p[i];
    sort(p,p + n);
    float a = 0;
    for(int i = 1;i < n - 1;i++) a = a + float(p[i]);
    cout << setprecision(3) << float(a / (n - 2));
    return 0;
}

原理:模拟。

p数组是存分数的。

sort是排序整个p数组(不知道C有没有)。

第一个for输入,第二个是自动省略掉了最小和最大的进行累加。

至于cin与cout,和scanf与printf等价。


by 8716555qwe @ 2022-10-17 19:44:41

@VT_SODC3DC3BSLF 抱歉,这么晚才回复。再说这个题吧,可能我没表达清楚吧。其实我想说的是,当我依次输入3 1 2 3时,我的max的数值会从1变为2再变成3,而我的min的数值将仍是初始值12。而最后(result-max-min)/(x-2)的数值将会是(6-3-12)/1=-9.00,这是不对的。 也就是说当我按从小到大的顺序输入时,我得到的是错误的答案。


by 8716555qwe @ 2022-10-17 19:45:34

@ColdWind6666 谢谢


|