数组a的元素升序排列,数组b的元素降序排列,把数组a和b合并到数组c中,c中的元素降序排列。

【输入形式】从键盘输入数组a的值10个元素,从小到大输入,从键盘输入数组b的10个元素,从大到小输入。
【输出形式】输出数组c的元素,从大到小排列。
【样例输入】

1 2 3 4 5 6 7 8 9 10

10 9 8 7 6 5 4 3 2 1

【样例输出】10 10 9 9 8 8 7 7 6 6 5 5 4 4 3 3 2 2 1 1

a从后往前遍历,b从前往后遍历,比较a[i]和b[j]的大小,谁大就先把谁放入数组。
运行结果:

img

代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int main()
{
    int a[10], b[10], c[20];
    int i, j;
    int k = 0;
    for (i = 0; i < 10; i++)
        scanf("%d", &a[i]);
    for (i = 0; i < 10; i++)
        scanf("%d", &b[i]);
    
    i = 9; //a从后往前遍历
    j = 0; //b从前往后遍历
    while (i >= 0 && j < 10)
    {
        if (a[i] > b[j])  //比较,先插入大的数
        {
            c[k++] = a[i];
            i--; //a从后往前遍历,所以是i--
        }
        else
        {
            c[k++] = b[j];
            j++;
        }
    }

    //插入剩余数据
    while (i >= 0)
    {
        c[k++] = a[i];
        i--;
    }
    while (j < 10)
    {
        c[k++] = b[j];
        j++;
    }
    //输出
    for (i = 0; i < 20; i++)
    {
        if (i < 19)
            printf("%d ", c[i]);
        else
            printf("%d", c[i]);
    }
    return 0;
}





那就将a元素逐个插入b数组就行了

#include <stdio.h>
void insert(int *a,int n,int x)
{
    for(int i=0;i<n;i++)
    {
        if(a[i] < x)
        {
            for(j=n;j>i;j--)
               a[j] = a[j-1];
            a[i] = x;
            break;
        }
    }
    if(i==n)
        a[n] = x;
}
int main()
{
    int a[10],b[10],c[20];
    int i;
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
    for(i=0;i<10;i++)
    {
        scanf("%d",&b[i]);
        c[i] = b[i];
    }
    for(i=0;i<10;i++)
        insert(c,a[i]);
    for(i=0;i<20;i++)
        printf("%d ",c[i]);
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^