按下面的a[]、b[]内容不能正确输出!但去掉A[]红字内容或再加一个数后,
却能正常输出,这是怎么回事???
请看一下程序有错吗?帮我优化、修正一下。多谢了!
#include <stdio.h>
#define N 40
void mg(int *,int *,int *,int,int);
int main()
{
int a[]={1,3,5,6,9,45,78,78};
int b[]={2,4,7,8,9,11,45,67,99,876};
int s[N],i,al,bl;
al=sizeof(a)/sizeof(a[0]);
bl=sizeof(b)/sizeof(b[0]);
mg(s,a,b,al,bl);
for(i=0;i<al+bl;i++) {if(i%10==0)printf("\n");printf("%6d",s[i]);}
printf("\n");
system("PAUSE");
return 0;
}
void mg(int *s,int *a,int *b,int al,int bl)
{
int i,j;
for(i=j=0;i<al,j<bl;)
{
if(a[i]<b[j]) *s++=a[i++];
else if(a[i]==b[j]) {*s++=a[i++];*s++=b[j++];}
else *s++=b[j++];
}
while(i<al) *s++=a[i++];
while(j<bl) *s++=b[j++];
}