用C语言编译代码,要求调整输入的数组使奇数全部都位于偶数前面
时间: 2024-05-07 22:18:42 浏览: 87
2007[陈意云的习题集].pdf
可以使用两个指针,一个指向数组的开头,一个指向数组的结尾。然后不断地交换指针所指向的元素,直到两个指针相遇为止。
具体实现如下:
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
void adjust_array(int arr[], int len) {
int *start = arr;
int *end = arr + len - 1;
while (start < end) {
while (*start % 2 != 0 && start < end) {
start++;
}
while (*end % 2 == 0 && start < end) {
end--;
}
if (start < end) {
swap(start, end);
}
}
}
void print_array(int arr[], int len) {
int i;
for (i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int len = sizeof(arr) / sizeof(arr[0]);
printf("Original array: ");
print_array(arr, len);
adjust_array(arr, len);
printf("Adjusted array: ");
print_array(arr, len);
return 0;
}
```
这段代码中,`adjust_array` 函数负责调整数组,它使用了两个指针 `start` 和 `end`,开始时分别指向数组的开头和结尾。然后,它通过两个 while 循环,分别找到第一个偶数和第一个奇数。如果 `start` 指向的是偶数,`end` 指向的是奇数,就交换它们。最后,当 `start` 和 `end` 相遇时,整个数组就被调整完毕了。
在 `main` 函数中,我们先打印出原始数组,然后调用 `adjust_array` 函数进行调整,最后再打印出调整后的数组。
阅读全文