[PTA]练习7-4 找出不是两个数组共有的元素

Posted Spring-_-Bear

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[PTA]练习7-4 找出不是两个数组共有的元素相关的知识,希望对你有一定的参考价值。

[PTA]练习7-4 找出不是两个数组共有的元素

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

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

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

输入样例:
10 3 -5 2 8 0 3 5 -15 9 100
11 6 4 8 2 6 -5 9 0 100 8 1
输出样例:
3 5 -15 6 4 1

  • 提交结果:

在这里插入图片描述

  • 源码:
#include<stdio.h>
int main(void)
{
	int num1[20], num2[20], num3[40];
	int M, N, index;
	
	// 输入第一个数组
	scanf("%d", &M);
	for (int i = 0; i < M; i++)
	{
		scanf("%d", &num1[i]);
	}

	//输入第二个数组
	scanf("%d", &N);
	for (int j = 0; j < N; j++)
	{
		scanf("%d", &num2[j]);
	}

	index = 0;

	//从第二个数组中num2中查找是否存在与第一个数组num1元素相同的元素,若不存在,则将其存入数组num3
	for (int i = 0; i < M; i++)
	{
		int flag = 1;   //标志性变量,表示数组num2中不存在num1中的元素

		for (int j = 0; j < N; j++)
		{
			if (num1[i] == num2[j])
			{
				flag = 0;   //num2中有与num1[i]相等的元素,修改flag为0
				break;
			}
		}

		if (flag == 1)   //num2中无num1[i],存入num3数组
		{
			num3[index] = num1[i];
			index++;
		}
	}

	//从第一个数组num1中查找是否存在与数组num2元素相同的元素,若不存在,则将其存入数组num3
	for (int i = 0; i < N; i++)
	{
		int flag = 1;   //标志性变量,表示数组num2中不存在num1中的元素

		for (int j = 0; j < M; j++)
		{
			if (num2[i] == num1[j])
			{
				flag = 0;   //num1中有num2[i],修改flag为0
				break;
			}
		}

		if (flag == 1)   //num2中无num1[i],存入num3
		{
			num3[index] = num2[i];
			index++;
		}
	}

	//处理num[3]数组中的元素,使之不存在重复元素
	for (int i = 0; i < index; i++)
	{
		for (int j = 0; j < index; j++)
		{
			if (i == j)   //下标相等,同一个元素
			{
				continue;
			}

			if (num3[i] == num3[j])   //存在相同的元素
			{
				for (int k = j; k < index; k++)   //从下标j开始,后续数组元素依次赋值给前一个元素
				{
					num3[k] = num3[k + 1];					
				}

				index--;   //数组长度减1
			}
		}
	}
		
	for (int i = 0; i < index; i++)   
	{
		printf("%d", num3[i]);   //数字间以空格分隔,但行末不得有多余的空格

		if (i != index - 1)
		{
			printf(" ");
		}
	}

	return 0;
}

以上是关于[PTA]练习7-4 找出不是两个数组共有的元素的主要内容,如果未能解决你的问题,请参考以下文章

PTA -----找出不是两个数组共有的元素

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

实验7-1-4-一维数组 找出不是两个数组共有的元素 (20 分)

找出不是两个数组共有的元素

找出数组 arr 中重复出现过的元素

编写程序,找出数组a中前n个元素中的最小元素及其下标