输入一组正整数,以-1结束,按照由小到大的排好顺序后,将奇数位置的数据输出 c++
时间: 2024-03-03 12:50:55 浏览: 57
好的,以下是一个 C++ 的解决方案:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> nums;
while (true) {
int num;
cin >> num;
if (num == -1) {
break;
}
nums.push_back(num);
}
sort(nums.begin(), nums.end());
for (int i = 1; i < nums.size(); i += 2) {
cout << nums[i] << " ";
}
cout << endl;
return 0;
}
```
这个程序使用了 C++ STL 中的 vector 来存储输入的整数,然后使用 sort 函数对它们进行排序。最后通过一个 `for` 循环遍历奇数位置的数据并输出。需要注意的是,由于 C++ 的下标也是从 0 开始的,所以代码中使用的是 `i += 2` 来遍历奇数下标位置。
希望这个解决方案能够帮到你!
相关问题
键盘输入若干正整数,将其调整为奇数在前,偶数在后要求运用指针
以下是一个实现该功能的 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` 相遇时,所有的偶数都在后面,所有的奇数都在前面了。
阅读全文