C++输入只有一组数据,包括两行,第一行为正整数的个数n,第二行为n个整数,中间以空格区分。 输出 针对输入数据,从小到大分2行输出,其中第一行所有的数均小于平均值(该值为浮点数,double型)。每个数据后面都有一个空格。
时间: 2023-06-15 10:08:32 浏览: 136
c++ 求N个数的最大公约数和最小公倍数
以下是一个可能的 C++ 实现:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
int main() {
int n;
std::cin >> n;
std::vector<int> nums(n);
for (int i = 0; i < n; ++i) {
std::cin >> nums[i];
}
double avg = static_cast<double>(std::accumulate(nums.begin(), nums.end(), 0)) / n;
std::vector<int> small_nums;
std::copy_if(nums.begin(), nums.end(), std::back_inserter(small_nums),
[avg](int x) { return x < avg; });
std::sort(small_nums.begin(), small_nums.end());
for (int x : small_nums) {
std::cout << x << " ";
}
std::cout << "\n";
for (int x : nums) {
if (x >= avg) {
std::cout << x << " ";
}
}
std::cout << "\n";
return 0;
}
```
首先读入所有的整数,然后计算它们的平均值。接着使用 `std::copy_if` 算法从原始数组中筛选出所有小于平均值的数,并将它们排序后输出。最后再输出所有大于等于平均值的数。
阅读全文