请帮忙解决我得问题,问题出在哪

题目内容:

接受若干非负整数(数据不重复),当个数超过10个或者遇到负数时停止接受,将这几个整数按升序排列输出,并且奇数在前,偶数在后。

输出要求,每个数字后输出空格与其他数字隔开,最后一个数字后也有空格

 

输入样例1:

10 9 8 7 6 5 4 3 2 1

 

输出样例1:

1 3 5 7 9 2 4 6 8 10 回车

 

输入样例2:

2 3 4 5 -1

 

输出样例2:

3 5 2 4 回车

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    int a[10] = { 0 };
    int b[10] = { 0 };
    int c[10] = { 0 };
    int d[10] = { 0 };
    int e[10] = { 0 };
    int f[10] = { 0 };
    for (int i = 0;i<20; i++)
    {
        scanf_s(" %d", &a[i]);
        if (a[i] < 0 || i>11)
        {
            b[i] = a[i];
            break;
        }
    }
    int len1=sizeof(a)/sizeof(a[0]);
    for (int j = 0; j < len1; j++)
    {
        int k = a[j] % 2;
        if (k == 1)
        {
            c[j] = a[j];
        }
        else 
        {
            d[j] = a[j];
        }
    }
    int len2= sizeof(c) / sizeof(c[0]);
    int len3 = sizeof(d) / sizeof(d[0]);
    for (int k = 0; k < len2; k++)
    {
        for (int m = 0; m < len2; m++)
            if (c[k] < c[m + 1])
            {
                e[k] = c[k];
                c[k] = c[m + 1];
                c[m + 1] = e[k];
            }

    }
    for (int k = 0; k < len3; k++)
    {
        for (int m = 0; m < len3; m++)
            if (d[k] > d[m + 1])
            {
                f[k] = d[k];
                d[k] = d[m + 1];
                d[m + 1] = f[k];
            }
        for (int k = 0; k < len2; k++)
            printf(" %d", c[k]);
        for (int k = 0; k < len3; k++)
            printf(" %d", d[k]);
    }
    system("pause");
    return 0;
}

修改如下,供参考:

#include<stdio.h>
int main(void)
{
    int i,j,k,tmp,a[10],b[10],cnt=0;

    for(i=0;i<10;i++){
        scanf("%d",&a[i]);
        if(a[i]<0) break;
    }
    k=i;
    for(i=0;i<k-1;i++){    //排序,升序
        for(j=i+1;j<k;j++){
            if(a[j]<a[i]){
                tmp=a[j];
                a[j]=a[i];
                a[i]=tmp;
            }
        }
    }
    for(i=0;i<k;i++){  //数组a[]中奇数先放入数组b[]
        if(a[i]%2!=0){
            b[cnt]=a[i];
            cnt++;
        }
    }
    for(i=0;i<k;i++){ //数组a[]偶数放入数组b[]
        if(a[i]%2==0){
            b[cnt]=a[i];
            cnt++;
        }
    }
    for(i=0;i<k;i++)   //输出数组b[]
        printf("%d ",b[i]);
    printf("\n");
    
    return 0;
}