程序 = 數據結構 + 算法。掌握算法思維與三大基本程序結構(順序、選擇、循環)是編寫所有 C 程序的基石。本文通過階乘計算演示算法優化過程,圖解三大結構流程,並以九九乘法表為例展示雙重循環實戰。
解決問題的**有限、確定、可行**步驟序列。優秀算法特徵:正確性、可讀性、健壯性、時空效率高。
| 版本 | 步驟描述 | 優缺點 |
|---|---|---|
| 直線碼 | t=1×2=2; t=2×3=6; t=6×4=24; t=24×5=120 | 正確但冗長,擴展到 100! 需手寫 100 行 |
| 迭代算法 | 1. t←1, i←2 2. t←t×i 3. i←i+1 4. 若 i≤5 回步驟 2,否則結束 | 結構清晰,改上限即得 100!;天然適配計算機循環執行 |
| 通用算法 | 上限改為 n,步長改為 2 即得奇數乘積 | 參數化,復用性強 |
**核心洞見**:計算機擅長高速重複執行固定步驟(循環),算法設計應將重複模式提煉為循環結構。
結構化程序定理證明:任何可計算問題均可由三種結構組合實現,無需 goto。
sum = 1 + 2 + 3 + 4 + 5; 逐條累加。if / if-else / switch-case。while / for / do-while。#include <stdio.h>
int main(void) {
for (int i = 1; i <= 9; ++i) { // 外層:控制行 (被乘數)
for (int j = 1; j <= i; ++j) { // 內層:控制列 (乘數) 1×i ... i×i
printf("%d×%d=%-3d", j, i, i * j);
}
putchar('\n'); // 換行
}
return 0;
}
運行結果:
1×1=1
1×2=2 2×2=4
1×3=3 2×3=6 3×3=9
...
1×9=9 2×9=18 ... 9×9=81
外層迴圈 9 次,內層遞增,總計 45 次乘法與輸出,完美演示嵌套循環控制二維輸出。
| 算法模式 | 對應程序結構 | 典型關鍵字 |
|---|---|---|
| 線性步驟 | 順序 | 語句序列 |
| 條件分支 | 選擇 | if, switch |
| 固定次數重複 | 計數循環 | for |
| 條件控制重複 | 條件循環 | while, do-while |
| 嵌套重複 | 多重循環 | 嵌套 for/while |
for 處理已知次數循環,while 處理條件驅動循環。