haoaben
2015-11-17 01:24
采纳率: 100%
浏览 1.6k
已采纳

C语言冒泡排序法的疑惑

任意输入n个数,冒泡排序。我写的代码是这样的:

int main()
{
    int i,j,t,n;
    int a[n];
    n=5;
    printf("Please Enter %d numbers: \n",n);
    for(i=0;i<n;i++) {
        scanf("%d",&a[i]);
    }
    printf("The original order is: \n");
    for(i=0;i<n;i++) {
        printf("%5d",a[i]);
    }
    printf("\n");
    for(i=0;i<n-1;i++) {
        for(j=0;j<n-1-i;j++) {
            if(a[j]>a[j+1]) {
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
        }
    }
    printf("The sorted order is: \n");
    for(i=0;i<n;i++) {
        printf("%5d",a[i]);
    }
    printf("\n");
    return 0;
}

编译时没有问题,执行时就会说“程序已停止工作”之类的,我后来又把数组声明的"int a[n]"改成"int a[n+1]",就正常了,为什么啊?我里面明明只放了n个数,为什么要声明一个n+1个元素的数组?

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

4条回答 默认 最新

相关推荐 更多相似问题