首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言冒泡排序常見錯誤:輸入迴圈缺少索引遞增導致陣列未正確填充

     編輯:程式設計綜合問答

錯誤代碼

int i, a, num = 5;
int array[5];
while (num--) {
    scanf("%d", &a);
    array[i] = a; // i 未初始化、未遞增!每次寫入同一位置(未定義行為)
}

修正版

int array[5];
for (int i = 0; i < 5; i++) { // 明確初始化、條件、遞增
    scanf("%d", &array[i]);
}
// 冒泡排序
for (int i = 0; i < 4; i++) {
    for (int j = 0; j < 4 - i; j++) {
        if (array[j] > array[j+1]) {
            int tmp = array[j];
            array[j] = array[j+1];
            array[j+1] = tmp;
        }
    }
}
// 輸出
for (int i = 0; i < 5; i++) printf("%d ", array[i]);

關鍵修正點

  1. 迴圈變數初始化:int i = 0。
  2. 迴圈條件:i < 5。
  3. 迴圈遞增:i++(或在迴圈體末尾 i++)。
  4. 直接寫入 array[i],避免中間變數 a。

完整可執行範例

#include <stdio.h>
#define N 5
int main() {
    int a[N];
    for (int i = 0; i < N; i++) scanf("%d", &a[i]);
    for (int i = 0; i < N-1; i++)
        for (int j = 0; j < N-1-i; j++)
            if (a[j] > a[j+1]) { int t=a[j]; a[j]=a[j+1]; a[j+1]=t; }
    for (int i = 0; i < N; i++) printf("%d ", a[i]);
    return 0;
}

編譯執行後,輸入 5 個數字即可得到排序結果。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved