| 類型 | printf | scanf | 說明 |
| int | %d | %d | |
| short | %hd | %hd | |
| long | %ld | %ld | |
| float | %f | %f | |
| double | %f / %lf | %lf | scanf 必須 %lf |
| char | %c | %c | |
| string | %s | %s | scanf 遇空白停止 |
格式控制:%5d 右對齊寬度 5、%-5d 左對齊、%05d 補零、%6.2f 共 6 位含小數點保留 2 位小數。
scanf 不要加非格式字符(如 "num=%d"),需用戶精確匹配輸入。
6. 控制流:分支與循環
if-else 三種形式
if (cond) { ... }
if (cond) { ... } else { ... }
if (cond1) { ... } else if (cond2) { ... } else { ... }
switch-case
- 表達式必須整型
- 每個 case 以
break 結束,否則貫穿執行
default 處理無匹配情況
三元運算符
max = a > b ? a : b;
循環對比
| 循環 | 特點 | 適用場景 |
| while | 先判後執,可能零次 | 次數未知、條件複雜 |
| do-while | 先執後判,至少一次 | 菜單交互、至少一次處理 |
| for | 初始化/條件/增量集中 | 計數循環、數組遍歷 |
break 跳出整個循環,continue 跳過本次進入下一次。for 循環變量作用域僅限循環內(C99),比 while 更節省內存。
7. 數組操作核心
- 定義:
int a[10] = {0}; 未列出元素自動為 0
- 下標從 0 起,越界不報錯但極其危險(覆蓋其他變量、返回地址)
- 數組名退化為首元素指針,不可整體賦值/比較
- 冒泡排序教學用,實際用
qsort 或歸併/快速排序
- 字符數組:
char s[] = "abc"; 自動添加 \0,長度 +1,%s 遇 \0 停止
8. 函數與遞歸
- 聲明在前,定義在後,或置於頭文件
- 參數傳值(複製),需修改實參傳指針
- 遞歸必須有基例(終止條件),每層縮小問題規模
- 經典遞歸:階乘、斐波那契、漢諾塔、二分查找、樹遍歷
總結
C 語言基礎看似簡單,實則細節決定質量:進制轉換無誤、類型選擇精確、運算符副作用清晰、格式串嚴格匹配、邊界條件全覆蓋、內存越界零容忍。建立「編譯無警告、運行無崩潰、邏輯無漏洞」的代碼潔癖,是從寫代碼到工程師的必經之路。
- 上一篇文章: Codeforces 55D Beautiful Numbers:數位 DP + LCM 狀態壓縮求區間美麗數個數
- 下一篇文章: C語言動態記憶體分配完全指南:malloc、calloc、realloc 與記憶體操作函數詳解
Copyright ©
程式碼之家 All Rights Reserved