这个有人懂吗
【问题描述】调整输入数组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; }