题目链接
思路:首先要先排序学生的成绩,再求和并且找出最高成绩和最低成绩,最后再排序新的成绩并输出
坑点:注意保留3位小数
代码:
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n,k,m;
cin>>n>>k>>m;
int a[n][k];
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<k;j++)
{
cin>>a[i][j];
}
sort(a[i],a[i]+k);//每次输入一组成绩就排序
}
double b[n];//用来存平均分
for(i=0;i<n;i++)
{
b[i]=0;
for(j=1;j<k-1;j++)
{
b[i]+=a[i][j];//依次求出每个人去掉最大最小分的成绩
}
b[i]/=k-2;//每个人的新成绩都要算平均分
}
sort(b,b+n);//排序新的成绩
for(i=n-m;i<n-1;i++)
{
printf("%.3f ",b[i]);//保留三位输出
}
printf("%.3f",b[n-1]);
}