设计一个程序实现选手得分(一维数组)

某大学举办校园歌手大赛,邀请7个评委参与评分,评分规则是去掉一个最高分,去掉一个最低分之后的平均分做为该选手的最终得分,请设计一个程序实现选手得分

该回答引用chatgpt:

#include <stdio.h>
#include <stdlib.h>

#define JUDGE_NUM 7  // 评委人数

// 从大到小排序,用于去掉最高分和最低分
int cmp(const void* a, const void* b) {
    return *(int*)b - *(int*)a;
}

int main() {
    int scores[JUDGE_NUM];  // 存放评委打分的数组
    int i;
    int sum = 0;            // 存放所有评委打分的总和
    int max_score, min_score;  // 存放最高分和最低分
    float avg_score;        // 存放最终得分

    // 输入每个评委的打分
    printf("请输入每个评委的分数:\n");
    for (i = 0; i < JUDGE_NUM; i++) {
        printf("第 %d 个评委:", i+1);
        scanf("%d", &scores[i]);
    }

    // 去掉最高分和最低分,并计算总分
    max_score = scores[0];
    min_score = scores[0];
    for (i = 0; i < JUDGE_NUM; i++) {
        if (scores[i] > max_score) {
            max_score = scores[i];
        }
        if (scores[i] < min_score) {
            min_score = scores[i];
        }
        sum += scores[i];
    }
    sum = sum - max_score - min_score;

    // 计算平均分并输出
    avg_score = (float)sum / (JUDGE_NUM - 2);
    printf("该选手的最终得分为:%.2f\n", avg_score);

    return 0;
}


这个程序首先定义了一个 JUDGE_NUM 宏来表示评委人数,然后定义了一个整型数组 scores 来存放每个评委打的分数,以及一些变量用于存放最高分、最低分和总分等信息。程序首先通过输入来获取每个评委的打分,然后去掉最高分和最低分,计算总分和平均分并输出。

这个程序的算法设计思想是,首先输入每个评委的打分,然后去掉最高分和最低分,计算剩余分数的平均值作为最终得分。这个程序的作用是计算一个选手的得分,可以应用于校园歌手大赛等评选活动。算法设计分析是指对该算法进行分析,包括时间复杂度、空间复杂度、稳定性等方面的评估。