3位评委给位选手评分,以平均分计算每位选手的最终成绩,并以平均值从高到低逆序形式输出,输出形式为;一等奖一人,二等奖一人,三等奖一人
2条回答 默认 最新
qfl_sdu 2022-05-28 10:37关注生成二维数组,然后计算平均值,最后对数组排序就可以了,运行结果及代码如下:

代码:
#include <stdio.h> #define MAXNMB 100 int main() { int a[MAXNMB][3]; float av[MAXNMB],t; int index[MAXNMB]; int i,j,n,k; printf("请输入参赛选手人数:"); scanf("%d",&n); //或者用 scanf_s("%d",&n); for(i=0;i<n;i++) { printf("请输入3位评委对选手%d的评分:",i+1); index[i] = i; av[i] = 0; for(j=0;j<3;j++) { scanf("%d",&a[i][j]); av[i] += a[i][j]; } av[i] = av[i]/3.0; } //排序 for (i=0;i<n-1;i++) { for(j=0;j<n-1-i;j++) { if(av[j] < av[j+1]) { t = av[j]; av[j] = av[j+1]; av[j+1] = t; k = index[j]; index[j] = index[j+1]; index[j+1] = k; } } } //输出结果 printf("一等奖一名,二等奖一名,三等奖一名\n"); /* printf("一等奖:选手%d 得分:",index[0]+1); for(i=0;i<3;i++) printf("%d ",a[index[0]][i]); printf(",平均分:%f\n",av[0]); printf("二等奖:选手%d 得分:",index[1]+1); for(i=0;i<3;i++) printf("%d ",a[index[1]][i]); printf(",平均分:%f\n",av[1]); printf("三等奖:选手%d 得分:",index[2]+1); for(i=0;i<3;i++) printf("%d ",a[index[2]][i]); printf(",平均分:%f\n",av[2]); //所有结果 printf("--------所有人得分-----------\n");*/ for(i = 0;i<n;i++) { printf("排名:%d. 选手:%d 得分:",i+1,index[i]+1); for(j=0;j<3;j++) printf("%d ",a[index[i]][j]); printf(",平均分:%f\n",av[i]); } return 0; }本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录