本文精選《C 語言程式設計教學》第八章 33 道經典例題,系統涵蓋函數定義/宣告/呼叫、參數傳遞機制、遞迴、指標函數、標準庫函數重寫、實戰選單驅動統計系統,是掌握 C 語言模組化程式設計的完整教材。
| 例題 | 核心知識點 | 關鍵代碼 |
|---|---|---|
| 8.1 矩形面積 | 無參函數、有參函數、返回值、模組化 | float area(float a,float b){return a*b;} |
| 8.2 無參函數 | 單純輸出功能封裝 | void output(){printf(...);} |
| 8.3 圓面積 | #define PI、浮點參數/返回 | float a(float r){return PI*r*r;} |
| 8.4 表達式中呼叫 | 函數呼叫作右值 m=max(a,b) | int max(int x,int y){return x>y?x:y;} |
| 8.5 實參表中巢狀呼叫 | max(max(a,b),c) 求三數最大 | 同上 |
| 8.6 溫度轉換 | 公式實作、整數除法陷阱 5.0/9.0 | int ftoc(float f){return (5.0/9.0)*(f-32);} |
swap(a,b) 無法交換實參(形參為副本)f(i,++i,++i) 從右至左(編譯器相關,不可依賴)int b[][4],第二維必須指定swap(int*,int*) 才能真正交換float add(float,float); 置於 main 前或檔案頂部| 例題 | 知識點 | 關鍵語法 |
|---|---|---|
| 8.14 巢狀呼叫 | 函數呼叫函數 area_ring→area | 模組化分層 |
| 8.15 遞迴階乘 | fac(n)=n*fac(n-1),基礎情況 n==0 | 遞迴定義 |
| 8.16 遞迴費氏數列 | f(n)=f(n-1)+f(n-2),指數級複雜度 | 教學用,實務用迴圈/DP |
| 8.17 漢諾塔 | 經典遞迴 move(n-1,A,C,B); move(1,A,C); move(n-1,B,A,C) | 遞迴威力展示 |
| 8.18 全域變數傳結果 | 函數無返回值,透過全域變數 c,area 回傳 | 不推薦,耦合度高 |
| 8.19 區域/全域同名 | 區域變數遮蔽全域,max(a,b) 用區域 a | 作用域規則 |
| 8.20 靜態區域變數 | static int a=2 保持值跨呼叫,僅初始化一次 | 狀態保持 |
| 8.21 自動變數 | auto int a=2 每次呼叫重新初始化(預設行為) | 對比 static |
| 8.22 暫存器變數 | register int i 建議存暫存器(現代編譯器自動優化) | 優化提示 |
| 8.23 外部變數宣告 | extern int a 跨檔案共用全域變數 | 多檔案專案 |