C語言位運算技巧:不使用加法/除法求兩數平均值 (避免溢位)
問題 (a+b)/2 若 a,b 為大整數,a+b 可能溢位 (有號 UB,無號環繞)。 方法一:右移 1 位 (無號/正數適用) 1) + (a & 1
C語言猴子吃桃遞迴/迭代實作:逆向推導第1天摘多少桃
遞迴關係 第 n 天早上剩 x_n,前一天 x_{n-1} = 2*(x_n + 1)。 第 10 天 x_{10} = 1。 迭代實作 (推薦) 1534
C語言物理模擬:自由落體彈跳球總路程與第n次彈高計算
物理模型 高度 H,彈性係數 k=0.5 (彈回一半)。 第 1 次落地:路程 H 第 i 次彈起:高度 H * k^i 第 i+1 次落地:增加路程 2 *
C語言運動員跳水名次邏輯謎題:五重迴圈窮舉與位掩碼去重
題目 5 選手 A~E 預測名次,每人說對一半。找真實名次。 A: B第1, 我第3 B: 我第2, E第4 C: 我第1, D第2 D: C最後(第5),
C語言邏輯謎題:誰殺了比爾? (布林代數求解)
題目 四嫌疑人供詞: A: 不是我 B: 是 C C: 是 D D: C 在胡說 已知 3 人說真話,1 人說謊。找兇手。 布林建模 設兇手為 k ∈ {
C語言字串逆序四種方法:雙指針交換、遞迴棧、遞迴交換、標準庫
方法一:雙指針原地交換 (最優、迭代) char *reverse(char *s) { if (!s) return NULL; char *
C語言手寫 strstr 子字串查找:雙指針匹配與回溯邏輯
標準語義 在 haystack 中找 needle 首次出現位置,找到返回指針,否則 NULL。 手寫實作 (暴力匹配 O(n*m)) #include c
C語言字串長度 strlen 手寫實作:指針迭代版與遞迴版
方法一:指針迭代 (標準、高效) #include size_t my_strlen(const char *s) { assert(s);
C語言模擬 C++ 繼承與多態:VTable 函數指針表、基類/派生類交叉引用
核心思想 C 無原生類/繼承/多態,但可用 **結構體 + 函數指針 + 手動 VTable** 模擬。 基類 Person last_name); free
C語言可變參數列表 實作:va_list、va_start、va_arg、va_end 完整教學
核心 API (<stdarg.h>) va_list ap;:參數列表游標。 va_start(ap, last_fixed_param);:初
C語言手寫標準庫:memmove 支援重疊記憶體複製實作
memmove vs memcpy 關鍵差異 memmove 保證重疊來源/目的區域正確複製,內部自動選擇複製方向。 正確手寫實作 #include #in
C語言手寫標準庫:memcpy 逐位元組複製實作與測試
標準 memcpy 語義 複製 n 位元組從 src 到 dest。 **行為未定義** 若記憶體區域重疊。 回傳 dest。 正確手寫實作 #inclu
C語言經典遞迴/迴圈練習:猴子吃桃、彈跳球、分數級數、費波那契分數
1. 猴子吃桃 (逆向推導) 第 10 天早剩 1 個。第 n 天早剩 x_n,則第 n-1 天早 x_{n-1} = 2*(x_n + 1)。 1534
C語言階乘級數求和:1/1! + 1/2! + ... + 1/20! (e-1 逼近)
數學背景 e = Σ_{n=0}^∞ 1/n! = 1 + 1/1! + 1/2! + ...,故級數和趨近 e - 1 ≈ 1.718281828。 遞推關
C語言 Visual Studio 命令列編譯完整指南:cl.exe、環境變數、常用選項
VS 構建工具鏈 cl.exe:編譯器 (C/C++) link.exe:連結器 lib.exe:靜態庫管理 nmake.exe:Makefile 構建 路
C語言字串操作實戰:strcpy、strncpy、memcpy、memmove 四大複製函數差異與陷阱
四大複製函數對比 函數原型複製單位結束條件重疊處理補 \0 strcpychar* strcpy(char* dest, const char* src)字元
C語言巨集與函數差異深度解析:代碼長度、速度、優先級、求值、類型
五大核心差異對照 維度巨集 (#define)函數 代碼長度預處理展開,每次調用複製代碼 → 目標檔變大僅一份代碼,調用跳轉 → 體積小 執行速度無呼叫開銷