冒泡法用浮点型出错 c语言

来源:百度知道 编辑:UC知道 时间:2024/05/17 02:44:29
编写一个函数用冒泡法对输入的10个字符由小到大顺序输出。
#include <stdio.h>
void main()
{
float num[10];
int i;
int a;
int b;

///////////////////////////////////////////////////////////

printf("输入十个数:");
for(i=0;i<10;i++)
scanf("%f",&num[i]);

///////////////////////////////////////////////////////////

for(a=0;a<9;a++)
for(i=0;i<10-a;i++)
{
if(num[i]>num[i+1])
{
b=num[i];
num[i]=num[i+1];
num[i+1]=b;
}
}

///////////////////////////////////////////////////////////

for(i=0;i<10;i++)
printf("%f ",num[i]);
}

改为整型就正常,为什么呢?

for(a=0;a<9;a++)
for(i=0;i<10-a;i++) 这里, a可能等于0, 所以i=9是可以进入循环的

当 i=9的时候 num[i+1]=b; 这个赋值就越界了

整形不出错也许是编译器“正好”分配到越界的位置你可以写,并且没重要的东西