在校园中,每年都会举行各种文艺活动,其中校园歌手大赛无疑是其中最受欢迎的活动之一。为了公平、公正地评选出真正的音乐达人,我们可以利用C语言编写一个评分系统。本文将详细揭秘如何用C语言实现一个校园歌手评分系统。

1. 系统设计

1.1 功能需求

  • 输入歌手的基本信息(如姓名、歌曲名称、演唱时长等)。
  • 输入评委的打分。
  • 计算每位歌手的平均分。
  • 按平均分排名。
  • 输出排名结果。

1.2 系统结构

  • 数据存储:使用结构体存储歌手信息和评委打分。
  • 功能模块:包括输入、计算、排序和输出。
  • 用户界面:通过控制台实现与用户的交互。

2. 编程实现

2.1 数据结构

#include <stdio.h>
#include <string.h>

#define MAX_SONGERS 10
#define MAX_JUDGES 5

typedef struct {
    char name[50];
    char song_name[50];
    int duration; // 单位:秒
    float scores[MAX_JUDGES];
    float average_score;
} Singer;

Singer singers[MAX_SONGERS];
int singer_count = 0;

2.2 功能模块

2.2.1 输入模块

void input_singer_info(int index) {
    printf("请输入歌手姓名:");
    scanf("%s", singers[index].name);
    printf("请输入歌曲名称:");
    scanf("%s", singers[index].song_name);
    printf("请输入演唱时长(秒):");
    scanf("%d", &singers[index].duration);
    printf("请输入评委打分(满分10分):\n");
    for (int i = 0; i < MAX_JUDGES; i++) {
        printf("评委%d:", i + 1);
        scanf("%f", &singers[index].scores[i]);
    }
}

2.2.2 计算模块

void calculate_average_score() {
    for (int i = 0; i < singer_count; i++) {
        float sum = 0;
        for (int j = 0; j < MAX_JUDGES; j++) {
            sum += singers[i].scores[j];
        }
        singers[i].average_score = sum / MAX_JUDGES;
    }
}

2.2.3 排序模块

void sort_singers() {
    for (int i = 0; i < singer_count - 1; i++) {
        for (int j = 0; j < singer_count - i - 1; j++) {
            if (singers[j].average_score < singers[j + 1].average_score) {
                Singer temp = singers[j];
                singers[j] = singers[j + 1];
                singers[j + 1] = temp;
            }
        }
    }
}

2.2.4 输出模块

void output_results() {
    printf("\n比赛结果如下:\n");
    for (int i = 0; i < singer_count; i++) {
        printf("排名:%d\t歌手:%s\t平均分:%.2f\n", i + 1, singers[i].name, singers[i].average_score);
    }
}

2.3 主函数

int main() {
    printf("请输入参赛歌手数量:");
    scanf("%d", &singer_count);

    for (int i = 0; i < singer_count; i++) {
        printf("\n输入第%d位歌手的信息:\n", i + 1);
        input_singer_info(i);
    }

    calculate_average_score();
    sort_singers();
    output_results();

    return 0;
}

3. 总结

本文详细介绍了如何用C语言实现一个校园歌手评分系统。通过编写这个系统,我们可以让评委和观众更加公正、直观地了解每位歌手的表现。当然,这个系统还有很多可以优化的地方,例如添加选手晋级、复活赛等功能。希望这篇文章能对你有所帮助。