给定两个整型数组,本题要求找出不是两者共有的元素。
输入格式:
输入分别在两行中给出两个整型数组,每行先给出正整数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>
#pragma warning(disable:4996)
int main(void) {
int n1, n2, num2[20], i = 0;
int num1[20];
int cnt[40];
int mm = 0, m1 = 0;
scanf("%d", &n1);
while (1) {//输入数字
nima:
scanf("%d", &num1[i]);
for (int j = 0; j < i; j++) {
if (num1[i] == num1[j]) {
n1--;
if (i != n1)
goto nima;
goto nimabi;
}
}
i++;
if (n1 == i)
break;
}
nimabi:
i = 0;
scanf("%d", &n2);
while (1) {//输入数字
nimaa:
scanf("%d", &num2[i]);
for (int j = 0; j < i; j++) {
if (num2[i] == num2[j]) {
n2--;
if (i != n2)
goto nimaa;
goto nimabia;
}
}
i++;
if (n2 == i)
break;
}
nimabia:
for (int j = 0; j < n1; j++) {
mm = 0;
for (int k = 0; k < n2; k++) {
if (num1[j] == num2[k])
mm++;
}
if (mm == 0) {
if (m1) {
printf(" ");
}
m1++;
printf("%d", num1[j]);
}
}
mm = 0;
for (int j = 0; j < n2; j++) {
mm = 0;
for (int k = 0; k < n1; k++) {
if (num2[j] == num1[k])
mm++;
}
if (mm == 0) {
if (m1) {
printf(" ");
}
m1++;
printf("%d", num2[j]);
}
}
return 0;
}