【样例说明】输出结束后不需要换行,输入提示符中冒号为英文字符,后面无空格。数值输出格式为%4d。
#include <stdio.h>
#include <stdlib.h>
void combine(int a[],int b[],int c[],int n,int m);
int main()
{ int *a,*b,*c,n,m,i;
printf("Enter n:");
scanf("%d",&n);
a = (int *)malloc(n*sizeof(int));
printf("Enter %d integers:",n);
for(i=0;i<n;i++)
scanf("%d",a+i);
printf("Enter m:");
scanf("%d",&m);
b = (int *)malloc(m*sizeof(int));
printf("Enter %d integers:",m);
for(i=0;i<m;i++)
scanf("%d",b+i);
c = (int *)malloc((n+m)*sizeof(int));
combine(a,b,c,n,m);
for(i=0;i<n+m;i++)
printf("%4d",*(c+i));
}
void combine(int a[],int b[],int c[],int n,int m)
{ int i,j=0,x;
for(i=0;i<n;i++)
c[i] = a[i];
for(i=0;i<m;i++)
{
for(;j<n;j++)
{
if(b[i]<=c[0])
{ for(x=n;x>0;x--)
c[x] = c[x-1];
c[0] = b[i];
n++;
break ;
}
else if(b[i]>=c[n-1])
{ c[n] = b[i];
n++;
break ;
}
else if(b[i]>=c[j]&&b[i]<=c[j+1])
{
for(x=n;x>j+1;x--)
c[x] = c[x-1];
c[j+1] = b[i];
n++;
break ;
}
}
}
}