程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c語言-C語言冒泡排序法的疑惑

c語言-C語言冒泡排序法的疑惑

編輯:編程綜合問答
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個元素的數組?

最佳回答:


通過實際測試你的程序有兩個問題,一個n=5;應該在數組定義前面;一個冒泡排序兩個for語句的第一個,應該是for(i=0;i<n;i++)

haoaben
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved