L2-015 互评成绩 (25 分)

L2-015 互评成绩 (25 分)

题目链接

题意

L2-015 互评成绩 (25 分)_第1张图片

思路

  1. 先算出减去最大值和最小值的总和再求出平均值,然后将减去最大值和最小值之后的平均值 存入另一个数组中再进行从大到小的排序,再根据要求输出后m个成绩

坑点

  1. 输出格式要注意,最后一个输出没有空格
  2. 输出要保留3位小数
代码
#include
using namespace std;
double a[110];
double b[11100];//存入的是减去最大值和最小值之后的平均值 
int main()
{
    int n,k,m;
    cin>>n>>k>>m;
    for(int j=0;j<n;j++)//将n位同学的分数依次输入
    {
        double sum=0;//计算总和 
        double maxn=0;//记录最大值 
        double minn=999999;//记录最小值 
        for(int i=0;i<k;i++)
        {
            cin>>a[i];
            sum+=a[i];
            maxn=max(maxn,a[i]);
            minn=min(minn,a[i]);
        }
        sum=sum-minn-maxn;//将最大值和最小值减去 
        b[j]=sum/((k*1.0)-2.0);//算出平均分 
    }
    sort(b,b+n);//将最后的成绩从小到大排序 
    for(int i=n-m;i<n-1;i++)//从后往前依次输出m个同学的成绩 
    {
        printf("%.3lf ",b[i]);
    }
    printf("%.3lf",b[n-1]);//最后一个输出没有空格,要注意输出格式 
    cout<<endl;
    return 0;
}


你可能感兴趣的:(PTA,天梯赛,c++)