PAT L2-015 互评成绩

题目连接(请点击)
思路:这道题借助sort来做较快,先用一个二维数组来存储评分的成绩,然后对每个人的作业评分用sort进行排序,去掉最高最低(不用实际去掉,最后求和在平均时,for循环的数组下标注意一下就行),然后在对每一个人作业的评分求和,在平均

#include<iostream>
#include<algorithm>
int grade[10000][10];
double ave[20];
using namespace std;
int main()
{
  int N,K,M,i,j,l;
  while(cin>>N>>K>>M)
  {
    for(i=0;i<N;i++)
      for(j=0;j<K;j++)
        cin>>grade[i][j];
    for(i=0;i<N;i++)
    {
      sort(grade[i],grade[i]+K);
    }
    for(i=0;i<N;i++)
    {
      int sum=0;
      for(j=1;j<K-1;j++)//注意下标,因为要去掉最低与最高分
        sum=sum+grade[i][j];
      ave[i]=1.0*sum/(K-2);
    }
    sort(ave,ave+N);
    for(i=N-M;i<N-1;i++)
      printf("%.3lf ",ave[i]);
    printf("%.3lf\n",ave[i]);
  }
  return 0;
}

猜你喜欢

转载自blog.csdn.net/thwwu/article/details/79711697