学生互评作业的简单规则是这样定的:每个人的作业会被k
个同学评审,得到k
个成绩。系统需要去掉一个最高分和一个最低分,将剩下的分数取平均,就得到这个学生的最后成绩。本题就要求你编写这个互评系统的算分模块。
#include<stdio.h>
int main()
{
int n,k,m;
scanf("%d %d %d",&n,&k,&m);
int a[n][k],i,j,l;
double average[n];//记下平均分的数组
for(i=0;i<n;i++){
for(j=0;j<k;j++){
scanf("%d",&a[i][j]);
}
//将每一行选择法排序,方便去掉最大和最小
int temp,index;
for(j=0;j<k-1;j++){
index=j;
for(l=j+1;l<k;l++){
if(a[i][index]>=a[i][l]){
index=l;
}
}
temp=a[i][index];
a[i][index]=a[i][j];
a[i][j]=temp;
}
double add=0;
for(j=1;j<k-1;j++){//去掉最大数的下标和最小数的下标
add+=a[i][j];
}
add=add/(k-2);
average[i]=add;
}
int index;
double flag=0;
for(i=0;i<n-1;i++){//将记录平均分的数组选择法排序
index=i;
for(j=i+1;j<n;j++){
if(average[index]>=average[j]){
index=j;
}
}
flag=average[index];
average[index]=average[i];
average[i]=flag;
}
int p;
p=n-m;//依照题目输出最大的个数
for(i=p;i<n;i++){
printf("%.3f",average[i]);
if(i!=n-1){//末尾不得有空格
printf(" ");
}
}
return 0;
}