有人能帮忙看看吗?30分

B2095 白细胞计数

ZZYTCCBS @ 2022-08-07 11:27:38

#include<bits/stdc++.h>
using namespace std;
int main() {
    int n;
    double a[309];
    cin>>n;
    for (int i=1; i<=n; i++)
    {
        cin>>a[i];
    }
    double s=-1, x=1000000002, c=0; 
    for (int i=1; i<=n; i++)
    {
        if (a[i]>s)
        {
            s=a[i];
        }
        if (x>a[i])
        {
            x=a[i];
        }
        c+=a[i];
    }
    double z=(c-x-s)/(n-2);
    printf ("%.2f", z);
    cout<<" ";
    for (int i=1; i<=n; i++)
    {
        if (a[i]==s || a[i]==x)
        {
            a[i]=0;
        }
    }
    double m=0;
    for (int i=1; i<=n; i++)
    {
        if (a[i]!=0 && (a[i]-z)>m)
        {
            m=a[i]-z;
        }
    }
    printf ("%.2f", m);
    return 0;
}

by Nityacke @ 2022-08-07 11:48:10

@ZZYTCCBS 1.可能有多个最大或最小值 2.第37,39行未取绝对值 完整代码在下面

#include<bits/stdc++.h>
using namespace std;
int main() {
    int n;
    double a[309];
    cin>>n;
    for (int i=1; i<=n; i++)
    {
        cin>>a[i];
    }
    double s=-1, x=1000000002, c=0; 
    for (int i=1; i<=n; i++)
    {
        if (a[i]>s)
        {
            s=a[i];
        }
        if (x>a[i])
        {
            x=a[i];
        }
        c+=a[i];
    }
    double z=(c-x-s)/(n-2);
    printf ("%.2f", z);
    cout<<" ";
    for (int i=1; i<=n; i++)
    {
        if(a[i]==s) a[i]=s=0;
        else if(a[i]==x) a[i]=x=0;
    }
    double m=0;
    for (int i=1; i<=n; i++)
    {
        if (a[i]!=0&& fabs(a[i]-z)>m)
        {
            m=fabs(a[i]-z);
        }
    }
    printf ("%.2f", m);
    return 0;
}

|