将整数数组A[0..n],将其分为两部分,左边所有元素为奇数,右边所有元素为偶数。数组元素个数不超过1000。【输入形式】 以逗号隔开的所有元素 【输出形式】 依次打印调整后的数组元素,元素间以逗号隔开。奇数序列和偶数序列分别按原序列中的顺序依次输出用C语言顺序表内容编写程序
时间: 2024-09-13 14:19:24 浏览: 75
要实现这个功能,我们可以通过一趟遍历数组的方式,将奇数和偶数分别存储在数组的左右两端。下面是一个使用C语言实现该功能的示例代码:
```c
#include <stdio.h>
#include <stdbool.h>
void segregateArray(int A[], int size, int *leftIndex, int *rightIndex) {
int i, j = 0;
for (i = 0; i < size; i++) {
if (A[i] % 2 == 1) { // 如果是奇数
if (i != j) {
// 将奇数交换到左边部分
int temp = A[i];
A[i] = A[j];
A[j] = temp;
}
j++; // 奇数的索引向后移动
}
}
*leftIndex = j;
*rightIndex = size - 1;
}
int main() {
int n;
printf("请输入数组的大小(不超过1000): ");
scanf("%d", &n);
int A[1000];
printf("请输入数组元素(以逗号隔开): ");
for (int i = 0; i < n; i++) {
scanf("%d", &A[i]);
}
int leftIndex, rightIndex;
segregateArray(A, n, &leftIndex, &rightIndex);
printf("调整后的数组元素为: ");
for (int i = 0; i <= leftIndex; i++) {
printf("%d", A[i]);
if (i < leftIndex) printf(",");
}
printf(",");
for (int i = rightIndex; i >= leftIndex + 1; i--) {
printf("%d", A[i]);
if (i > leftIndex + 1) printf(",");
}
return 0;
}
```
这段代码首先定义了一个`segregateArray`函数,该函数接受一个整数数组`A`和它的大小`size`,以及两个用于存储奇数和偶数分割位置的指针`leftIndex`和`rightIndex`。在主函数`main`中,程序会读取用户输入的数组大小和数组元素,然后调用`segregateArray`函数将奇数移到数组的左边,偶数移到数组的右边。最后,程序按照要求的格式输出调整后的数组元素。
阅读全文