在学习了冒泡法后尝试用冒泡法把数字由小到大排序,但是第一次输出的结果顺序未变,又敲了一遍结果又正确了,很奇怪。
产生错误结果的代码:
#include<stdio.h>
int main()
{
int a[10];
int j,i,m;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=0;j<9;j++);
{
for(i=0;i<9-j;i++)
{
if(a[i]>a[i+1])
{
m=a[i];a[i]=a[i+1];a[i+1]=m;
}
}
}
for(i=0;i<10;i++)
printf("%-3d",a[i]);
return 0;
}
产生正确结果的代码:
#include<stdio.h>
int main()
{
int a[10];
int i,j,t;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=0;j<9;j++)
{
for(i=0;i<9-j;i++)
{
if(a[i]>a[i+1])
{
t=a[i];a[i]=a[i+1];a[i+1]=t;
}
}
}
for(i=0;i<10;i++)
printf("%-3d",a[i]);
return 0;
}