给定两个整型数组,本题要求找出不是两者共有的元素。
输入格式:
输入分别在两行中给出两个整型数组,每行先给出正整数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()
{
int a[20], b[20], c[40];
int N1, N2;
int i, j;
scanf("%d", &N1);
for(i = 0; i < N1; i++)
scanf("%d", &a[i]);
scanf("%d", &N2);
for(j = 0; j < N2; j++)
scanf("%d", &b[j]);
int sign1;
int m = -1;
for(i = 0; i < N1; i++)
{
sign1 = 0;
for(j = 0; j < N2; j++)
{
if(a[i] == b[j])
{
sign1 = 1;
break;
}
}
if(sign1 == 0)
{
m++;
c[m] = a[i];
}
}
int sign2;
for( j = 0; j < N2; j++)
{
sign2 = 0;
for(i = 0; i < N1; i++)
{
if(b[j] == a[i])
{
sign2 = 1;
break;
}
}
if(sign2 == 0)
{
m++;
c[m] = b[j];
}
}
//检查c[40]用代码段
printf("%d\n", m);
for(i = 0; i <= m; i++)
{printf("%d ", c[i]);}
printf("\n");
//检查c[40]用代码段
int k,t, n = 0;
int sign3;
for(k = 0; k <= m; k++)
{
sign3 = 0;
for(t = 0; t < k; t++)
{
if(c[k] == c[t]) {sign3 = 1; break;}
}
if(sign3 == 0)
{
n++;
if(n == 1) {printf("%d", c[k]);}
else {printf(" %d",c[k]);}
}
}
return 0;
}