【问题描述】
老师给定 10 个整数的序列,要求对其重新排序。
排序要求:
1.奇数在前,偶数在后;
2.奇数按从大到小排序;
3.偶数按输入顺序逆序排序。
【输入描述】
输入一行,包含 10 个整数,彼此以一个空格分开,每个整数的范围是大于等于 0,小于等于 100。
【输出描述】
按照要求排序后输出一行,包含排序后的 10 个整数,数与数之间以一个空格分开。
【输入样例】
4 7 3 13 11 12 0 47 34 98
【输出样例】
47 13 11 7 3 98 34
【解析】
本题关键点:判断奇偶数,然后奇数用选择排序法进行从大到小排序。代码如下。
#include <iostream>
using namespace std;
int main(){
int n,alen,blen,middle;
int a[10];
int b[10];
alen=0;
blen=0;
for(int i=0;i<10;i++){
cin>>n;
if(n%2==1){
a[alen]=n;
alen++;
}else{
b[blen]=n;
blen++;
}
}
for(int j=0;j<alen;j++){
for(int k=j+1;k<alen;k++){
if(a[k]>a[j]){
middle = a[j];
a[j]=a[k];
a[k]=middle;
}
}
}
for(int x=0;x<alen;x++){
cout<<a[x]<<" ";
}
for(int y=blen-1;y>=0;y--){
cout<<b[y]<<" ";
}
cout<<endl;
return 0;
}