编写一C++程序实现排序。输入8个整数,将这8个整数按照降序排列输出,并且偶数在前、奇数在后。比如输入的8个数字是87654321,则输出86427 5 3 1.
时间: 2024-09-29 11:12:06 浏览: 47
cpp代码-P1579(输入一个奇数,输出三个质数,之和为该奇数)
在C++中,我们可以使用一个简单的选择排序算法结合条件判断来实现这个需求。首先,遍历整个数组找到最大的元素并将其放在适当的位置(即偶数在前面、奇数在后面),然后移除已排序部分,继续处理剩余未排序的元素。以下是代码实现:
```cpp
#include <iostream>
using namespace std;
void swap(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
bool is_even(int num) {
return num % 2 == 0;
}
void selection_sort_descending(int arr[], int size) {
for (int i = 0; i < size - 1; ++i) {
int max_index = i;
for (int j = i + 1; j < size; ++j) {
if (!is_even(arr[j]) || (is_even(arr[j]) && arr[max_index] < arr[j])) {
max_index = j;
}
}
if (max_index != i) {
swap(arr[i], arr[max_index]);
}
}
}
void print_numbers_descending(int arr[], int size) {
for (int i = 0; i < size; ++i) {
cout << arr[i] << " ";
}
cout << endl;
}
int main() {
int numbers[8];
// 输入8个整数
for (int i = 0; i < 8; ++i) {
cin >> numbers[i];
}
selection_sort_descending(numbers, 8);
// 输出降序排列后的偶数在前、奇数在后的结果
print_numbers_descending(numbers, 8);
return 0;
}
```
运行这段代码后,会提示输入8个整数,然后输出按照上述规则排好序的结果。
阅读全文