若有两个以按升序排列的数列,数列a:“1,7,9,11,13,15,17,19”和数列b:“2,4,6,8,10”,现将两个数列合并插入到c数列中,插入后的c数列仍按升序排列,不可插后再排序


#include<stdio.h>
int main()
{
    int a[8] = { 1,7,9,11,13,15,17,19 }, b[5] = { 2,4,6,8,10 }, c[13];
    int * pb=b, * pc=c;
    int i, j, k=0,m;
    for (i = 0; i < 8; i++)
    {
        c[i] = a[i];
    }
    for (j = 0; j < 5; j++)
    {
            if (b[j] > c[k])
            {
                k++;
                if (b[j] < c[k])
                {
                    for (m = 12; m > k; m--)
                        c[m] = c[m - 1];
                    c[k] = b[j];
                }
                else
                    k++;
            }
    }
        for (i = 0; i < 13; i++)
            printf("%d,", c[i]);
}

我想先不用指针做,然后数字8就插不进了,麻烦大家看看在我的代码上怎么修改一下

你第一步就弄错了啊,题目要求不可插入后再排序,你为什么写 c[i] = a[i];
你不用指针也可以,但是得维护两个变量i和j,分别代表a和b的索引,然后去比较a[i]和b[j],谁小插入谁,并且对应的索引++

int a[8] = { 1,7,9,11,13,15,17,19 }, b[5] = { 2,4,6,8,10 }, c[13];
int i=0,j=0,k=0;
for(k=0;k<13;k++)
{
if(i<8 && j<5)
{
c[k]=a[i]<b[j]?a[i++]:b[j++];
}
else if(i<8)
{
c[k]=a[i++];
}
else
{
c[k]=b[j++];
}
}