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

C 語言函數經典例題全解析:從基礎語法到遞迴、指標函數與實戰統計系統

     編輯:關於C語言

C 語言函數經典例題全解析:從基礎語法到遞迴、指標函數與實戰統計系統

本文精選《C 語言程式設計教學》第八章 33 道經典例題,系統涵蓋函數定義/宣告/呼叫、參數傳遞機制、遞迴、指標函數、標準庫函數重寫、實戰選單驅動統計系統,是掌握 C 語言模組化程式設計的完整教材。

基礎語法篇 (8.1-8.6)

例題核心知識點關鍵代碼
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.0int ftoc(float f){return (5.0/9.0)*(f-32);}

參數傳遞機制篇 (8.7-8.13)

  • 8.7 值傳遞:swap(a,b) 無法交換實參(形參為副本)
  • 8.8 實參求值順序:f(i,++i,++i) 從右至左(編譯器相關,不可依賴)
  • 8.9 陣列元素作參數:傳遞單一元素值,不影響原陣列
  • 8.10 冒泡排序:陣列名傳遞實為指標,函數內可修改原陣列
  • 8.11 二維陣列找最大:參數 int b[][4],第二維必須指定
  • 8.12 指標交換:swap(int*,int*) 才能真正交換
  • 8.13 函數宣告:float add(float,float); 置於 main 前或檔案頂部

進階特性篇 (8.14-8.23)

實戰技巧篇 (8.24-8.33)

  • 8.24 多檔案共用變數:static 限制連結範圍 vs extern 延伸
  • 8.25 手寫 strcpy:while(*s1++=*s2++); return p; 指標版字串複製
  • 8.26 手寫 strcat:先找 s1 尾部 \0,再接 s2
  • 8.27 函數指標基本用法:int (*p)(); p=f; (*p)(a) 或 p(a)
  • 8.28 函數指標選擇奇/偶數和:p = flag?oddsum:evensum 動態綁定
  • 8.29 函數指標作參數:result(n, oddsum) 回呼模式雛形
  • 8.30 成績統計系統:選單驅動、模組化(輸入/統計/排序/輸出)、指標傳遞多返回值
  • 8.31 陣列元素加 3:陣列名傳遞,函數修改原陣列
  • 8.32 插入排序字元:char 陣列排序,\0 結尾形成字串
  • 8.33 進制轉換器:選單驅動、多進制互轉、輸入錯誤自動糾正
  • 8.34 絕對質數:質數判定 + 位數交換驗證,兩位數全部列舉

核心心法總結

  1. 函數 = 封裝 + 介面 + 契約:輸入型別、輸出型別、副作用(修改全域/指向記憶體)
  2. 值傳遞 vs 指標傳遞:預設值傳遞;需修改實參、傳大型結構、傳陣列 → 用指標
  3. 遞迴三要素:基礎情況、遞迴呼叫、縮小問題規模
  4. 函數指標 = 運行時多態:策略模式、回呼、狀態機的 C 語言實現基石
  5. 模組化原則:單一職責、低耦合、高內聚、.h 宣告 .c 實作

熟練掌握此 33 例,即具備「函數式思維、模組化架構、指標進階運用」三大 C 語言核心竅門。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
例題知識點關鍵語法
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 跨檔案共用全域變數多檔案專案