问题:输出数组时,中间某一项输出一串奇怪的数字
程序功能:降序输出两组整数的并集(A∪B)。
(1)从键盘输入A和B两组整数,每组均为5个整数(假设同一组内的各个整数互不重复)。
(2)求两组整数的并集(A∪B),即合并两组整数,且两组都出现的整数在并集中只出现一次。
(3)将并集按从大到小顺序输出。
说明:先输入数据A组数据,后输入B组数据。
输入格式:
在一行中输入5个A组互不重复整数,在下一行中输入5个B组互不重复整数,以空格分隔。
输出格式:
在一行中以从大到小的顺序输出并集结果,以空格分隔。
输入样例1:
1 2 3 4 5
1 2 6 7 8
输出样例1:
8 7 6 5 4 3 2 1
输入样例2:
1 2 3 4 5
6 7 5 4 0
输出样例2:
7 6 5 4 3 2 1 0
代码如下:
#include<stdio.h>
int main()
{
int a[5],b[5],c[10],count=5,i,j,t,flag=0;
for (i=0;i<5;i++) {
scanf("%d",&a[i]);
}
for (i=0;i<5;i++) {
scanf("%d",&b[i]);
}
for (i=0;i<5;i++) {
c[i]=a[i];
}
for (i=0;i<5;i++) {
flag=0;
for (j=0;j<5;j++) {
if (c[j]==b[i]) {
flag++;
}
}
if (flag==0) {
c[count]=b[i];
count++;
}
}
for (i=0;i<count-1;i++) {
for (j=0;j<count-i;j++) {
if (c[j]<c[j+1]) {
t=c[j];
c[j]=c[j+1];
c[j+1]=t;
}
}
}
for (i=0;i<count;i++) {
printf("%d ",c[i]);
}
return 0;
}
运行结果:8 4202960 7 6 5 4 3 2
不知道为什么会输出这串4202960奇怪的数字
解题思路:将a组的数先放入到数组c中,将数组b中的数与之逐一比较,如果都不相同,则说明该数不在数组a中,可以加到数组c中。最后,对于数组c进行冒泡排序,从大到小。