3位评委给位选手评分,以平均分计算每位选手的最终成绩

3位评委给位选手评分,以平均分计算每位选手的最终成绩,并以平均值从高到低逆序形式输出,输出形式为;一等奖一人,二等奖一人,三等奖一人

生成二维数组,然后计算平均值,最后对数组排序就可以了,运行结果及代码如下:

img

代码:

#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;
}