3位评委给位选手评分,以平均分计算每位选手的最终成绩,并以平均值从高到低逆序形式输出,输出形式为;一等奖一人,二等奖一人,三等奖一人
生成二维数组,然后计算平均值,最后对数组排序就可以了,运行结果及代码如下:
代码:
#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;
}
#include<stdio.h>
#define N 100
int main()
{
int a,b,c;
int n;//选手人数
int sum[N];
double ave[N]; //平均分
printf("请输入选手人数:");
scanf_s("%d", &n);
for (int i = 0; i < n; i++)
{
scanf_s("%d %d %d", &a, &b, &c);
sum[i] = a + b + c;
}
for(int i=0;i<n-1;i++)
for(int j=0;j<n-1-i;j++)
if (sum[j] < sum[j + 1])
{
int temp;
temp = sum[j];
sum[j] = sum[j + 1];
sum[j + 1] = temp;
}
for (int i = 0; i < n; i++)
ave[i] = (double)sum[i] / 3;
for (int i = 0; i < n; i++)
printf("第%d名分数:%f\n",i+1,ave[i]);
return 0;
}