代码:
/* * 将两个整型数组依照升序合并,而且过滤掉反复数组元素 */#include#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;}