蒜术师给了你一个 10 个整数的序列,要求对其重新排序。排序要求:
-
奇数在前,偶数在后;
-
奇数按从大到小排序;
-
偶数按从小到大排序。
输入格式
输入一行,包含 10 个整数,彼此以一个空格分开,每个整数的范围是大于等于 0,小于等于 100。
输出格式
按照要求排序后输出一行,包含排序后的 10 个整数,数与数之间以一个空格分开。
样例输入
4 7 3 13 11 12 0 47 34 98
样例输出
47 13 11 7 3 0 4 12 34 98
思路:用数组形式输入十个数,然后用条件语句将奇数和偶数分别分入两个数组,再按照条件将两个数组内的数进行排序,然后输出新的数组。
代码
#include <stdio.h>
int main() {
int a[10];
int a1[11],a2[11];
int x=0,y=0,i;
for (i=0; i<10; i++) {
scanf("%d",&a[i]);
if ((a[i]+1)%2==0) {
a1[x]=a[i];
x=x+1;
}else{
a2[y]=a[i];
y=y+1;
}
}
for (i=0; i<x; i++) {
for (int j=0,t=0; j<x-1; j++) {
if (a1[j]<a1[j+1]) {
t=a1[j];
a1[j]=a1[j+1];
a1[j+1]=t;
}
}
}
for (i=0; i<y; i++) {
for (int j=0,k=0; j<y-1; j++) {
if (a2[j]>a2[j+1]) {
k=a2[j];
a2[j]=a2[j+1];
a2[j+1]=k;
}
}
}
for (int i=0; i<x; i++) {
printf("%d ",a1[i]);
}
for (int i=0; i<y; i++) {
printf("%d ",a2[i]);
}
return 0;
}