题解 | #整型数组合并#
整型数组合并
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;
}