题目
给定两个整型数组,本题要求找出不是两者共有的元素。
输入格式:
输入分别在两行中给出两个整型数组,每行先给出正整数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
AC代码
- 代码略长,添加了空行方便看
#include<stdio.h>
int cmp(int x,int num[],int n){ //对比函数(对比数,对比数组,数组元素)
for(int i=0;i<n;i++){ //1:数组中不存在相同数;0:反之
if(x==num[i])return 0;
}
return 1;
}
int main(){
int N1,N2,num1[20],num2[20],numout[40],index=0;
scanf("%d",&N1); //读入数组1
for(int i=0;i<N1;i++){
scanf("%d",&num1[i]);
}
scanf("%d",&N2); //读入数组2
for(int i=0;i<N2;i++){
scanf("%d",&num2[i]);
}
for(int i=0;i<N1;i++){ //数组1中的数逐个与数组2中的数对比同时排除重复数
if(cmp(num1[i],num2,N2)&&cmp(num1[i],numout,index)){
numout[index++]=num1[i];
}
}
for(int i=0;i<N2;i++){ //数组2中的数逐个与数组1中的数对比同时排除重复数
if(cmp(num2[i],num1,N1)&&cmp(num2[i],numout,index)){
numout[index++]=num2[i];
}
}
for(int i=0;i<index;i++){ //输出
if(i!=0)printf(" ");
printf("%d",numout[i]);
}
return 0;
}