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

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条回答 默认 最新

  • 木听涛 2015-11-17 01:52
    关注

    通过实际测试你的程序有两个问题,一个n=5;应该在数组定义前面;一个冒泡排序两个for语句的第一个,应该是for(i=0;i<n;i++)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)