若有两个以按升序排列的数列,数列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; )
    {
            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数字插不进去,差一个循环,但我不知道这个循环怎么写

题目要求用指针写,修改如下,供参考:

#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 *pa = a, * pb=b, * pc=c;
    while (pa < a + 8 && pb < b + 5)
    {
        if (*pa <= *pb){
            *pc++ = *pa++;
        }
        else{
            *pc++ = *pb++;
        }
    }
    while (pa < a + 8) *pc++ = *pa++;
    while (pb < b + 5) *pc++ = *pb++;
    for (int i = 0; i < 13; i++)
            printf("%d,", c[i]);
    return 0;
}

题主的代码,修改如下,供参考:

#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++)//继续接上 b[]数组
    {
        c[i++] = b[j];
    }
    for (i = 0; i < 13 - 1; i++){ //数组c[]排序
         for (j = 0; j < 13 - 1 - i; j++){
              if (c[j] > c[j+1]){
                  m = c[j];c[j] = c[j+1];c[j+1] = m;
              }
         }
    }
            //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]);
    return 0;
}

 
//8数字插不进去,差一个循环,但我不知道这个循环怎么写

第二个for循环有个j++忘粘了


#include"stdafx.h"
#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 *pa = a, *pb = b, *pc = c;

    //int i, j, k = 0, m;

    int i = 0, j = 0;

    //printf_s("%d", *pa);

    while (i < 8 || j < 5) {
        if (i == 8) {
            *pc = *pb;
            pc++;
            pb++;
            j++;
            continue;
        }
        if (j == 5) {
            *pc = *pa;
            pc++;
            pa++;
            i++;
            continue;
        }
        if (*pa > *pb) {
            *pc = *pb;
            pc++;
            pb++;
            j++;
        }
        else {
            *pc = *pa;
            pc++;
            pa++;
            i++;
        }
    }

    /*for (i = 0; i < 8; i++)

    {

        c[i] = a[i];

    }

    for (j = 0; j < 5; )

    {

        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_s("%d,", c[i]);

    getchar();
    return 0;
}