C++实现 当前许多歌手大奖赛评分时,为了体现公平,在评委给出分数后统计平均得分时,都会去掉最高分和最低分。编写程序,读入评委打分(分数都是整数,评委人数大于等于5,小于等于50),去掉两个最高分和两个最低分,计算并输出平均得分(小数点后保留两位有效数字)。
时间: 2024-12-05 09:21:53 浏览: 18
在C++中,你可以通过以下步骤来实现这个功能:
1. 首先,你需要定义一个数组或vector来存储评委的分数,并保证输入的评委数量在5到50之间。
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
double calculateAverage(std::vector<int>& scores) {
if (scores.size() < 4) {
std::cout << "评委数量不足,无法去除最高和最低分。\n";
return 0;
}
```
2. 使用`std::sort`函数对分数进行排序,然后取出最后四个元素(因为要去掉最高的两个和最低的两个)。
```cpp
std::sort(scores.begin(), scores.end());
scores.resize(4); // 只保留前四个分数
```
3. 接下来计算去掉极端值后的总分以及评委数量,并计算平均分。
```cpp
int sum = 0;
for (int score : scores) {
sum += score;
}
double average = static_cast<double>(sum) / scores.size();
average = round(average * 100) / 100.0; // 四舍五入到两位小数
return average;
}
```
4. 主函数中读取用户输入,并调用上面的函数计算平均得分。
```cpp
int main() {
int numJudges;
std::cout << "请输入评委人数(5-50): ";
std::cin >> numJudges;
std::vector<int> scores(numJudges);
std::cout << "请输入每个评委的分数: ";
for (int i = 0; i < numJudges; ++i) {
std::cin >> scores[i];
}
double result = calculateAverage(scores);
if (result > 0) {
std::cout << "去掉最高和最低分后的平均分为: " << result << "\n";
}
return 0;
}
```
阅读全文