输出数组时,中间某一项输出一串奇怪的数字

问题:输出数组时,中间某一项输出一串奇怪的数字

程序功能:降序输出两组整数的并集(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
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;ifor (j=0;jif (c[j]t=c[j];
                c[j]=c[j+1];
                c[j+1]=t;
            }
        }
    }
    for (i=0;i"%d ",c[i]);
    }
    return 0;
}

运行结果:8 4202960 7 6 5 4 3 2
不知道为什么会输出这串4202960奇怪的数字

解题思路:将a组的数先放入到数组c中,将数组b中的数与之逐一比较,如果都不相同,则说明该数不在数组a中,可以加到数组c中。最后,对于数组c进行冒泡排序,从大到小。

冒泡排序算法那里出错了,你每次冒泡把最小的数放在数组最后面,但是你里面的循环次数是 0 到 count - i,这样在第一次冒泡排序时(i=0)实际的循环次数就是count次,这样就会访问到c数组后面未被赋值的值,就会出现奇怪的数字。
把 for (j=0;j<count-i;j++) {
改成 for (j=0;j<count-1-i;j++) { 就好

中间有个换行,你需要用getchar读进来,否则后续执行scanf的时候读到换行就出错了,数组B全都没有赋值

明白了 感谢大神