C语言对于奇偶分离问题

img


这道题目我实在不会,希望有人能给我看一下,希望有完整能给我参考一下,谢谢啦!

供参考:

#include <stdio.h>
int main()
{
    int n,k,i,a[10000],j;
    scanf("%d", &n);
    while (n--)
    {
        scanf("%d", &k);
        for (i = 1,j = 0; i <= k; i++) {
            if (i % 2 == 1)
                printf(i == 1 ? "%d" : " %d", i);
            else
                a[j++] = i;
        }
        printf("\n");
        for (i = 0; i < j; i++)
            printf(i == 0 ? "%d" : " %d", a[i]);
        if (n)
            printf("\n\n");
    }
    return 0;
}

#include <stdio.h>

int main() {
    int n = 0, m = 0;
    int even[30] = {0}, evenlen = 0;
    int odd[30] = {0}, oddlen = 0;

    scanf("%d", &n);
    for ( int i = 0 ; i < n ; i++ ) {
        scanf("%d", &m);
        if (m % 2 == 0) {
            even[evenlen] = m;
            evenlen++;
        } else {
            odd[oddlen] = m;
            oddlen ++;
        }
    }
    for ( int i = 0 ; i < oddlen ; i++  ) {
        printf("%d ", odd[i]);
    }
    printf("\b\n");
    for ( int i = 0 ; i < evenlen ; i++  ) {
        printf("%d", even[i]);
        if( i+1 < evenlen ){
            printf(" ");
        }
    }

}

用java写的,c也类似


public static void main(String[] args) {
        int i = 3;
        int num[] = {5,10,15};
        for (int j = 0; j < i; j++) {
            for (int i1 = 1; i1 <= num[j]; i1++) {
                if (i1%2!=0){
                    System.out.print(i1+" ");
                }
            }
            System.out.println();
            for (int i1 = 1; i1 <= num[j]; i1++) {
                if (i1%2==0){
                    System.out.print(i1+" ");
                }
            }
            System.out.println();
            System.out.println();
        }
    }

img


#include<stdio.h>
int main(){
    int n;
    int a[100],b[100];
    scanf("%d",&n);
    int k,i,j,x,y,e;
    for(i=0;i<n;i++){
        scanf("%d",&k);
        x=0;
        y=0;
        for(j=1;j<=k;j++){
            if(j%2==1){
                a[x++]=j;
            }else{
                b[y++]=j;
            } 
        }
        for(j=0;j<x-1;j++){
            printf("%d ",a[j]);
        }
        printf("%d\n",a[x-1]);
        for(j=0;j<y-1;j++){
            printf("%d ",b[j]);
        }
        printf("%d\n",b[y-1]);
    }
}

简单易懂

img


#include<stdio.h>
void print(int k,int i)
{    
    for(i;i<=k;i+=2)
        printf(" %d",i);    
    printf("\n");
}

int main()
{    
    int i,n,k=0,a[100];
    scanf("%d",&n);
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    for(i=0;i<n;i++)
    {
        print(a[i],1);
        print(a[i],2);
        printf("\n");
    }
    return 0; 
}