個人主頁:strive-debug
在 C 語言中,分支結構可以通過 `if`、`switch` 語句來實現,循環結構則可以通過 `for`、`while`、`do while` 語句來實現。
`if` 語句
`if` 語句的語法形式如下:
if (表達式)語句;
如果表達式成立(為真),則執行語句;如果表達式不成立(為假),則不執行語句。在 C 語言中,0 表示假,非0 表示真。因此,如果表達式的結果是0,則語句不執行;如果表達式的結果不是0,則語句執行。
代碼演示:
#include <stdio.h>
int main()
{int num = 0;scanf("%d", &num);if(num % 2 == 1)printf("%d 是奇數\n", num);return 0;
}
如果一個數不是奇數,那就是偶數了。為了清楚地判斷一個整數是奇數還是偶數,可以使用 `if...else...` 語句。語法形式如下:
?
if (表達式)語句1;
else語句2;
?例子
輸入一個整數,判斷是否為奇數,如果是奇數打印“是奇數”,否則打印“偶數”。
#include <stdio.h>
int main()
{int num = 0;scanf("%d", &num);if(num % 2 == 1)printf("%d 是奇數
", num);elseprintf("%d 是偶數
", num);return 0;
}
分支中包含多條語句
默認情況下,`if` 和 `else` 語句中只控制一條語句。例如:
#include <stdio.h>
int main()
{int age = 0;scanf("%d", &age);if(age >= 80){printf("該入土了
");printf("可以等著了
");}else{printf("你還有時間
");}return 0;
}
嵌套 `if`
在 `if...else` 語句中,`else` 可以與另一個 `if` 語句連用,構成多重判斷。例如:輸入一個整數,判斷輸入的整數是0,正數還是負數。
#include <stdio.h>
int main()
{int num = 0;scanf("%d", &num);if(num == 0)printf("輸入的數字是0
");else if(num > 0) // 這里的 if 相當于嵌套在 else 語句中,形成了嵌套結構printf("輸入的數字是正數
");elseprintf("輸入的數字是負數
");return 0;
}
有了嵌套 `if` 語句,就可以完成更多復雜邏輯的判斷。
?懸空 `else` 問題
如果有多個 `if` 和 `else`,記住這樣一條規則:`else` 總是跟最接近的 `if` 匹配。例如:
#include <stdio.h>
int main()
{int num = 0;scanf("%d", &num);if(num == 0)printf("輸入的數字是0
");else if(num > 0) // 這里的 if 相當于嵌套在 else 語句中,形成了嵌套結構printf("輸入的數字是正數
");elseprintf("輸入的數字是負數
");return 0;
}
通過適當的大括號,可以讓代碼的邏輯更加清晰,提高可讀性。
?`switch` 語句
`switch` 語句根據表達式的值使程序跳轉到不同的代碼段去執行。其語法形式如下:
switch (表達式)
{case 常量1:語句1;break;case 常量2:語句2;break;// ...default:語句n;break;
}
輸入任意一個整數值,計算除3之后的余數
使用 `if` 語句完成:
#include <stdio.h>
int main()
{int n = 0;scanf("%d", &n);if(n % 3 == 0)printf("整除,余數為0
");else if(n % 3 == 1)printf("余數是1
");elseprintf("余數是2
");return 0;
}
使用 `switch` 語句改寫:
#include <stdio.h>
int main()
{int n = 0;scanf("%d", &n);switch(n % 3){case 0:printf("整除,余數為0
");?break;case 1:printf("余數是1
");?break;case 2:printf("余數是2
");?break;}return 0;
}
注意事項:
1. `case` 和后邊的數字之間必須有空格。
2. 每一個 `case` 語句中的代碼執行完成后,需要加上 `break`,才能跳出這個 `switch` 語句。