华为OJ平台试题 ——数组:整形数组合并

来源:互联网 发布:大数据分析工作 编辑:程序博客网 时间:2024/05/23 15:06


代码:

/* * 将两个整型数组按照升序合并,并且过滤掉重复数组元素 */#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;}


0 0
原创粉丝点击