c语言:定义一个整型一维数组,任意输入数组的元素,其中包含奇数和偶数。定义一个函数,实现将数组元素奇数在左,偶数在右的排列。 在上述定义的函数中,不允许再增加新的数组。从主函数中分别调用上述函数,打印输出结果。
时间: 2024-02-21 13:01:15 浏览: 93
用C语言实现数组元素最大值/最小值查找、数组元素平均值计算、数组元素排序等功能
好的,以下是代码实现:
```c
#include <stdio.h>
void exchange(int arr[], int len) {
int left = 0, right = len - 1; // 定义左右两个指针
while (left < right) {
// 从左边开始找到第一个偶数
while (left < right && arr[left] % 2 != 0) {
left++;
}
// 从右边开始找到第一个奇数
while (left < right && arr[right] % 2 == 0) {
right--;
}
// 交换左右两个数
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
}
}
int main() {
int arr[10]; // 定义一个长度为10的数组
printf("请输入数组的元素:\n");
for (int i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
}
exchange(arr, 10); // 调用exchange函数
printf("交换后的数组为:\n");
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
在`exchange`函数中,采用双指针的方式,分别从数组的左右两端开始找奇数和偶数,然后进行交换。具体来说,左指针`left`从左边开始找到第一个偶数,右指针`right`从右边开始找到第一个奇数,然后交换这两个数的位置。重复进行这个过程,直到左右两个指针相遇。最终,整个数组就被排列成了奇数在左,偶数在右的顺序。
在主函数中,先定义一个长度为10的数组,然后通过循环输入数组元素。接着调用`exchange`函数进行奇偶数的排列,并打印输出结果。
阅读全文