题解 | #整型数组合并#
整型数组合并
https://www.nowcoder.com/practice/c4f11ea2c886429faf91decfaf6a310b
#include <stdio.h> #include <stdlib.h> int cmp(const void*w,const void*x) { return *(int*)w-*(int*)x; } int main() { int a,b; int num1[1000]={'\0'}; int e,f,g,h,k,j,m,cf,r,s,t,x,y,c2,pp; int num2[1000]={'\0'}; int num3[1000]={'\0'}; scanf("%d",&a); b=0; cf=0; c2=0; while (scanf("%d",&num1[b])!= EOF) { b++; if(b==a) break; } scanf("%d",&e); f=0; while (scanf("%d",&num2[f])!= EOF) { f++; if(f==e) break; } h=t=x=0; //printf("%d\n",num2[2]); for(r=0;r<a;r++) { t=0; for(s=r+1;s<a;s++) { if(num1[r]==num1[s]) { t++; } } if(t==0) { c2=c2+1; //不重复就计数 num3[x++]=num1[r];//前两行去重 // printf("%d",num3[t]); } } // c2=a-2; pp=0; // printf("%d\n",c2); j=c2; h=0; while(h<e)//把第二个数组进行从第一个开始比较 { m=0; //重复标记 for(k=0;k<c2;k++) //与目标数组比较 { if(num2[h]==num3[k]) { m++; //重复则标记+1 // printf("%d\n",m); } // printf("%d\n",m); } if(m==0) //FOR循环结束后如果没有重复,就赋值 { // printf("%d\n",num2[h]); //赋值后目标二者都要加一 num3[j]=num2[h]; h++; pp=pp+1; //增加的个数 j++; //printf("%d\n",num2[h]); } else h++; //重复就不赋值,但是待比较也要加1 } //printf("%d\n",pp); qsort(num3, c2+pp, sizeof(int), cmp); for(g=0;g<=(c2+pp-1);g++) { printf("%d",num3[g]); } return 0; }