【问题描述】
从标准输入中输入两组整数(每行不超过20个整数,每组整数中元素不重复),合并两组整数,去掉在两组整数中都出现的整数,并按从大到小顺序排序输出(即两组整数集"异或")。
【输入形式】
首先输入第一组整数,以一个空格分隔各个整数;然后在新的一行上输入第二组整数,以一个空格分隔,行末有回车换行。
【输出形式】
按从大到小顺序排序输出合并后的整数集(去掉在两组整数中都出现的整数,以一个空格分隔各个整数)。
【样例输入】
5 1 4 32 8 7 9 -6 5 2 87 10 1
【样例输出】
87 32 10 9 8 7 4 2 -6
【样例说明】
第一组整数为5 1 4 32 8 7 9 -6,第二组整数分别为5 2 87 10 1。将第一组和第二组整数合并(去掉在两组整数中都出现的整数5和1),并从大到小顺序排序后结果为87 32 10 9 8 7 4 2 -6。
#includeint main() { int a[20] = { 0 }; int b[20] = { 0 }; int c[40] = { 0 }; char ch = 0; int i = 0,j = 0; //赋值 while (ch != 'n') { scanf("%d" ,&a[i++]); ch = getchar(); } ch = 0; while (ch != 'n') { scanf("%d", &b[j++]); ch = getchar(); } //两序列合并 int count = 0,x; for(x = 0;x < i;x++) { c[count] = a[x]; count++; } for(x = 0;x < j;x++) { c[count] = b[x]; count++; } //冒泡排序 for(i = 0;i < count;i++) { for(j = 0;j < count-1-i;j++) { if(c[j] < c[j+1]) { int t = c[j]; c[j] = c[j+1]; c[j+1] = t; } } } //输出 for(i = 0;i < count;i++) { if(c[i] == x) continue; if(c[i] == c[i+1] && i < count - 1) { x = c[i]; continue; } printf("%d ",c[i]); } return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)