用deque和快排排序输入的10个成绩
时间: 2024-03-09 22:46:14 浏览: 15
好的,以下是使用 deque 和快排排序输入的10个成绩的 C++ 程序:
```cpp
#include <iostream>
#include <deque>
#include <algorithm> // 用于排序
using namespace std;
int main() {
deque<int> scores; // 存放分数的双端队列
// 输入10个评委的打分
cout << "请输入10名评委为该选手的打分成绩:" << endl;
for (int i = 0; i < 10; i++) {
int score;
cin >> score;
scores.push_back(score); // 将成绩插入队列尾部
}
// 对成绩进行快排排序,从小到大排序
sort(scores.begin(), scores.end());
// 去掉一个最高分和一个最低分
scores.pop_front(); // 去掉最低分
scores.pop_back(); // 去掉最高分
// 计算总分
int sum = 0;
for (int i = 0; i < 8; i++) {
sum += scores[i];
}
// 输出最后得分
double finalScore = sum / 8.0; // 注意要除以8.0,而不是8
cout << "该选手最后得分为:" << finalScore << endl;
return 0;
}
```
程序说明:
1. 首先定义了一个 deque 容器 `scores`,用于存放10个评委的打分成绩。deque 是一个双端队列,支持在队列头尾进行插入和删除操作。
2. 接着输入10个评委的打分成绩,并将其插入到队列的尾部。
3. 对队列中的成绩进行快排排序,从小到大排序。
4. 去掉一个最高分和一个最低分,即从队列头部删除一个元素(最低分),从队列尾部删除一个元素(最高分)。
5. 计算总分,即将剩余8个成绩相加。
6. 最后输出最后得分,计算方法为:总分除以8。注意要除以8.0,而不是8,因为我们需要得到一个浮点数。