为什么这个程序运行出来的结果总是有个41?

存入的数据里面没有41,但是输出的数组按小到大排总是有一个41,这是为什么,不知道这个程序错在哪里了

img

内层循环条件错了,当i=9时,a[i+1]就越界了

for循环中,改为i<9-j


#include<stdio.h>
int main()
{
    int a[10],i,j,t;
    printf("请输入10个数:");
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
    for(i=0;i<9;i++)
        for(j=0;j<9-i;j++)
            if(a[j]>a[j+1])
            {
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
    for(i=0;i<10;i++)
        printf("%d ",a[i]);
    return 0;
}
 

试试这个