想问下动态数组的问题,要两个有序的数组合成一个,一次性完成。
#include <stdio.h>int main()
{
int *a;//是不是这里用指针,等下就可以用realloc了。
int *b;
int i=0,j=0,k;
printf ("请输入第一个数组:\n");
while ( scanf("%d",&a[i])==1&&a[i]!='\n')
{
i++;
}
a[i]='\0';
printf ("输入第二个数组:\n");
while (scanf("%d",&b[j])==1&&b[i]!='\n')
{
j++;
}
b[i]='\0';
j--;
k=i+j;
a=(int *)realloc(a,k*sizeof(int));//用realloc 怎么扩充之前的数组同时又
i=0;不覆盖之前的数组?
j=0;
while (i<k)
{
while (a[i]!='\0'&&b[j]!='\0')
{
if(a[i]<b[j])
{
i++;
}
else if(a[i]>b[j])
{
a[i++]=b[j++];
}
else
{
i++;
j++;
}
}
while (a[i]!='\0')
{
i++;
}
while(b[j]!='\0')
{
a[i++]=b[j++];
}
}
i=0;
while (a[i]!='\0')
printf ("%d",a[i]);
return 0;
}