复制
收藏
提问
简洁

为丰富校园文化生活,学校拟组织 一场歌手大赛。比赛之中设置有评 委组,每名选手演唱完毕之后会由 评委组的十名评委打分。 1为保证比赛公平公正,防止作弊 和恶意打分,计算得分时会先去掉 最高分和最低分,再计算平均分。 本实例要求编写程序,实现根据需 求计算平均分的功能, 2 如果评委输入的不是0-10的数字, 或其他字符,提示输入无效

灵巧巫师
1天前
全网
文档
学术
百科
知识库
时间不限
自动
回答简洁模式
深入研究一些

歌手大赛评分系统设计

为丰富校园文化生活,学校拟组织一场歌手大赛。比赛之中设置有评委组,每名选手演唱完毕之后会由评委组的十名评委打分。为保证比赛公平公正,防止作弊和恶意打分,计算得分时会先去掉最高分和最低分,再计算平均分。本实例要求编写程序,实现根据需求计算平均分的功能。

功能要求

  1. 输入每个选手的数据包括编号、姓名、十个评委的成绩,根据输入计算出总成绩和平均成绩(去掉最高分,去掉最低分)。
  2. 如果评委输入的不是0-10的数字,或其他字符,提示输入无效。

设计思路

  1. 定义一个结构体来存储选手信息,包括选手编号、姓名和评委打分。
  2. 编写函数来计算每个选手的平均分,去掉最高分和最低分。
  3. 编写函数来验证评委输入的有效性。

代码实现

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

// 定义选手结构体
typedef struct {
    int id;
    char name[50];
    float scores[10];
    float average;
} Singer;

// 计算平均分
void calculate_average(Singer *singer) {
    float sum = 0.0, max = 0.0, min = 10.0; // 假设分数在0到10之间
    for (int i = 0; i < 10; i++) {
        float score = singer->scores[i];
        sum += score;
        if (score > max) max = score;
        if (score < min) min = score;
    }
    singer->average = (sum - max - min) / 8.0;
}

// 验证输入有效性
int validate_input(float score) {
    if (score < 0 || score > 10) {
        return 0; // 输入无效
    }
    return 1; // 输入有效
}

int main() {
    Singer singer;
    printf("请输入选手编号:");
    scanf("%d", &singer.id);
    printf("请输入选手姓名:");
    scanf("%s", singer.name);

    printf("请输入10位评委的打分(0-10):\n");
    for (int i = 0; i < 10; i++) {
        float score;
        printf("评委%d的打分:", i + 1);
        scanf("%f", &score);
        if (!validate_input(score)) {
            printf("输入无效,请重新输入0-10之间的数字。\n");
            i--; // 重新输入当前评委的分数
        } else {
            singer.scores[i] = score;
        }
    }

    calculate_average(&singer);
    printf("选手%s的平均得分是:%.2f\n", singer.name, singer.average);

    return 0;
}

代码说明

  1. 结构体定义:定义了一个Singer结构体,包含选手编号、姓名、评委打分和平均分。
  2. 计算平均分calculate_average函数用于计算选手的平均分,去掉最高分和最低分。
  3. 验证输入有效性validate_input函数用于验证评委输入的分数是否在0-10之间。
  4. 主函数:主函数中,首先输入选手的编号和姓名,然后循环输入10位评委的打分,并验证输入的有效性。最后调用calculate_average函数计算平均分并输出结果。

注意事项

  • 输入的分数必须在0-10之间,否则会提示输入无效并要求重新输入。
  • 计算平均分时,去掉一个最高分和一个最低分,然后计算剩余8个分数的平均值。

通过以上代码,可以实现歌手大赛评分系统的基本功能,确保评分的公平性和准确性。

你觉得结果怎么样?

以上内容由AI搜集生成,仅供参考

在线客服