这个有关数组的怎么解决

将两个一维数组排序,合并到一个一维数组中仍然保持有序,

供参考:

#include<stdio.h>
#define N 20
void sort_arry(int *a,int n)
{
     int i,j,tmp;
     for(i=0;i<n-1;i++)
     {
         for(j=i+1;j<n;j++)
         {
             if(a[i] > a[j])
             {
                tmp = a[i];
                a[i]= a[j];
                a[j]= tmp;
             }
         }
     }
}
int main()
{
    int a[N],b[N],c[N+N],*p,*q,*r,anum,bnum;

    scanf("%d",&anum);    //数组a[]的元素数
    for(p=a;p<a+anum;p++) //输入数组 a[]
        scanf("%d",p);
    sort_arry(a,anum);    //排序 升序

    scanf("%d",&bnum);    //数组b[]的元素数
    for(q=b;q<b+bnum;q++) //输入数组 b[]
        scanf("%d",q);
    sort_arry(b,bnum);    //排序 升序

    for(p=a,q=b,r=c;p<a+anum && q<b+bnum ;)//升序 合并两个数组到c[]
    {
        if(*p>*q)
        {
            *r++=*q++;
        }
        else
        {
            *r++=*p++;
        }
    }
    if(p<a+anum)
    {
        for(;p<a+anum;)
        {
            *r++=*p++;
        }
    }
    else if(q<b+bnum)
    {
        for(;q<b+bnum;)
        {
            *r++=*q++;
        }
    }

    for(r=c;r<c+anum+bnum;r++)//输出合并后的数组 c[]
    {
        printf("%d ",*r);
    }
    return 0;
}