/**
假设:
int a[]={1,3,5,7,9};
int b[]={2,4,6,8};
要求:
不能将两个数组合并后再分别复制到两个数组中.
结果:
a[]={1,2,3,4,5,6,7,8,9};
b[]={1,2,3,4,5,6,7,8,9};
**/
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int a[32]={1,3,5,7,9},b[32]={2,4,6,8};
int i=0,j=0;
while ('\0'!=a[i] && '\0'!=b[i])
{
if (a[i]!=b[i])
{
for (j=sizeof(a)/sizeof(int)-1;j>i+1;--j)
a[j]=a[j-1]; //将a[i]后面的数据移动一位
for (j=sizeof(b)/sizeof(int)-1;j>i+1;--j)
b[j]=b[j-1]; //将b[i]后面的数据移动一位
if (a[i]<b[i])
{//按升序组合两个数组
a[i+1]=b[i];
b[i]=a[i];
}
else
{//按升序组合两个数组
b[i+1]=a[i];
a[i]=b[i];
}
}
++i;
}
if ('\0'!=a[i])
{//如果a中还有数据
while ('\0'!=a[i])
{//将a剩余的数据组合到b中
b[i]=a[i];
++i;
}
}
if ('\0'!=b[i])
{//如果b中还有数据
while ('\0'!=b[i])
{//将b剩余的数据组合到a中
a[i]=b[i];
++i;
}
}
for (i=0;i<sizeof(a)/sizeof(int) && '\0'!=a[i];i++)
printf("a[%d]=%d\n",i,a[i]);
for (i=0;i<sizeof(b)/sizeof(int) && '\0'!=b[i];i++)
printf("b[%d]=%d\n",i,b[i]);
return 0;
}