键盘输入若干正整数,将其调整为奇数在前,偶数在后要求运用指针
时间: 2023-12-21 20:03:38 浏览: 34
以下是一个实现该功能的 C++ 代码,使用了指针来实现:
```cpp
#include <iostream>
using namespace std;
void swap(int* a, int* b) {
int t = *a;
*a = *b;
*b = t;
}
void reorder(int arr[], int n) {
int* p1 = arr;
int* p2 = arr + n - 1;
while (p1 < p2) {
while (*p1 % 2 != 0 && p1 < p2) { // 找到第一个偶数
p1++;
}
while (*p2 % 2 == 0 && p1 < p2) { // 找到第一个奇数
p2--;
}
if (p1 < p2) {
swap(p1, p2); // 交换位置
}
}
}
int main() {
int arr[10], n;
cout << "请输入数组长度(不超过10):";
cin >> n;
cout << "请输入" << n << "个整数:";
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
reorder(arr, n);
cout << "调整后的数组为:";
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
这个程序首先输入数组长度和数组元素,然后调用 `reorder()` 函数来调整数组元素顺序。在 `reorder()` 函数中,我们使用两个指针 `p1` 和 `p2` 分别指向数组的首尾两个元素,然后不断移动这两个指针,找到第一个偶数和第一个奇数,并将它们交换位置。这样,当 `p1` 和 `p2` 相遇时,所有的偶数都在后面,所有的奇数都在前面了。