楼主的程序问题在于排序的第二层循环:for(j=0;j<n-i;j++)。
第一次执行时,因为i=0,所以n-i就等于n,这样的话,在if(a[j]>a[j+1])这里,当j=5时,就是a[5]和a[6]相比,但是当你输入的数字n为6时,实际只是对数组前6个元素赋值,即从a[0]到a[5],a[6]是未被赋值的,其中是一个垃圾值,可能小于此时a[5]的值,所以当比较a[5]和a[6]时,如果a[5]>a[6],则将最大的数存入a[6]中,而你排好序后输出结果时,却是for(i=0;i<n;i++),也就是说,你只输出到a[5]就结束了,所以就有可能看不到最大的那个值了。后来你将排序的第二层循环改为:for(j=0;j<n-i-1;j++)就杜绝上述情况的发生,自然就得到了正确的结果。
我们没有作修改,就得到了正确的值,或许就是a[6]的值刚好大于a[5]的值,所以没有进行交换,也就看到了最大的值。
[
本帖最后由 取名字 于 2015-5-9 22:30 编辑 ]