题目描述
设计一个歌手比赛系统,对一次歌手比赛的成绩进行管理,功能要求:
1、输入每个选手的数据包括编号、姓名、十个评委的成绩,根据输入计算出总成绩和平均成绩(去掉最高分,去掉最低分)。
2、显示主菜单如下:1)输入选手数据2)评委打分3)成绩排序(按平均分)4)数据查询5) 追加/修改歌手数据6)写入数据文件7)退出系统。
案例代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SINGERS 100
#define JUDGES 10
struct Singer {
int id;
char name[50];
float scores[JUDGES];
float total_score;
float average_score;
};
struct Singer singers[MAX_SINGERS];
int singer_count = 0;
void inputSingerData() {
if (singer_count >= MAX_SINGERS) {
printf("选手数量已达上限\n");
return;
}
struct Singer newSinger;
printf("请输入选手编号: ");
scanf("%d", &newSinger.id);
printf("请输入选手姓名: ");
scanf("%s", newSinger.name);
printf("请输入十个评委的成绩:\n");
float max_score = 0, min_score = 10, sum = 0;
for (int i = 0; i < JUDGES; i++) {
scanf("%f", &newSinger.scores[i]);
if (newSinger.scores[i] > max_score) {
max_score = newSinger.scores[i];
}
if (newSinger.scores[i] < min_score) {
min_score = newSinger.scores[i];
}
sum += newSinger.scores[i];
}
newSinger.total_score = sum - max_score - min_score;
newSinger.average_score = newSinger.total_score / 8;
singers[singer_count++] = newSinger;
}
void displayMainMenu() {
printf("\n主菜单:\n");
printf("1) 输入选手数据\n");
printf("2) 评委打分\n");
printf("3) 成绩排序(按平均分)\n");
printf("4) 数据查询\n");
printf("5) 追加/修改歌手数据\n");
printf("6) 写入数据文件\n");
printf("7) 退出系统\n");
}
int main() {
int choice;
do {
displayMainMenu();
printf("请选择操作(1-7): ");
scanf("%d", &choice);
switch (choice) {
case 1:
inputSingerData();
break;
// 其他操作...
case 7:
printf("感谢使用,再见!\n");
break;
default:
printf("无效选择\n");
}
} while (choice != 7);
return 0;
}
这个程序定义了一个Singer
结构体来存储每个选手的数据,包括编号、姓名、评委成绩等信息。然后提供了输入选手数据的功能,并且在输入评委成绩时计算了总成绩和平均成绩(去掉最高分和最低分)。同时还提供了主菜单和基本的程序框架。
运行截图
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END