1条回答 默认 最新
- 技术专家团-小桥流水 2021-11-19 14:02关注
代码如下:
#include <stdio.h> #include <stdlib.h> #define MAXRS 100 #define MAXKC 5 struct Student { int id; int score[MAXKC]; }; int main() { int n,m,k; int i,j; float avg,mid; struct Student stu[MAXRS],tmp; scanf("%d%d%d",&n,&m,&k); for (i=0;i<n;i++) { scanf("%d",&stu[i].id); for(j=0;j<m;j++) scanf("%d",&stu[i].score[j]); } //根据第k门成绩排序 for (i=0;i<n-1;i++) { for (j=0;j<n-1-i;j++) { if(stu[j].score[k-1] < stu[j+1].score[k-2]) { tmp = stu[j]; stu[j] = stu[j+1]; stu[j+1] = tmp; } } } //计算平均成绩 avg = 0; for(i=0;i<n;i++) avg += stu[i].score[k-1]; avg = avg/n; //中位数 mid = stu[(n+1)/2].score[k-1]; printf("%.1f %d",avg,mid); //根据学号排序 for (i=0;i<n-1;i++) { for (j=0;j<n-1-i;j++) { if(stu[j].id > stu[j+1].id) { tmp = stu[j]; stu[j] = stu[j+1]; stu[j+1] = tmp; } } } //输出所有第k门成绩为中位数的学生 for (i=0;i<n;i++) { if(stu[i].score[k-1] == mid) { printf("%d ",stu[i].id); for(j=0;j<m;j++) { if(j<m-1) printf("%d ",stu[i].score[j]); else printf("%d\n",stu[i].score[j]); } } } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用