首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言入門實作:純 if 語句實現 7 數由大到小排序

     編輯:關於C語言

C 語言入門實作:純 if 語句實現 7 數由大到小排序

不使用迴圈、陣列、排序演算法,僅靠兩兩比較交換的原始方式,完成 7 個浮點數的降冪排序。這是理解「比較交換」本質的極佳練習。

核心邏輯:氣泡排序的手動展開

利用暫存變數 t 進行交換,依序比較:

  1. a 與 b~g 比較,確保 a 為最小值
  2. b 與 c~g 比較,確保 b 為次小值
  3. ...以此類推至 f 與 g 比較

共需 C(7,2) = 21 次比較交換,最終 a ≤ b ≤ c ≤ d ≤ e ≤ f ≤ g。

完整程式碼

#include <stdio.h>

void main() {
    float a, b, c, d, e, f, g, t;
    scanf("%f,%f,%f,%f,%f,%f,%f", &a, &b, &c, &d, &e, &f, &g);

    if (a > b) { t = a; a = b; b = t; }
    if (a > c) { t = a; a = c; c = t; }
    if (a > d) { t = a; a = d; d = t; }
    if (a > e) { t = a; a = e; e = t; }
    if (a > f) { t = a; a = f; f = t; }
    if (a > g) { t = a; a = g; g = t; }

    if (b > c) { t = b; b = c; c = t; }
    if (b > d) { t = b; b = d; d = t; }
    if (b > e) { t = b; b = e; e = t; }
    if (b > f) { t = b; b = f; f = t; }
    if (b > g) { t = b; b = g; g = t; }

    if (c > d) { t = c; c = d; d = t; }
    if (c > e) { t = c; c = e; e = t; }
    if (c > f) { t = c; c = f; f = t; }
    if (c > g) { t = c; c = g; g = t; }

    if (d > e) { t = d; d = e; e = t; }
    if (d > f) { t = d; d = f; f = t; }
    if (d > g) { t = d; d = g; g = t; }

    if (e > f) { t = e; e = f; f = t; }
    if (e > g) { t = e; e = g; g = t; }

    if (f > g) { t = f; f = g; g = t; }

    printf("%-5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f\n", a, b, c, d, e, f, g);
}

執行範例

輸入: 7,3,9,1,5,2,8
輸出: 1.00, 2.00, 3.00, 5.00, 7.00, 8.00, 9.00

教學價值與局限

優點缺點
直觀展示比較交換本質程式碼冗長(O(n²) 行)
無需理解迴圈、陣列、函數擴充性極差(n=100 時不可維護)
適合絕對初學者建立邏輯信心非實務開發模式

進階路徑

  1. 引入 陣列 統一管理資料
  2. 用 雙層迴圈 替換手寫比較
  3. 封裝為 函數 實現模組化
  4. 學習 qsort、快速排序 等高效演算法

此程式雖非生產級代碼,但能幫助初學者跨越「從邏輯到語法」的認知鴻溝。

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