C++算出输入的20个数的中位数
时间: 2024-09-28 19:03:18 浏览: 28
在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++ 写一个程序,进行体操评分,依次输入10名评委所评分数,去除一个最高分和一个最低分,再算出平均分作为选手的得分
以下是一个可能的 C 语言程序,用于计算体操选手的得分:
```c
#include <stdio.h>
int main() {
int scores[10];
int sum = 0;
int max = 0;
int min = 10;
// 读入评分
for (int i = 0; i < 10; i++) {
printf("请输入第 %d 位评委的评分:", i + 1);
scanf("%d", &scores[i]);
// 更新最高分和最低分
if (scores[i] > max) {
max = scores[i];
}
if (scores[i] < min) {
min = scores[i];
}
// 累加总分
sum += scores[i];
}
// 去除最高分和最低分
sum -= max;
sum -= min;
// 计算平均分
double average = (double) sum / 8.0;
// 输出结果
printf("选手的得分为:%.2f\n", average);
return 0;
}
```
注意,这个程序假设评分都是整数,如果评分可以是小数,需要修改程序中的数据类型。
使用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++程序,它会按照描述的要求计算体操选手的得分。运行时记得输入评委人数和分数。
阅读全文