[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 找出不是两个数组共有的元素的主要内容,如果未能解决你的问题,请参考以下文章