C语言中调整输入数组将其分成两个部分,左边所有元素为奇数,右边所有元素为偶数。
时间: 2024-09-23 18:15:12 浏览: 33
C语言单向链表的基本操作12个
在C语言中,你可以通过遍历数组并利用条件判断来实现这个功能。下面是一个简单的示例,使用了一个临时数组来存储结果:
```c
#include <stdio.h>
void separate_odd_even(int arr[], int n) {
int* even = (int*)malloc(n * sizeof(int)); // 创建新数组存储偶数
int even_count = 0;
int odd_index = 0; // 用于记录奇数位置
for (int i = 0; i < n; i++) {
if (arr[i] % 2 == 0) { // 如果当前元素是偶数
even[even_count++] = arr[i]; // 将其添加到even数组
} else { // 否则,它是奇数
arr[odd_index++] = arr[i]; // 直接替换原数组中的奇数位置
}
}
// 填充剩余的偶数元素
while (even_count < n) {
arr[odd_index++] = even[--even_count];
}
free(even); // 释放偶数数组的内存
}
// 测试函数
int main() {
int input[] = {1, 2, 3, 4, 5, 6, 7, 8};
int size = sizeof(input) / sizeof(input[0]);
separate_odd_even(input, size);
printf("Odd numbers on the left, even numbers on the right:\n");
for (int i = 0; i < size; i++) {
printf("%d ", input[i]);
}
return 0;
}
```
在这个例子中,`separate_odd_even` 函数接受一个整数数组和它的大小作为参数,然后它将数组划分为两部分:奇数在前面,偶数在后面。
阅读全文