C语言 数位奇偶重构,求解!!

题目内容
给定一个正整数n,分别求出其所包含的所有奇数数字数位重构(使用n所包含的所有奇数数字重新组合)和偶数数字数位重构(使用n所包含的所有偶数数字重新组合)后能得到的最大值,没有则为0。

输入格式
输入一行,包含一个正整数n。

输入样例
7245032

输出格式
输出一行,包含2个以空格分隔的整数,分别表示n所包含的奇数数字数位重构最大值,偶数数字数位重构最大值,没有则为0。

输出样例
753 4220

限制条件
0 <= n <= 100000000

分别定义奇数和偶数数组,分解整数各个位,然后从大到小排序后,得到两个整数

#include <stdio.h>
int main()
{
    int js[10],os[10],jn=0,on=0,i,j,t,oc=0,jc=0,n;
    scanf("%d",&n);
    while(n>0)
    {
        if((n%10)%2==0)
          os[on++] = n%10;
        else
          js[jn++] = n%10;
        n = n/10;
    }
    for(i=0;i<jn-1;i++)
        for(j=0;j<jn-i-1;j++)
        {
            if(js[j] < js[j+1])
            {
                t = js[j];
                js[j] = js[j+1];
                js[j+1] = t;
            }
        }
    for(i=0;i<on-1;i++)
        for(j=0;j<on-i-1;j++)
        {
            if(os[j] < os[j+1])
            {
                t = os[j];
                os[j] = os[j+1];
                os[j+1] = t;
            }
        }
    for(i=0;i<jn;i++)
        jc = jc*10+js[i];
    for(i=0;i<on;i++)
       oc = oc*10+os[i];
    printf("%d %d",jc,oc);
    return 0;
}