C语言数组问题怎么处理

问题遇到的现象和发生背景

我感觉是用一维数组来解决问题 但水平有限没有思路

问题相关代码,请勿粘贴截图

img

我的解答思路和尝试过的方法

我想定义数组然后区分数组的奇偶性,排列出来

把奇数和偶数分别放到两个数组中进行排序就好了啊

#include <stdio.h>
void sorts(int *a,int n,int order)
{
    int i,j,t;
    for(i=0;i<n-1;i++)
        for(j=0;j<n-i-1;j++)
        {
             if((order == 1 && a[j] > a[j+1]) || order == 0 && a[j] < a[j+1])
            {
                t = a[j];
                a[j] = a[j+1];
                a[j+1] = t;
            }
        }
}
int main()
{
    int a[10] = {1,2,3,4,5,6,7,8,9,10};
    int b[10],c[10],bn=0,cn=0;
    int i;
    for(i=0;i<10;i++)
        if(a[i]%2==0)
            c[cn++] = a[i];
        else
            b[bn++] = a[i];
    sorts(b,bn,1);
    sorts(c,cn,0);
    for(i=0;i<bn;i++)
        a[i] = b[i];
    for(i=0;i<cn;i++)
        a[cn+i] = c[i];
    for(i=0;i<10;i++)
        printf("%d ",a[i]);
    return 0;
}

把5个奇数和5个偶数分成两个数组分别排序,之后再合并即可
你题目的解答代码如下:

#include<stdio.h>
void sort(int a[],int n,int f)
{
    int i,j;
    for(i=0;i<n-1;i++)
        for(j=0;j<n-i-1;j++)
            if(f==0 && a[j] > a[j+1] || f==1 && a[j] < a[j+1])
            {
                int t = a[j];
                a[j] = a[j+1];
                a[j+1] = t;
            }
}
void main()
{
    int a[10]={1,8,7,6,2,3,5,4,9,10};
    int i,b[5],c[5],bl=0,cl=0;
    for( i=0; i<10; i++ )
        if (a[i]%2==1)
            b[bl++] = a[i];
        else
            c[cl++] = a[i];
    sort(b,bl,0);
    sort(c,cl,1);
    for( i=0; i<bl; i++ )
        a[i] = b[i];
    for( i=0; i<cl; i++ )
        a[bl+i] = c[i];
    for( i=0; i<10; i++ )
        printf("%d ", a[i]);
}

如有帮助,望采纳!谢谢!