哪位知道这个怎么弄。?!

将2个按升序排列的整数数列,仍然按升序合并,存放到另一个数组中,要求每个数依次插入恰当的位置,也就是一次到位,不得在新数组中重新排序。
输入提示:

先输入两个整数,分别为以下两行升序数列的长度,然后输入两行升序整数数列。
输出提示:

输出仅一行升序数列。
输入样本:

4 3
1 3 4 7
2 3 6
输出样本:

1 2 3 3 4 6 7

两个数组的元素从第一个开始逐个比较,哪个更小就加入新数组,然后指向下一个元素。

#include <stdio.h>
int main()
{
    int a[100],b[100],c[200];
    int i,j,n,m,k=0;
    scanf("%d%d",&n,&m);
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    for(i=0;i<m;i++)
        scanf("%d",&b[i]);
    i=0;
    j=0;
    while(i<n && j<m)
    {
        if(a[i] >= b[j])
        {
            c[k++] = b[j];
            j++;
        }
        else
        {
            c[k++] = a[i];
            i++;
        }
    }
    if(i<n)
    {
        for(j=i;j<n;j++)
            c[k++] = a[j];
    }
    else if(j<m)
    {
        for(i=j;i<m;i++)
            c[k++] = b[i];
    }
    for(i=0;i<k;i++)
        printf("%d ",c[i]);

    return 0;
}

你题目的解答代码如下:

#include <stdio.h>
void main()
{
    int n,m,i,j=0,k=0,l=0;
    scanf("%d%d", &n, &m);
    int a[n];
    int b[m];
    int c[n+m];
    for(i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    for(i=0;i<m;i++){
        scanf("%d",&b[i]);
    }
    while (j<n || k<m)
    {
        if (k>=m || (i<n && a[j]<b[k]))
            c[l++] = a[j++];
        else
            c[l++] = b[k++];
    }
    for(i=0;i<l;i++){
        printf("%d ",c[i]);
    }
}

img

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