C 語言三大程序結構
- 順序結構:自上而下執行
- 選擇結構:if-else、switch、條件運算符
- 循環結構:重複執行代碼塊(本節重點)
while 循環
while (表達式) {
語句塊
}
執行流程
- 計算表達式值
- 真(非0) → 執行語句塊 → 回第1步
- 假(0) → 跳出循環,執行後續代碼
示例:1+2+...+100
int i = 1, sum = 0;
while (i <= 100) {
sum += i;
i++;
}
printf("%d\n", sum); // 5050
逐步分析
- i=1 滿足條件 → 執行體 → i=2, sum=1
- i=2 滿足 → 執行體 → i=3, sum=3
- ...第100次後 i=101, sum=5050
- i=101 不滿足 → 退出
while 循環核心模式
初始化循環變量
while (含變量的條件) {
循環體
修改循環變量(趨於結束)
}
死循環與零次循環
| 情況 | 代碼 | 行為 |
| 死循環 | while(1) { printf("1"); } | 無限輸出 1,需強制終止 |
| 零次循環 | while(0) { printf("1"); } | 一次不執行,無輸出 |
實戰:統計輸入行字符數
int n = 0;
printf("Input a string: ");
while (getchar() != '\n') n++;
printf("Number of characters: %d\n", n);
輸入 c.biancheng.net → 輸出 15。條件 getchar()!='\n' 兼具讀取與判斷。
do-while 循環
do {
語句塊
} while (表達式); // 注意分號!
關鍵差異:至少執行一次
- 先執行語句塊,再判斷條件
- 適合「先做後判」場景(菜單、輸入驗證)
示例:1+...+100
int i = 1, sum = 0;
do {
sum += i;
i++;
} while (i <= 100);
printf("%d\n", sum); // 5050
while vs do-while 選擇指南