问题遇到的现象和发生背景
问题:用指针方法实现将两个有序的数组合并成一个有序数组
问题相关代码,请勿粘贴截图
运行结果及报错内容
#include<stdio.h>
#define N 20
int main()
{
int t,a[N],b[N],c[N+N],*p,*q,*r,anum,bnum;
scanf("%d",&anum);
for(p=a;p<a+anum;p++)
{
scanf("%d",p);
}
scanf("%d",&bnum);
for(q=b;q<b+bnum;q++)
{
scanf("%d",q);
}
for(p=a,q=b,r=c;p<a+anum,q<b+bnum,r<c+anum+bnum;r++)
{
if(*p>*q)
{
*r=*q;
q++;
}
else
{
*r=*p;
p++;
}
}
if(p<a+anum&&q>=b+bnum)
{
for(p=a+bnum,r=c+2*bnum;p<a+anum,r<c+anum+bnum;p++,r++)
{
*r=*p;
}
}
if(p>=a+anum&&q<b+bnum)
{
for(q=b+anum,r=c+2*anum;q<b+bnum,q<c+anum+bnum;q++,r++)
{
*r=*q;
}
}
for(r=c;r<c+anum+bnum;r++)
{
printf("%d ",*r);
}
return 0;
}
输入:2
0 1
3
2 3 4
输出:
0 1 后面3个数都是很大的数。