/*思路: 一行一行的判断, 输入一行就排序,去掉两端,求平均
吧平均的存入avr[N]中,再对AVR排序,输出最后M个*/
#include <stdio.h>
#include <stdlib.h>
int cmp(void const *a,void const *b);
int cmp2(void const *a,void const *b);
int main(){
int N,K,M,i,j,l,count;
scanf("%d%d%d",&N,&K,&M);
double avr[N]; //每一个人的平均成绩
int a[K]; //每个人的每个成绩
for(i=0;i<N;i++){
count = 0;
for(j=0;j<K;j++){
scanf("%d",&a[j]);
}
qsort(a,K,sizeof(a[0]),cmp); //若是一个二维的int型数组qsort(a[i],K,sizeof(a[i][0]),cmp);
for(l=1;l<K-1;l++){
count += a[l];
}
avr[i] = count*1.0/(K-2);
}
qsort(avr,N,sizeof(avr[0]),cmp2);
int c = 0;
for(i=N-M;i<N;i++){
if(c==0){
printf("%.3f",avr[i]);
c++;
}else{
printf(" %.3f",avr[i]);
}
}
}
int cmp(void const *a,void const *b){ //升序
return *(int *)a - *(int *)b;
}
int cmp2(void const *a,void const *b){
return *(double *)a > *(double *)b ? 1 : -1;
}
L2-015 互评成绩 (25分)
最新推荐文章于 2023-01-25 23:33:53 发布