编程语言
Python、C、C++、Java、JavaScript、TypeScript、Go、R 与 Haskell 教程,从入门语法到高级技巧。
練習題與詳解 — 單元 07:陣列(Arrays)
本檔提供本單元練習題的完整詳解。先自己動手做:每題先只看「題目」, 寫完、編譯、執行後再對照「解題思路」與「參考解答」。 完整程式碼都在 exercises/ 資料夾,可直接編譯:
阅读文章 →單元 07:陣列(Arrays)
重點:: 陣列長度必須是編譯期已知的常數(C89 規則;C99 的 VLA 本教程先不使用)。 部分初始化時,剩餘元素保證補 0——這是 { 0 } 全清技巧的原理。 沒有初始化的區域陣列內容是垃圾值,跟普通變數一樣。
阅读文章 →練習題與詳解 — 單元 08:字元與字串基礎(Characters & Strings Basics)
本檔提供本單元練習題的完整詳解。先自己動手做:每題先只看「題目」, 寫完、編譯、執行後再對照「解題思路」與「參考解答」。 完整程式碼都在 exercises/ 資料夾,可直接編譯:
阅读文章 →單元 08:字元與字串基礎(Characters & Strings Basics)
char 存的是字元的編碼值。ASCII 是最通行的編碼:
阅读文章 →練習題與詳解 — 單元 09:基本輸入輸出(Basic I/O)
本檔提供本單元練習題的完整詳解。先自己動手做:每題先只看「題目」, 寫完、編譯、執行後再對照「解題思路」與「參考解答」。 完整程式碼都在 exercises/ 資料夾,可直接編譯:
阅读文章 →單元 09:基本輸入輸出(Basic I/O)
長度修飾:%ld(long)、%lld(long long)、%zu(size_t)、%hd(short)。
阅读文章 →練習題與詳解 — 01 指標基礎(Pointers Basics)
本檔收錄本單元的練習題、完整解題思路與參考解答。 強烈建議先自己動手做:看完題目就闔上這份檔案,寫出你的版本、編譯、執行、卡住了再回來看「解題思路」; 真的做完了,再對照「參考解答」與「程式碼講解」。每題的完整程式碼也放在 exercises/ 資料夾,可直接編譯:
阅读文章 →01 指標基礎(Pointers Basics)
指標(pointer)是 C 語言最核心、也最容易讓初學者卻步的主題。 它的本質其實很單純:指標就是一個「存放記憶體位址」的變數。 掌握指標之後,你才能真正理解陣列、字串、動態記憶體與函式間的資料傳遞。
阅读文章 →練習題與詳解 — 02 指標與陣列(Pointers and Arrays)
本檔收錄本單元的練習題、完整解題思路與參考解答。 強烈建議先自己動手做:看完題目就闔上這份檔案,寫出你的版本、編譯、執行、卡住了再回來看「解題思路」; 真的做完了,再對照「參考解答」與「程式碼講解」。每題的完整程式碼也放在 exercises/ 資料夾,可直接編譯:
阅读文章 →02 指標與陣列(Pointers and Arrays)
在 C 語言中,指標與陣列的關係密不可分:任何用陣列下標能寫的程式,都能用指標改寫。 K&R 甚至說,指標版本通常更快(在現代編譯器下兩者多半等價,但理解這層關係仍是讀懂 C 程式的關鍵)。
阅读文章 →練習題與詳解 — 03 多維陣列與指標陣列(Multi-dimensional Arrays & Arrays of Pointers)
本檔收錄本單元的練習題、完整解題思路與參考解答。 強烈建議先自己動手做:看完題目就闔上這份檔案,寫出你的版本、編譯、執行、卡住了再回來看「解題思路」; 真的做完了,再對照「參考解答」與「程式碼講解」。每題的完整程式碼也放在 exercises/ 資料夾,可直接編譯:
阅读文章 →03 多維陣列與指標陣列(Multi-dimensional Arrays & Arrays of Pointers)
二維陣列和「指標陣列」長得很像(都能寫 x[i][j]),底層卻是完全不同的兩種結構。 本單元釐清它們的記憶體佈局、傳入函式的正確寫法,並重現 K&R 的月份名稱經典範例。
阅读文章 →練習題與詳解 — 04 進階字串處理(Strings Advanced)
本檔收錄本單元的練習題、完整解題思路與參考解答。 強烈建議先自己動手做:看完題目就闔上這份檔案,寫出你的版本、編譯、執行、卡住了再回來看「解題思路」; 真的做完了,再對照「參考解答」與「程式碼講解」。每題的完整程式碼也放在 exercises/ 資料夾,可直接編譯:
阅读文章 →04 進階字串處理(Strings Advanced)
C 沒有內建字串型別——字串只是「以 '\0' 結尾的字元陣列」。 標準函式庫 <string.h> 與 <ctype.h> 提供了操作字串的工具箱, 但也埋著緩衝區溢位等安全地雷。本單元完整導覽這些函式,並自己動手實作幾個經典函式。
阅读文章 →練習題與詳解 — 05 結構(Structures)
本檔收錄本單元的練習題、完整解題思路與參考解答。 強烈建議先自己動手做:看完題目就闔上這份檔案,寫出你的版本、編譯、執行、卡住了再回來看「解題思路」; 真的做完了,再對照「參考解答」與「程式碼講解」。每題的完整程式碼也放在 exercises/ 資料夾,可直接編譯:
阅读文章 →05 結構(Structures)
結構(struct)讓你把「相關的資料」打包成一個單位——例如一個點的 x、y 座標, 一個員工的姓名、編號與薪水。結構是 C 建構資料抽象的基石, 之後的鏈結串列、樹、以及幾乎所有真實世界的 C 程式都建立在它之上。
阅读文章 →練習題與詳解 — 06 typedef、enum、union 與位元欄位
本檔收錄本單元的練習題、完整解題思路與參考解答。 強烈建議先自己動手做:看完題目就闔上這份檔案,寫出你的版本、編譯、執行、卡住了再回來看「解題思路」; 真的做完了,再對照「參考解答」與「程式碼講解」。每題的完整程式碼也放在 exercises/ 資料夾,可直接編譯:
阅读文章 →06 typedef、enum、union 與位元欄位
本單元收齊 C 型別系統的幾件「特殊武器」: typedef 幫型別取別名、enum 定義一組具名常數、 union 讓多個成員共用同一塊記憶體、位元欄位(bit-field)以位元為單位切割儲存空間。 最後介紹把 enum 與 union 結合的 tagged union 模式——C 語言表達「多型資料」的標準手法。
阅读文章 →練習題與詳解 — 07 動態記憶體管理(Dynamic Memory)
本檔收錄本單元的練習題、完整解題思路與參考解答。 強烈建議先自己動手做:看完題目就闔上這份檔案,寫出你的版本、編譯、執行、卡住了再回來看「解題思路」; 真的做完了,再對照「參考解答」與「程式碼講解」。每題的完整程式碼也放在 exercises/ 資料夾,可直接編譯:
阅读文章 →07 動態記憶體管理(Dynamic Memory)
到目前為止,所有變數的大小都在編譯期決定。但真實程式常常要到執行期才知道需要多少空間 ——使用者會輸入幾筆資料?檔案有多大?這就需要動態記憶體:向系統的堆積(heap)要空間, 用完再親手還回去。「親手」二字正是 C 的力量與危險所在。
阅读文章 →練習題與詳解 — 08 遞迴(Recursion)
本檔收錄本單元的練習題、完整解題思路與參考解答。 強烈建議先自己動手做:看完題目就闔上這份檔案,寫出你的版本、編譯、執行、卡住了再回來看「解題思路」; 真的做完了,再對照「參考解答」與「程式碼講解」。每題的完整程式碼也放在 exercises/ 資料夾,可直接編譯:
阅读文章 →08 遞迴(Recursion)
遞迴是「函式呼叫自己」的技巧。聽起來像無窮迴圈,但只要每次呼叫都讓問題變小、 並在夠小時直接給出答案,遞迴就會優雅地收斂。許多問題(樹的走訪、分治演算法、河內塔) 用遞迴表達比迭代自然得多。
阅读文章 →練習題與詳解 — 09 作用域與儲存類別(Scope & Storage Classes)
本檔收錄本單元的練習題、完整解題思路與參考解答。 強烈建議先自己動手做:看完題目就闔上這份檔案,寫出你的版本、編譯、執行、卡住了再回來看「解題思路」; 真的做完了,再對照「參考解答」與「程式碼講解」。每題的完整程式碼也放在 exercises/ 資料夾,可直接編譯:
阅读文章 →09 作用域與儲存類別(Scope & Storage Classes)
程式一大,「誰看得到這個變數?它活多久?」就成了核心問題。 本單元整理 C 的作用域規則與儲存類別(auto、static、extern、register), 並說明多檔案專案的組織方式——標頭檔、include guard、以及 static 作為「檔案私有」的封裝工具。
阅读文章 →