C++ 本关任务:编写一个能计算众数问题的小程序。要求横向输出
时间: 2024-11-15 15:33:54 浏览: 16
C++ 中可以使用标准库中的 `<algorithm>` 和 `<vector>` 来实现计算一组整数中的众数。下面是一个简单的示例,它首先将输入的整数存储在一个 `std::vector<int>` 中,然后利用 `std::sort` 对其排序,接着使用两个指针从两端开始遍历,找出最常见的数字,即众数。
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
int find_mode(const std::vector<int>& nums) {
int left = 0, right = nums.size() - 1;
if (nums.size() == 1) return nums[0]; // 如果只有一个元素,它是唯一的众数
while (left < right) {
int mid = left + (right - left) / 2;
int count_left = 1;
for (int i = mid; i >= 0 && nums[i] == nums[mid]; --i)
++count_left;
int count_right = 1;
for (int i = mid + 1; i < nums.size() && nums[i] == nums[mid]; ++i)
++count_right;
if (count_left > count_right)
right = mid; // 左侧元素更常见
else
left = mid + 1; // 右侧元素更常见
}
return nums[left];
}
int main() {
std::vector<int> numbers;
int num;
std::cout << "请输入一组整数,以空格分隔:";
while (std::cin >> num) {
numbers.push_back(num);
}
std::sort(numbers.begin(), numbers.end()); // 排序数组
int mode = find_mode(numbers);
std::cout << "众数是:" << mode << std::endl;
return 0;
}
```
当你运行这个程序,它会提示用户输入一系列整数,并在最后输出众数。如果你想要横向显示,可以在控制台环境中调整输入的方式,例如一次性输入所有数字,然后在程序中解析它们。
阅读全文