step 1: 求两个数组的并集放到d中,并用vis数组表示这个元素是否在d数组中
int n,m,once=1;
scanf("%d", &n);
ifor(i, 0, n-1) {
scanf("%d", &a[i]);
}
scanf("%d", &m);
ifor(i, 0, m-1) {
scanf("%d", &b[i]);
}
int d[2000];
memcpy(d, a, n*4);
memcpy(d + n, b, m*4 );
//第三个参数为字节数,如复制两个int数据到d中,则这里应该写2*sizeof(int)
step 2:判断某一个元素是否在a,b数组中,不在就输出
ifor(i, 0, n -1+m) {
if(vis[d[i]+100]) continue;
//上一段提到的去重,如果出现过,就continue,注意d【i】可能为负数
vis[d[i]+100] =1;
int f1=0,f2=0;
//去两个数组中间找
ifor(j,0,n-1) {
if(d[i]==a[j]) {
f1=1;
break;
}
}
ifor(j,0,m-1) {
if(d[i]==b[j]) {
f2=1;
break;
}
}
//如果f1 f2 都为1,表示两个中都有,就不输出这个元素,不符合题意
if(f1&&f2) continue;
if(once) {
printf("%d",d[i]);
once=0;
} else printf(" %d",d[i]);
}