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

C 語言入門:數組輸入、冒泡排序與輸出完整實現

     編輯:程式設計綜合問答

需求

輸入 10 個整數,按升序排序後輸出。

完整代碼(含詳細註釋)

#include 

int main() {
    int a[10];           // 定義長度為 10 的整型數組
    int i, j, temp;      // 循環變量、臨時交換變量

    // 1. 輸入階段
    printf("請輸入 10 個整數,用空格或換行分隔:\n");
    for (i = 0; i < 10; i++) {
        scanf("%d", &a[i]);  // 逐個讀取並存入數組
    }

    // 2. 排序階段:冒泡排序
    // 外層控制趟數,共需 9 趟
    for (j = 0; j < 9; j++) {
        // 內層進行相鄰元素比較交換,每趟將最大值「冒泡」到末尾
        for (i = 0; i < 9 - j; i++) {
            if (a[i] > a[i + 1]) {      // 升序:前大於後則交換
                temp = a[i];
                a[i] = a[i + 1];
                a[i + 1] = temp;
            }
        }
    }

    // 3. 輸出階段
    printf("排序結果(升序):\n");
    for (i = 0; i < 10; i++) {
        printf("%d ", a[i]);
    }
    printf("\n");

    return 0;
}

關鍵知識點講解

數組聲明與訪問

  • int a[10]; 分配連續 10 個 int 空間,下標 0~9。
  • a[i] 表示第 i+1 個元素,&a[i] 取其地址供 scanf 寫入。

冒泡排序原理

  • 兩兩比較相鄰元素,逆序則交換。
  • 每一趟結束,當前未排序部分的最大值移動到正確位置。
  • 外層循環 n-1 趟,內層每趟遞減一次比較次數。

常見新手錯誤

進階優化(可選)

加入標志位,若某趟無交換則提前結束:

for (j = 0; j < 9; j++) {
    int swapped = 0;
    for (i = 0; i < 9 - j; i++) {
        if (a[i] > a[i + 1]) {
            // ... 交換
            swapped = 1;
        }
    }
    if (!swapped) break; // 本趟無交換,已有序
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
錯誤正確做法
scanf("%d,", &a[i]); 格式串帶逗號scanf("%d", &a[i]); 不要額外字符
數組越界訪問 a[10]下標範圍 0~9
排序循環條件寫錯外層 i < n-1,內層 j < n-1-i