代码:
/*
* 将两个整型数组依照升序合并,而且过滤掉反复数组元素
*/
#include <stdio.h>
#define N 256
#define M 512
/*
* 合并数组。删除反复的,并排序
*/
int CombineBySort(int Array1[], int iArray1Num,int Array2[], int iArray2Num,int OutputArray[], int iOutputNum)
{
int i, j,t;
int tmp;
iOutputNum = 1;
OutputArray[0] = Array1[0];
/* 将数组1 复制给输出数组,并去掉同样的数字 */
for( t = 1; t < iArray1Num; t++)
{
for(i = 0; i < iOutputNum; i++ )
{
if(OutputArray[i] == Array1[t] ) break;
else if (OutputArray[i] != Array1[t] && ( i == iOutputNum - 1 ) )
{
OutputArray[iOutputNum] = Array1[t];
iOutputNum++;
}
}
}
/* 将数组2中的每一个数与数组1中的进行比較假设不同。则增加到输出数组,假设同样,退出 */
for( i = 0; i < iArray2Num; i++ )
{
for( j = 0; j < iOutputNum; j++ )
{
if( OutputArray[j] == Array2[i] ) break;
else if( OutputArray[j] != Array2[i] && j == (iOutputNum - 1) )
{
OutputArray[iOutputNum] = Array2[i];
iOutputNum++;
}
}
}
/* 进行排序 */
for(i = 0; i < iOutputNum; i++ )
{
for( j = i; j < iOutputNum; j++)
{
if( OutputArray[i] > OutputArray[j])
{
tmp = OutputArray[i];
OutputArray[i] = OutputArray[j];
OutputArray[j] = tmp;
}
}
}
return iOutputNum;
}
int main(void)
{
int Array1Num, Array2Num, OutputNum = 0; /* Array1Num 第一个数组元素个数, Array2Num 第二个数组元素个数 */
int aArray1[N]= {0}, aArray2[N]= {0}, aOutputArray[M]= {0};
int i, j, k;
scanf("%d", &Array1Num);
for(i = 0; i < Array1Num; i++)
{
scanf("%d", &aArray1[i] );
}
scanf("%d", &Array2Num);
for( j = 0; j < Array2Num; j++)
{
scanf("%d", &aArray2[j] );
}
OutputNum = CombineBySort(aArray1, Array1Num, aArray2, Array2Num, aOutputArray, OutputNum);
for(k = 0; k < OutputNum; k++)
{
printf("%d", aOutputArray[k]);
}
return 0;
}