c语言用指针实现输入n个整数存放在一维数组中,请将所有的奇数调整到偶数的前面存放
时间: 2024-05-05 19:14:56 浏览: 183
好的,这是一道关于C语言的数组操作问题。我们可以通过两个指针,分别指向数组的首尾位置,然后向中间靠拢,将奇数放到前面,偶数放到后面。
具体操作如下:
1. 定义指针left和right,分别指向数组的首尾位置。
2. 循环操作,当left小于right时:
3. left向右移动,直到遇到一个偶数,或者到达数组末尾。
4. right向左移动,直到遇到一个奇数,或者到达数组开头。
5. 如果left小于right,交换left和right位置的元素。
6. 重复步骤2-5,直到left等于right。
代码示例如下:
```
void adjust(int *arr, int n) {
int *left = arr, *right = arr + n - 1;
while (left < right) {
while (left < right && *left % 2 == 1) left++;
while (left < right && *right % 2 == 0) right--;
if (left < right) {
int temp = *left;
*left = *right;
*right = temp;
}
}
}
```
使用示例:
```
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8};
adjust(arr, 8);
for (int i = 0; i < 8; i++) {
printf("%d ", arr[i]);
}
```
输出结果为:
```
7 5 3 1 2 4 6 8
```
阅读全文