编写程序,将一维数组x中大于平均值的数据移至数组的前部,小于等于平均值的数据移至数组的后部。 用c语言编写.
时间: 2024-11-27 16:23:05 浏览: 9
在C语言中,你可以使用两个指针,一个指向数组的开始,另一个指向数组的结束,同时计算当前的平均值。对于每一个元素,如果它大于平均值,则向左移动右指针,反之则向右移动左指针。最后,交换左右指针所指向的元素即可完成数组的划分。以下是具体的C语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h> // 包含浮点数操作
// 计算数组元素的平均值
float calculate_average(int *arr, int size) {
float sum = 0;
for (int i = 0; i < size; i++) {
sum += arr[i];
}
return sum / size;
}
// 移动元素,大于平均值的放在前面,小于等于平均值的放在后面
void rearrange_elements(int *arr, int left, int right, float avg) {
while (left < right) {
if (arr[left] > avg) {
// 左指针向右移动较大的元素
int temp = arr[left];
arr[left++] = arr[right];
arr[right--] = temp;
} else {
left++; // 如果不大于平均值,继续向左移动
}
}
}
// 主函数
int main() {
int x[] = {10, 8, 15, 7, 9, 12}; // 示例数组
int size = sizeof(x) / sizeof(x[0]);
// 计算平均值
float avg = calculate_average(x, size);
// 指针划分
rearrange_elements(x, 0, size - 1, avg);
// 打印结果
for (int i = 0; i < size; i++) {
printf("%d ", x[i]);
}
printf("\n");
return 0;
}
```
运行此程序后,`x`数组将会按照描述的方式排列。
阅读全文