語句按撰寫順序自上而下執行,無分支、無跳轉。
#include <stdio.h>
int main(void) {
int base, height, area;
printf("輸入底: "); scanf("%d", &base);
printf("輸入高: "); scanf("%d", &height);
area = base * height / 2;
printf("面積 = %d\n", area);
return 0;
}
if 單一分支if (age > 18)
printf("成年\n");
if-else 雙分支if (score >= 60)
printf("及格\n");
else
printf("不及格\n");
if-else if-else (鏈式)if (score >= 90) grade = 'A';
else if (score >= 80) grade = 'B';
else if (score >= 70) grade = 'C';
else if (score >= 60) grade = 'D';
else grade = 'F';
ifif (x > 0) {
if (y > 0) quadrant = 1;
else quadrant = 4;
} else {
if (y > 0) quadrant = 2;
else quadrant = 3;
}
switch-case 多路分支switch (month) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
days = 31; break;
case 4: case 6: case 9: case 11:
days = 30; break;
case 2:
days = (leap_year) ? 29 : 28; break;
default:
days = -1; // 錯誤
}
注意:每個 case 末尾需 break,否則會「貫穿」執行下一個 case。
while 先判斷後執行 (當型)int sum = 0, i = 1;
while (i <= 100) {
sum += i;
++i;
}
do-while 先執行後判斷 (直到型)int sum = 0, i = 1;
do {
sum += i;
++i;
} while (i <= 100); // 注意分號
for 計數迴圈int sum = 0;
for (int i = 1; i <= 100; ++i)
sum += i;
// 三部份皆可省略:for(;;) 為無限迴圈
| 特性 | while | do-while | for |
|---|---|---|---|
| 判斷時機 | 迴圈前 | 迴圈後 | 迴圈前 |
| 至少執行一次 | 否 | 是 | 否 |
| 適用場景 | 次數未知 | 菜單、輸入驗證 | 次數已知 |
int rows, cols;
scanf("%d %d", &rows, &cols);
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j)
putchar('*');
putchar('\n');
}
break:立即離開**最內層**迴圈或 switchcontinue:跳過本次迭代剩餘部分,直接進入下一次判斷goto:無條件跳轉 (慎用,易產生義大利麵程式碼)for 處理已知次數迴圈,語意最清晰ifswitch 處理枚舉/整數多值分支,別忘了 default