给定两个整型数组,本题要求找出不是两者共有的元素。
输入格式:
输入分别在两行中给出两个整型数组,每行先给出正整数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 a[20], b[20], c[40];//c用于存贮不同元素
int i, j, k=0, t, n, m, flag;
scanf("%d", &n);
for( i=0; i<n; i++ ){
scanf("%d", &a[i]);
}
scanf("%d", &m);
for( i=0; i<m; i++ ){
scanf("%d", &b[i]);
}
for( i=0; i<n; i++){//先在a中寻找符合元素
flag = 1;
for( j=0; j<m; j++) if( a[i]==b[j] ) flag = 0;
if( flag ){
for( t=0; t<k; t++ ) if( c[t]==a[i] ) flag = 0;//排除已有元素
if( !flag ) continue;/重复元素不重复记录
c[k] = a[i];
k++;
}
}
for( i=0; i<m; i++){//在b中寻找
flag = 1;
for( j=0; j<n; j++) if( b[i]==a[j] ) flag = 0;
if( flag ){
for( t=0; t<k; t++ ) if( c[t]==b[i] ) flag = 0;
if( !flag ) continue;
c[k] = b[i];
k++;
}
}
for( i=0; i<k; i++ ){//遍历c输出
printf("%d", c[i]);
if( i<k-1 ) printf(" ");//最后一项后无空格
}
return 0;
}