c语言中输入10个整数,将奇数放到偶数前面后再输出

如题所述

第1个回答  2012-04-16
/*
处理前 : 48 46 23 49 37 86 71 80 98 56
处理后 : 23 49 37 71 48 86 46 80 98 56
Press any key to continue
*/
#include <stdio.h>

void change(int a[], int n) {
int i,j,t;
for(i = 0; i < n - 1; ++i) {
for(j = i + 1; j < n; ++j) {
if((a[i] % 2 == 0) && (a[j] % 2 == 1)) {
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
}

int main() {
int i,a[10] = {48,46,23,49,37,86,71,80,98,56};
printf("处理前 : ");
for(i = 0; i < 10; ++i) printf("%d ",a[i]);
change(a,10);
printf("\n处理后 : ");
for(i = 0; i < 10; ++i) printf("%d ",a[i]);
printf("\n");
return 0;
}
第2个回答  2012-04-16
int a[10]; //这个自己定义把,我给出算法
int i,j,t;
for(i=0,j=0;i<10;i++)
if(a[i]%2!=0&&i!=j)
{
t=a[i];
a[i]=a[j];
a[j]=t;
j++;
}追问

大哥,那个算法好象没有考虑到1的情况啊!给完善下啊!

追答

1%2=1,是奇数,不等于0
a[i]%2!=0符合这个条件啊

本回答被提问者采纳
第3个回答  2012-04-16
是只需要将奇数放偶数前面,还是需要两个都要有排序追问

只需要将奇数放在偶数前面就行了,不需要排序,

追答

要代码还是思路

追问

代码啊,谢了

相似回答