C++算出输入的20个数的中位数
时间: 2024-09-28 14:03:18 浏览: 50
在C++中计算一组数字的中位数,首先需要将这组数字存储在一个容器中,比如vector。以下是一个简单的步骤:
1. **输入数据**:创建一个`std::vector<int>`来存储20个用户输入的整数。
```cpp
std::vector<int> numbers(20);
for (int i = 0; i < 20; ++i) {
std::cin >> numbers[i];
}
```
2. **排序数组**:使用`std::sort`函数对数组进行排序,因为中位数是对有序数组而言的。
```cpp
std::sort(numbers.begin(), numbers.end());
```
3. **确定中位数**:对于偶数个元素,中位数是中间两个数的平均值;对于奇数个元素,中位数就是中间的那个数。
```cpp
double median;
if (numbers.size() % 2 == 0) { // 偶数个
median = static_cast<double>(numbers[numbers.size() / 2 - 1] + numbers[numbers.size() / 2]) / 2.0;
} else { // 奇数个
median = static_cast<double>(numbers[numbers.size() / 2]);
}
```
4. **输出结果**:
```cpp
std::cout << "中位数是: " << median << std::endl;
```
相关问题
使用c++写一个程序,进行体操评分,依次输入7名评委所评分数,去除一个最高分和一个最低分,再算出平均分作为选手的得分。
在C++中,你可以创建一个简单的控制台应用程序来完成这个任务。下面是一个步骤指南以及相应的代码片段:
1. 首先,我们需要定义一个包含评委数量、分数数组和两个辅助变量(用于存储最高分和最低分)的数据结构。
```cpp
#include <iostream>
#include <vector>
struct JudgeScore {
int score;
};
```
2. 接着,创建一个函数来获取并处理评委的分数:
```cpp
std::vector<JudgeScore> getScores(int numJudges) {
std::vector<JudgeScore> scores(numJudges);
for (int i = 0; i < numJudges; ++i) {
std::cout << "请输入第 " << (i+1) << " 位评委的分数:";
std::cin >> scores[i].score;
}
return scores;
}
// 辅助函数来找出最大值和最小值
void findMinMax(std::vector<JudgeScore>& scores, int& minScore, int& maxScore) {
minScore = maxScore = scores[0].score;
for (const auto& score : scores) {
if (score.score < minScore) {
minScore = score.score;
} else if (score.score > maxScore) {
maxScore = score.score;
}
}
}
```
3. 计算去掉最高分和最低分后的平均分:
```cpp
double calculateAverageWithoutMinMax(const std::vector<JudgeScore>& scores, int minScore, int maxScore) {
double sum = 0;
for (const auto& score : scores) {
if (score.score != minScore && score.score != maxScore) {
sum += score.score;
}
}
return sum / (scores.size() - 2); // 注意这里是除以剩下的评委数减一
}
```
4. 主函数将所有功能整合起来:
```cpp
int main() {
int numJudges;
std::cout << "请输入评委人数:";
std::cin >> numJudges;
std::vector<JudgeScore> scores = getScores(numJudges);
int minScore, maxScore;
findMinMax(scores, minScore, maxScore);
double averageScore = calculateAverageWithoutMinMax(scores, minScore, maxScore);
std::cout << "选手最终得分为:" << averageScore << std::endl;
return 0;
}
```
现在你有了一个完整的C++程序,它会按照描述的要求计算体操选手的得分。运行时记得输入评委人数和分数。
用C++代码 写一个程序,进行体操评分,依次输入7名评委所评分数,去除一个最高分和一个最低分,再算出平均分作为选手的得分。
当然可以,下面是一个简单的C++程序,用于实现您描述的体操评分功能:
```cpp
#include <iostream>
#include <vector>
using namespace std;
int main() {
int numJudges = 7;
vector<int> scores(numJudges); // 存储评委分数
cout << "请输入" << numJudges << "名评委的评分:" << endl;
for (int i = 0; i < numJudges; ++i) {
cin >> scores[i];
}
sort(scores.begin(), scores.end()); // 对分数进行排序
// 去除最高分和最低分
scores.erase(scores.begin() + scores.size() - 1);
scores.erase(scores.begin());
double averageScore = accumulate(scores.begin(), scores.end(), 0.0) / scores.size(); // 计算平均分
averageScore = round(averageScore * 100) / 100; // 四舍五入到小数点后两位
cout << "去掉最高分和最低分后的平均分为: " << averageScore << " 分" << endl;
return 0;
}
```
在这个程序中,我们首先创建了一个整数向量`scores`来存储评委的分数。然后用户会被提示逐个输入分数,接着我们将这些分数按升序排列,删除最高分和最低分,最后计算并打印除去这两个极端值后的平均分。
阅读全文
相关推荐
















