D. 实验7-1-8 找出不是两个数组共有的元素

195 阅读2分钟
D. 实验7-1-8 找出不是两个数组共有的元素
题目描述

给定两个整型数组,本题要求找出不是两者共有的元素。


输入

输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数,其间以空格分隔。


输出

在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格。题目保证至少存在一个这样的数字。同一数字不重复输出。


样例查看模式 
正常显示
查看格式
输入样例1 
10 3 -5 2 8 0 3 5 -15 9 100
11 6 4 8 2 6 -5 9 0 100 8 1
输出样例1
3 5 -15 6 4 1

 

#include<stdio.h>
int main()
{
	int num1[25],num2[25],dif[25],cn=0,f,g,sign_=0,sign=0,count_=0,i,m,j,x,z,n,q,w,b,v,count=0,e,c;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d",&num1[i]);
	}
	scanf("%d",&m);
	for(j=0;j<m;j++)
	{
		scanf("%d",&num2[j]);
	}
	
	for(z=0;z<n;z++)
	{
		count=0;
		for(x=0;x<m;x++)
		{
			sign=0;
			for(f=z-1;f>=0;f--)
			{
				
				if(num1[z]==num1[f])
				{
					sign=1;
					break;
				}
			}
			if(sign==1)
			break;
			
			if(num1[z]!=num2[x])
			{
				count++;
			}
		}
		if(sign==1)
		continue; 
		if(count==m)
		{
			dif[cn]=num1[z];
			cn++;
		}
		
	}
	for(w=0;w<m;w++)
	{
		count_=0;
		sign_=0;
		for(e=0;e<n;e++)
		{
			for(g=w-1;g>=0;g--)
			{
				if(num2[g]==num2[w])
				{
					sign_=1;
					break;
				}
			}
			if(sign_==1)
			break;
			if(num2[w]!=num1[e])
			{
				count_++;
			}
		}
		if(sign_==1)
		continue;
		if(count_==n)
		{
			dif[cn]=num2[w];
			cn++;
		}
	}

	for(v=0;v<cn;v++)
	{
		printf("%d ",dif[v]);
	}

	return 0;
}

感觉我写的有点复杂了,不过思路还是比较清晰的,我这里是利用了嵌套循环,我首先以第一个数组中的每个数去对比另一个数组的每一个数,如果有不一样的两个数出现的话,我们就将其记录到一个(dif[])数组中;同理,我又以第二个数组中的每一个数去对比另一个数的每一个数,同样如果有不一样的两个数出现的话也将其写入数组中(dif[]),最后我们输出整个数组(dif[])即可~~~~