#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++];
}
}