这个有人懂吗
【问题描述】调整输入数组A[0..n],将其分为两部分,左边所有元素为奇数,右边所有元素为偶数【输入形式】a0,b1,b2,a1,a2,b3,a3,a4
【输出形式】a0,a1,a2,a3,a4,b1,b2,b3
【样例输入】1,2,33,8,5
【样例输出】1,33,5,2,8
程序代码:#include <stdio.h>
#include <string.h>
int main()
{
int i,j,val[256],temp;
char str[256],len=0,flag;
printf("请输入数据:");
gets(str);
for(i=0,flag=0;i<strlen(str); i++)
{
if(str[i]>='0'&&str[i]<='9')
{
if(flag==0)
{
val[len++]=atoi(&str[i]);
flag=1;
}
}
else
{
flag=0;
}
}
if(len<=0)
return 0;
for(i=len-1;i>0;i--)
{
for(j=0;j<i;j++)
{
if(val[j]%2==0 && val[j+1]%2==1)
{
temp = val[j];
val[j] = val[j+1];
val[j+1] = temp;
}
}
}
for(i=0;i<len-1;i++)
printf("%d,",val[i]);
printf("%d",val[i]);
return 0;
}

程序代码:
#include <stdio.h>
#include <stdlib.h>
int main() {
int data[100],n=0;
while(1)
{
int num=scanf(" %d , ",data+n);
if(num==0 || num==EOF) break;
n++;
}
int i=0,j;
j=n-1;
while(1)
{
if(i==j) break;
if((data[i]&1)==0)
while(1)
{
if(i==j) break;
if((data[j]&1)==0)--j;
else
{
int temp=data[i];
data[i]=data[j];
data[j]=temp;
--j;
break;
}
}
if(i==j) break;
++i ;
}
printf("%d", data[0]);
for (i=1; i<n; i++)
{
printf(",%d", data[i]);
}
return 0;
}
程序代码:#include <stdio.h>
void reOrderArray(int* array, int length)
{
int i, j, tmp;
for (i = 0; i < length - 1; i++) {
for (j = 0; j < length - i - 1; j++) {
//a[j]为偶数,a[j+1]为奇数,奇数在前,偶数在后
if (array[j] % 2 == 0 && array[j + 1] % 2 != 0)
{
tmp = array[j];
array[j] = array[j + 1];
array[j + 1] = tmp;
}
}
}
}
int main()
{
int a[] = { 1,2,33,8,5 }, n, i;
n = sizeof(a) / sizeof(a[0]);
reOrderArray(a, n);
for (i = 0; i < n; i++)
printf(i == 0 ? "%d" : " %d", a[i]);
return 0;
}