儿歌小铃铛:C语言 冒泡法疑问?

来源:百度文库 编辑:高考问答 时间:2024/04/28 13:00:25
int num[9];
for(i=1;i<9;i++)
scanf("%d ",&num[i]);
我运行可以输入很多数字,比如:1 2 3 4 5 6 7 8 9 10 11 13等等 中间加空格输入的,如果用回车也是这样,并不是输入8个就结束了。
for(j=1;j<8;j++)
for(i=1;i<=8-j;i++) /其中i<=8-j是什么意思??/
if(num[i]>num[i+1])
....
并不是输入9个就结束了,这个是为什么?可以输入很多,10几个。我是输入一个数字加个空格,再输入第二个数字,依此类推。不知道哪错误。?

for循环中的起始数字错了!应该是从0开始,而不是1!因为在数组中是从0开始存的!
对于数字个数好像没有太多限制,建议你在main前加上void以便编译程序进行检查!

第一层循环是把一系列数挨个比较,第二层循环之所以减j是因为有j个数据已经排好序了,就不用考虑了。

那你前面怎么声明的 int num[9] ?