编写程序,将数列中大于平均值的元素往前放,小于平均值的数往后放。数列输入、数列输出、数列求平均值、数列重排分别用四个子函数实现。(数列长度由用户从键盘输入) 例如: 输入数列的长度:10 输入原始数列:1 5 15 23 7 9 19 10 -5 22 其平均值为:10.6 重排以后的数列:15 23 19 22 1 5 7 9 10 -5c++
时间: 2023-12-27 18:05:33 浏览: 121
以下是一个实现上述功能的 C++ 程序:
```c++
#include <iostream>
using namespace std;
void input(int arr[], int len) {
cout << "请输入" << len << "个整数:" << endl;
for (int i = 0; i < len; ++i) {
cin >> arr[i];
}
}
void output(int arr[], int len) {
cout << "重排后的数列:";
for (int i = 0; i < len; ++i) {
cout << arr[i] << " ";
}
cout << endl;
}
double average(int arr[], int len) {
int sum = 0;
for (int i = 0; i < len; ++i) {
sum += arr[i];
}
return static_cast<double>(sum) / len;
}
void rearrange(int arr[], int len) {
double avg = average(arr, len);
int i = 0, j = len - 1;
while (i < j) {
while (i < j && arr[i] > avg) ++i;
while (i < j && arr[j] < avg) --j;
if (i < j) {
swap(arr[i], arr[j]);
++i;
--j;
}
}
}
int main() {
int len;
cout << "请输入数列的长度:";
cin >> len;
int* arr = new int[len];
input(arr, len);
double avg = average(arr, len);
cout << "其平均值为:" << avg << endl;
rearrange(arr, len);
output(arr, len);
delete[] arr;
return 0;
}
```
该程序定义了四个子函数:
- `input`:用于输入数列;
- `output`:用于输出数列;
- `average`:用于求数列平均值;
- `rearrange`:用于将数列重排。
在主函数中,首先从用户输入数列长度,然后动态分配数组空间,调用 `input` 函数读取数列元素。接着调用 `average` 函数计算数列平均值,并输出。最后调用 `rearrange` 函数将数列重排,然后调用 `output` 函数输出结果。最后释放数组空间。
阅读全文