练习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
解决思路
- 定义 数组1和数组2
- 定义一个数组3
- 提取数组1中 不是两数组共有的元素 放到数组3
- 提取数组2中 不是两数组共有的元素 放到数组3
- 删除数组3 重复的元素
- 输出数组3 的元素
# include<stdio.h>
int main()
{
int i,j;
scanf ("%d", &i);
int num1[i];
int cnt ;
for (cnt = 0;cnt < i; cnt ++) {
scanf ("%d", &num1[cnt]);
}
scanf ("%d", &j);
int num2[j];
for (cnt = 0; cnt < j; cnt ++) {
scanf ("%d", &num2[cnt]);
} // 定义 数组1和数组2
int m, n;
int num3[20]; //数组3
int x = 0;
for (m = 0; m < i; m ++) {
int flag = 1;
for (n = 0; n < j; n ++) {
if (num1[m] == num2[n]) {
flag = 0;
break;
}
}
if (flag ) {
num3[x++] = num1[m];
}
} // 提取数组1中 不是两数组共有的元素 放到数组3
for (n = 0; n < j; n ++) {
int flag = 1;
for (m = 0; m < i; m ++) {
if (num2[n] == num1[m] ) {
flag = 0;
break;
}
}
if (flag ) {
num3[x++] = num2[n];
}
} // 提取数组2中 不是两数组共有的元素 放到数组3
int t ;
int k = 0;
for (t = 0; t < x; t ++) {
for (cnt = 0; cnt < t; cnt ++) {
if (num3[cnt] == num3[t]) {
break;
}
}
if (cnt == t) num3[k ++] = num3[t];
} // 删除数组3 重复的元素
for (t = 0; t < k; t ++) {
if (t < k-1)
printf("%d ",num3[t]);
else
printf("%d",num3[t]);
} // 输出数组3 的元素
printf("\n");
return 0;
}