c语言编程分开奇数偶数.

Python021

c语言编程分开奇数偶数.,第1张

程序如下: #include<stdio.h>

void main()

{

int a[20]

int b[20]

int i,j,k

printf("输入二十个数:\n")

for(i=0,j=0i<=19i++)

{

scanf("%d",&a[i])

if(0!=a[i]%2)

{

b[j]=a[i]

j++

}

}

for(i=0,k=ji<=19i++)

{

if(0==a[i]%2)

{

b[k]=a[i]

k++

}

}

for(i=0i<=19i++)

printf("%d ",b[i])

printf("\n")

} 有疑问提出。

c语言判断一个数是奇数还是偶数的方法有两种具体如下。

1、一般是直接将输入的数字用2取余,如果为零则为偶数,反之则是奇数

详细代码如下:

#include<stdio.h>int main(){

int mun

printf("请输入一个数:\n")

scanf("%d",&num)

if(num%2==0){

printf("%d是偶数!\n")

}else{

printf("%d是奇数!\n")

}

return 0

}

2、通过位运算来判断一个数是不是奇数或者偶数。

详细代码如下:

#include<stdio.h>int main(){

int mun

printf("请输入一个数:\n")

scanf("%d",&num)

if((num&1)==0){

printf("%d是偶数!\n")

}else{

printf("%d是奇数!\n")

}

return 0

}

你那个程序逻辑太混乱, 所以嵌套判断的时候,把自己也给绕进去了,其实就应该是a数组,两个变量i, j,i 对应奇数,j对应偶数,i从头,j从尾相向而行, 一偶一奇时,互换位置;否则偶数i++,奇数j--(继续相向而行),代码修改如下:

void assort(int a[], const unsigned int n)

{

int i, j, t

i = 0

j = n-1

while (i<j)

{

if (a[i]%2 == 0 &&a[j]%2 != 0)

{

t = a[i]

a[i] = a[j]

a[j] = t

j--

i++

}

else if (a[j]%2 == 0)

j--

else if (a[i]%2 !=0)

i++

}

}

把接口稍微修改了一下,用了const unsigned int, 以表示n是不能变的;

其实你完全可以用C的标准库函数qsort, 自己写的compare函数调整一下即可。 如下:

int compare (const void * a, const void * b)

{

if ( (*(int*)a % 2 == 0) &&(*(int*)b % 2 != 0) )

return 1

if ( (*(int*)a % 2 != 0) &&(*(int*)b % 2 == 0) )

return -1

else

return ( *(int*)a - *(int*)b )

}

测试例子:

int main(int argc, char *argv[])

{

int data[] = {10, 8, 7, 6, 5, 2, 4, 3, 1, 9}

size_t data_len

int i

data_len = sizeof(data)/sizeof(data[0])

qsort (data, data_len, sizeof(int), compare)

for (i=0i<data_leni++)

printf ("%d ",data[i])

return 0

}

输出:完全奇偶分开并且升序排序的结果:

1 3 5 7 9 2 4 6 8 10