欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

练习7-4 找出不是两个数组共有的元素 (20分)

程序员文章站 2022-06-07 14:39:53
...

PTA

题目:
练习7-4 找出不是两个数组共有的元素 (20分)
代码:

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int a[20], b[20], c[20],flag=0;//这里flag做旗帜变量 
	int m, n, i, j, k=0;
	scanf("%d", &m);
	for(i=0; i<m; i++)
		scanf("%d", &a[i]);
	scanf("%d", &n);
	for(i=0; i<n; i++)
		scanf("%d", &b[i]);//对数组赋值 
	for(i=0; i<m; i++)
	{
		for(j=0; j<n; j++)
			if(a[i]==b[j])
				break;
		if(j>=n)
		{
			c[k]=a[i];
			k++;
			flag=1;
		}//将不重复的数字添加到c中 
	}
	for(i=0; i<n; i++)
	{
		for(j=0; j<m; j++)
			if(b[i]==a[j])
				break;
		if(j>=m)
		{
			c[k]=b[i];
			k++;
			flag=1;
		}
	}
	if(flag!=0)
	{
	printf("%d", c[0]);//这并没用考虑到完全相同的情况 
	for(i=1; i<k; i++)
	{
		for(j=0; j<i; j++)
			if(c[i]==c[j])
				break;
		if(j>=i)
			printf(" %d", c[i]);
	}
	}
	return 0;	
}

详解:

  1. 总体思路:先赋值,将a数组中不存在与b数组的元素填入c数组中,再将b数组中不存在于a数组中的元素填入c数组中,最后进行去重判断,同时要保留一种特殊情况即:两个数组完全相同。
  2. 判断特殊情况只需要一个旗帜变量flag即可很容易处理。除赋值外第一个大的for循环实现a数组的添加,第二个for循环实现b数组的添加。最后一个for循环实现判断去重。
    结果:
    练习7-4 找出不是两个数组共有的元素 (20分)
相关标签: pta中级题目