C 語言位運算面試題:統計兩數二進制不同位數(模除法 vs 移位法)
方法一:逐位模除法 int diffBits(int m, int n) { int cnt = 0; for (int i = 0; i <
C 語言指針實現 strcpy:鏈式拷貝、斷言防禦、返回值設計
標準庫 strcpy 行為 將 src 指向的字符串(含 \0)拷貝到 dest; 返回 dest 原始值,支持鏈式調用; 行為未定義:dest 空間不足、重
C 語言靜態順序表完整實現:固定容量、增刪改查、去重
結構定義 #define MAX_SIZE 5 typedef int DataType; typedef struct { DataType data
C 語言變量聲明細節:多變量鏈式聲明、const/volatile 修飾符、編譯器優化陷阱
多變量聲明等價展開 int i, j, k = 0; // 等價於 int i = 0, j = 0, k = 0; // 注意:只有 k 顯式初始化,i/j
C 語言獲取文件大小並完整讀取:fseek/ftell/malloc/fread 標準流程
標準流程 fopen(..., rb) 二進制打開; fseek(fp, 0, SEEK_END) 移至文件末尾; ftell(fp) 獲取位置即文件大小;
C 語言位運算實戰:右移 >> 與按位與 & 統計 1 的個數對比
右移法(算術/邏輯右移區別) = 1; } 無符號數:邏輯右移,高位補 0; 1 仍為 -1)。統計 1 的個數必須用無符號類型。 按位與法(Bria
C 語言整數轉字符串:手寫 itoa 算法(逆序取模法)
算法邏輯 處理負數:記號、取絕對值; 循環取模 10 得到各位數字(低位在前); 存入字符數組; 逆序輸出或反轉數組。 代碼實現 #include <
C 語言求素數三種寫法:雙循環、優化至 √n、布爾標記法
需求 輸出 100~200 之間所有素數。 方法一:雙層循環(教學基礎版) for (int i = 100; i <= 200; ++i) { in
從零手寫 C 編譯器:最小可行編譯器婴儿步驟實戰
核心理念 參考 Abdulaziz Ghuloum 論文《一種構造編譯器的捷徑》:先做最小可用編譯器,再逐步擴展。不必一次性構建完整前端,從能編譯 int ma
C 語言交換兩變量值的四種方法:臨時變量、異或、加減法、標準庫
方法一:臨時變量(最通用、可讀性最好) int t = a; a = b; b = t; // 或封裝為函數 void swap(int *a, int *b)