#include "stdio.h"
int main()
{
int i,j,t;
int a[10];
for(i=0;i<10;i++)
{
scanf("%d",&a[10]);
}
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<9;i++)
{
printf("%d",a[i]);
}
return 0;
}
修改代码如下:
#include "stdio.h"
int main()
{
int i, j, t;
int a[10];
for(i = 0; i < 9; i++)
{
scanf("%d", &a[i]);
}
for(j = 1; 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 < 9; i++)
{
printf("%d", a[i]);
}
return 0;
}
首先,你的scanf("%d", &a[10])有问题,你这个不仅下标越界,而且每次输入的值都作为越界那个元素的值去了,应该用&a[i]。
其次,在比较的那个循环体中,你的第二个循环判断条件有误,当j = 0时,i会比较到i<9,那么你的i+1=10>9又越界了。你可以用8-i,或者用我的那个判断条件也行