编写程序题 3-1.某歌手大赛,共有5个评委给歌手打分,分数采用百分制,去掉一个最高分,去掉一个最低分,然后取平均分,最后得到歌手的最终平均成绩(保留2 位小数)。编程实现。
时间: 2024-12-29 10:36:20 浏览: 14
为了实现这个功能,你需要首先定义一个结构体来存储歌手的得分信息,然后创建一个函数来计算最终的平均分。以下是一个简单的C语言程序示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义一个结构体来存储歌手得分
typedef struct {
int score;
} JudgeScore;
// 函数用来获取评委打分并计算平均分
double calculateAverage(int scores[], int numJudges, int minScoresIndex, int maxScoresIndex) {
if (numJudges < 3) {
printf("至少需要3个有效评分。\n");
return -1; // 返回错误值
}
int total = 0;
for (int i = 0; i < numJudges; ++i) {
if (i != minScoresIndex && i != maxScoresIndex) {
total += scores[i];
}
}
double average = (double)total / (numJudges - 2);
return roundf(average * 100) / 100.0; // 保留两位小数
}
int main() {
int judges[5]; // 假设这里有五个评委的原始得分
// 输入5个评委的得分
for (int i = 0; i < 5; ++i) {
scanf("%d", &judges[i]);
}
// 找到最高分和最低分的索引(这里假设是从大到小排序)
int maxIndex = 0;
int minIndex = 0;
for (int i = 1; i < 5; ++i) {
if (judges[i] > judges[maxIndex]) {
maxIndex = i;
}
if (judges[i] < judges[minIndex]) {
minIndex = i;
}
}
double finalScore = calculateAverage(judges, 5, minIndex, maxIndex);
printf("歌手的最终平均得分为 %.2f 分\n", finalScore);
return 0;
}
```
在这个程序中,`calculateAverage` 函数接收一个分数数组、评委数量以及最低分和最高分的索引,然后根据这些参数计算平均分。`main` 函数负责读入评委的原始得分,并调用 `calculateAverage`。
请注意,这个程序假设了评委的原始分数已经按降序排列。如果实际数据没有这样的顺序,你需要先对得分进行排序。此外,输入的分数应限制在合理的范围内。
阅读全文