7-5 找出不是两个数组共有的元素 (c语言)

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]);
	}

你可能感兴趣的:(c,语言特性,c语言,算法)