C语言问题:合并两个升序排列的数列

若有两个已按升序排列的数列,数列a:1 7 9 11 13 15 17 19和数列 b :2 4 6 8 10. 现将这两个数列合并插入到c数列中,插入后的数列c 仍按升序排列 要求通过指针完成。

提示: 通过while循环进行合并,执行循环的条件为“i<8&&j<5 其含义为a和b数组同时都存在没有比较过的元素 就要继续循环

在循环体中,将两个书列中当前值小的元素存放到c数组中 循环结束时,有一个数组已经比到最后一个元素

再通过循环(i<8)将数组a中余下的元素存放到c数组之后,或者通过while(j<5)将数组b中余下的元素存放到c数组之后。

希望能根据上面提示帮我写一下程序 我是新手。。。。 谢谢了各位

第1个回答  2009-02-05
#include<stdio.h>
void main()
{
int a[]={1,7,9,11,13,15,17,19};
int b[]={2,4,6,8,10};
int c[13];
int *x=a,*y=b,*z=c;
int i=0,j=0,k=0;
while(i<8&&j<5)
{
    if(x[i]<y[j]) z[k++]=x[i++];/*x[i] 可以用 *(x+i) 替换,其他类同*/
    else z[k++]=y[j++];
}
while(i<8) z[k++]=x[i++];
while(j<5) z[k++]=y[j++];
for(i=0;i<13;i++) printf("%d ", c[i]);
getch();
}本回答被提问者采纳
相似回答