先看题目
输入一个整数n和n个各不相等的整数,将这些整数从小到大进行排序,要求奇数在前,偶数在后。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试先输入一个整数n(1<n<100),再输入n个整数。
输出格式:
对于每组测试,在一行上输出根据要求排序后的结果,数据之间留一个空格。
样例">输入样例:
3
5 1 2 3 4 5
3 12 4 5
6 2 4 6 8 0 1
输出样例:
1 3 5 2 4
5 4 12
1 0 2 4 6 8
这里利用了奇偶分离加上调用函数进行排序的方法
#include<stdio.h>
void swep(int a[],int sum){//排序奥
int i,temp;
for (i=0;i<sum-1;i++){
for (int j=0;j<sum-1-i;j++){
if (a[j]>a[j + 1]){
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}
int main(){
int t;
int i,n,j;
int ou=0,ji=0;
int k=0,m=0;//k为奇数;m为偶数
int a[100]={0};//存放所有数字
int b[100]={0};//存放奇数
int c[100]={0};//存放偶数
scanf("%d",&t);
for(i=0;i<t;i++){
k=0;
m=0;
scanf("%d",&n);
for(j=0;j<n;j++){
scanf("%d",&a[j]);
}
for(j=0;j<n;j++){
if(a[j]%2==1){
b[k]=a[j];
k=k+1;
}
else{
c[m]=a[j];
m=m+1;
}
}
swep(b,k);
swep(c,m);
for(j=0;j<k;j++){
printf("%d ",b[j]);
}
for(j=0;j<m;j++){
if(j!=m-1)
printf("%d ",c[j]);
else
printf("%d",c[j]);
}
printf("\n");
}
return 0;
}
这里需要注意:偶数的最后是没有空格的,需要进行区分
希望对你们有帮助!!!