蒜术师给了你一个 10 个整数的序列,要求对其重新排序。排序要求:
-
奇数在前,偶数在后;
-
奇数按从大到小排序;
-
偶数按从小到大排序。
输入格式:
输入一行,包含 10个整数,彼此以一个空格分开,每个整数的范围是大于等于 0,小于等于 10。
输出格式:
按照要求排序后输出一行,包含排序后的 10个整数,数与数之间以一个空格分开。
首先,定义两个数组,分别赋值为奇数数组和偶数数组,后套用两个for循环进行冒泡排序即可。
#include <stdio.h>
int main(){
int i,j,temp;
int a[10];
for (i=0;i<10;i++){
scanf ("%d",&a[i]);
}
int n=0,m=0;
int o[10],e[10];//定义两个数组,奇数数组与偶数数组
for (i=0;i<10;i++)
{
if (a[i]%2!=0)//奇数数组
{
o[n++]=a[i];
}else {
e[m++]=a[i];//偶数数组
}
}
for(i=0;i<n;i++){
for(j=0;j<i;j++){
if(o[i]>o[j]){
temp=o[i];//临时数组辅助赋值
o[i]=o[j];
o[j]=temp;
}
}
}
for(i=0;i<m;i++){
for(j=0;j<i;j++){
if(e[i]<e[j]){
temp=e[i];//同上
e[i]=e[j];
e[j]=temp;
}
}
}
for(i=0;i<n;i++){
printf("%d ",o[i]);//输出奇数数组
}
for(i=0;i<m;i++){
printf("%d ",e[i]);//输出偶数数组
}
return 0;
}