输入一个长度不超过10的数字字符串,调整数组使奇数全部都位于偶数前面其他数字顺序不变。,用C++解决
时间: 2024-05-10 21:21:09 浏览: 220
好的,我可以帮你回答这个问题。
这道题可以使用双指针法,一个指针从数组最左边开始,另一个指针从数组最右边开始,然后根据指针所指向的数值是奇数还是偶数来交换它们的位置,直到两个指针相遇为止。
以下是使用C语言实现的代码:
```
#include <stdio.h>
void swap(int *x, int *y) {
int temp = *x;
*x = *y;
*y = temp;
}
void adjust_array(int arr[], int n) {
int left = 0, right = n-1;
while (left < right) {
while (left < right && arr[left] % 2 != 0) {
left++;
}
while (left < right && arr[right] % 2 == 0) {
right--;
}
if (left < right) {
swap(&arr[left], &arr[right]);
}
}
}
int main() {
int n;
printf("请输入数组长度:");
scanf("%d", &n);
int arr[10];
printf("请输入数组数字:");
for (int i=0; i<n; i++) {
scanf("%d", &arr[i]);
}
adjust_array(arr, n);
printf("调整后的数组为:");
for (int i=0; i<n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
希望这段代码可以帮助你解决问题!
阅读全文