C语言 第一行输入n,代表有n个数组 第二行输入m 输入m个数 调整数字位置使得偶数在序列的前半部分,奇数在序列的后半部分。使得输入3\n 4 1 2 3 4\n 7 3 43 54 32 654 4 75\n 6 1 32 9 43 12 0 能输出 4 4 2 3 1\n 4 654 32 54 43 3 7 75\n 6 0 32 12 43 9 1\n
时间: 2024-02-27 17:51:29 浏览: 14
好的,这是一个比较简单的问题,可以使用双指针的方法进行解决。以下是解决这个问题的 C 语言代码:
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int n, m;
scanf("%d", &n);
while (n--) {
scanf("%d", &m);
int nums[m];
for (int i = 0; i < m; i++) {
scanf("%d", &nums[i]);
}
int left = 0, right = m - 1;
while (left < right) {
while (left < right && nums[left] % 2 == 0) {
left++;
}
while (left < right && nums[right] % 2 != 0) {
right--;
}
if (left < right) {
swap(&nums[left], &nums[right]);
}
}
for (int i = 0; i < m; i++) {
printf("%d ", nums[i]);
}
printf("\n");
}
return 0;
}
```
首先输入一个数 n,表示有 n 组数据。对于每一组数据,先输入一个数 m,表示接下来有 m 个数。然后我们使用双指针的方法,left 和 right 分别指向数组的头和尾,然后不断移动指针,当 left 指向的数为偶数,right 指向的数为奇数时,交换这两个数。直到 left 和 right 相遇为止。最后输出调整后的数组即可。
希望能够解决你的问题!