#include<stdio.h>
main()
{
int a[10],i,j,temp;
printf("Please input 10 number:\n");
for(i=0;i<10;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=0;i<9;i++)
for(j=0;j<10-i;j++)
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
for(i=0;i<10;i++)
printf("%4d",a[i]);
printf("\n");
}
程序是可以运行的。 而且是升序排序。
-------------------------------------------------------------------------------------------------------
for(i=0;i<9;i++)
for(j=0;j<10-i;j++)
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
问题1:当i=0时,j最大可以取到9。 如果j=9,那么if(a[j]>a[j+1)=if(a[9]>a[10]),a[10]不就越界了吗?
问题2:当i的值取最大8时,j<2, 那么j=0,j=1. 这是比较了2次啊,为什么说就比较了一次呢?
j不可能为9;这样你的两个问题都解决了!
#include<stdio.h>