冒泡排序出错
本帖最后由 ゛落君灬殇丶 于 2014-2-6 17:46 编辑#include <stdio.h>
int main(void)
{
int bubble = {9,8,7,6,5,4,3,2,1,0};
int i, j, temp;
for (i=0; i<9; i++)
{
for (j=0; j<10; j++)
{
if (bubble < bubble)//为什么这里改成 > 就不会出错 如果 要改成< J为什么要 < 9
{
temp = bubble;
bubble = bubble;
bubble = temp;
}
}
}
printf("\n");
for (i=0; i<10; i++)
{
printf("%d ", bubble);
}
}
因为数组越界了 bubble 下标是 0 - 9
for (j=0; j<10; j++) 最后一次j=9 而 bubble由于没有初始化所以读出来的是一个-XXXXXXX(具体多少我忘了你自己试试把一个没初始化的变量直接输出 输出的一定是这个值)
if (bubble > bubble) 如果是这样 应为 你定义的那些数字都比-XXXXXX大所以不会执行那个换值代码所以OK 就算数组越界了也不影响
但是if (bubble < bubble)
这样就一定会执行那些换值代码 由于没初始化 你把它赋值给temp 肯定不行啊
总结下其实你就算写>也是错的只不过这样没出发底线(读取没初始化变量可以但是不能操作)所以看起来没问题
但是写<就触发底线了 角标越界异常,j+1到10了 牡丹花下死做鬼 发表于 2014-2-6 18:05 static/image/common/back.gif
因为数组越界了 bubble 下标是 0 - 9
for (j=0; j bubble) 如果是这样 应为 你定义的那些数字都 ...
长知识了 谢谢了哈 xcking 发表于 2014-2-6 19:10 static/image/common/back.gif
角标越界异常,j+1到10了
谢谢啦哈:lol:
页:
[1]