【问题描述】从标准输入中输入两组整数(每行不超过20个整数,每组整数中元素不重复),合并两组整数,去掉在两组整数中都出现的整数,并按从小到大顺序排序输出(即两组整数集“异或”)。
【输入形式】首先输入第一组整数的个数,再输入第一组整数,以空格分隔;然后输入第二组整数的个数,再输入第二组整数,以空格分隔。
【输出形式】按从小到大顺序排序输出合并后的整数(去掉在两组整数中都出现的整数),输出整数间以一个空格分隔,最后不含回车符。
【样例输入】
8
5 1 4 3 8 7 9 6
4
5 2 8 10
【样例输出】
1 2 3 4 6 7 9 10
【样例说明】第一组整数个数为8,分别为5 1 4 3 8 7 9 6,第二组整数个数为4,分别为5 2 8 10。将第一组和第二组整数合并(去掉在两组整数中都出现的整数),并从小到大顺序排序后结果为1 2 3 4 6 7 9 10。
#include <stdio.h>
int main() {
int num1[20], num2[20], num3[20], num4[20];
int i,j,k1=0,k2=0,tmp,flag=0;
int m,n;
scanf("%d",&m);
for(i=0;i<m;i++){
scanf("%d",&num1[i]);
}
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&num2[i]);
}
for (i = 0; i <m; i++) {
for (j = 0; j<n; j++) {
if (num1[i] == num2[j]) {
flag=1;
}
}
if(flag){
num3[k1++]=num1[i];
}else{
num4[k2++]=num1[i];
}
flag=0;
}
for (i = 0; i <n; i++) {
for (j = 0; j <m; j++) {
if (num2[i] == num1[j]) {
flag=1;
}
}
if(!flag){
num4[k2++]=num2[i];
}
flag=0;
}
for (i = 0; i < (k2-1); i++) {
for (j = i+1;j < k2; j++) {
if (num4[i] > num4[j]) {
tmp = num4[i];
num4[i] = num4[j];
num4[j] = tmp;
}
}
}
for (i = 0; i < k2; i++) {
printf("%d ", num4[i]);
}
printf ("\n");
return 0;
}