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