C語言中條件判斷的正確使用姿勢
前言
在C語言中,有三種條件判斷結(jié)構(gòu):if語句、if-else語句和switch語句。

一、if語句
基本語法
if (條件) {
// 代碼塊1
}
代碼示例
#include <stdio.h>
int main()
{
int num = 5;
if (num > 0) {
printf("這個數(shù)為正數(shù).\n");
}
return 0;
}
運(yùn)行結(jié)果

二、if-else語句
基本語法
if (條件) {
// 代碼塊1
} else {
// 代碼塊2
}
代碼示例
#include <stdio.h>
int main()
{
int num = -2;
if (num > 0) {
printf("這個數(shù)為正數(shù).\n");
} else {
printf("這個數(shù)為負(fù)數(shù).\n");
}
return 0;
}
運(yùn)行結(jié)果

if語句嵌套使用
代碼示例
#include <stdio.h>
int main() {
int num = 3;
if (num > 0) {
if (num < 5) {
printf("num在1到4之間\n");
} else {
printf("num大于等于5\n");
}
} else {
printf("num小于等于0\n");
}
return 0;
}
在這個示例中,外層的if語句判斷num是否大于0,如果成立,進(jìn)入內(nèi)層的if語句繼續(xù)判斷num是否小于5;
如果不成立,執(zhí)行else語句塊,輸出"num小于等于0"。
num的值是3,它既符合外層if語句的條件,也符合內(nèi)層if語句的條件,所以程序輸出"num在1到4之間"。
運(yùn)行結(jié)果

if else語句的鏈?zhǔn)绞褂?/h3>
代碼示例
#include <stdio.h>
int main() {
int score = 85;
if (score >= 90) {
printf("優(yōu)秀\n");
} else if (score >= 80) {
printf("良好\n");
} else if (score >= 70) {
printf("中等\n");
} else if (score >= 60) {
printf("及格\n");
} else {
printf("不及格\n");
}
return 0;
}
在這個示例中,if else語句被鏈?zhǔn)绞褂?,程序從上到下依次判斷score的值是否大于等于90、是否大于等于80、是否大于等于70、是否大于等于60,最終輸出對應(yīng)的成績等級。
score的值是85,它大于等于80,但小于90,所以程序輸出"良好"。
運(yùn)行結(jié)果

三、switch語句
基本語法
switch (expression) {
case constant1:
statement1;
break;
case constant2:
statement2;
break;
...
default:
statementN;
break;
}switch語句的執(zhí)行過程如下:
- 表達(dá)式的值被計(jì)算。
- 表達(dá)式的值被依次與各個case后的常量進(jìn)行比較,直到找到與之匹配的常量。
- 如果找到匹配的常量,執(zhí)行該常量對應(yīng)的代碼塊,并跳出switch語句。
- 如果沒有找到匹配的常量,執(zhí)行default對應(yīng)的代碼塊(如果有),并跳出switch語句。
switch語句中的case標(biāo)簽可以是整數(shù)、字符或枚舉常量。
每個case標(biāo)簽必須是唯一的,且必須以冒號(:)結(jié)尾。
在case后面的代碼塊中可以包含任意數(shù)量的語句,用花括號({})來組成代碼塊。
switch語句的default標(biāo)簽是可選的,它通常放在case標(biāo)簽的最后面。如果沒有匹配到任何case標(biāo)簽,那么default標(biāo)簽下的代碼塊將被執(zhí)行。
default標(biāo)簽只能出現(xiàn)一次,且必須放在最后一個case標(biāo)簽之后,否則會引發(fā)編譯錯誤。
switch基礎(chǔ)用法
下面是一個簡單的switch語句示例,用于根據(jù)輸入的數(shù)字輸出對應(yīng)的星期幾:
#include <stdio.h>
int main()
{
int day;
printf("請輸入數(shù)字(1-7):");
scanf("%d", &day);
switch (day) {
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期日\n");
break;
default:
printf("輸入錯誤!\n");
break;
}
return 0;
}
運(yùn)行結(jié)果

switch高級用法
除了基本用法外,switch語句還有一些高級用法,可以更靈活地使用。
1、case標(biāo)簽穿透
在switch語句中,如果沒有在一個case語句塊中使用break語句,那么程序會從這個case開始,一直執(zhí)行到switch語句的結(jié)尾,這種現(xiàn)象被稱為case標(biāo)簽穿透。
下面是一個case標(biāo)簽穿透的示例:
#include <stdio.h>
int main() {
int num = 3;
switch (num) {
case 1:
case 2:
printf("num是1或2\n");
break;
case 3:
case 4:
printf("num是3或4\n");
break;
default:
printf("num不是1、2、3、4\n");
break;
}
return 0;
}
在這個示例中,num的值是3,它既符合case 3的條件,也符合case 4的條件,但是由于case 3的語句塊中使用了break語句,所以程序執(zhí)行完case 3之后就跳出了switch語句,不會繼續(xù)執(zhí)行case 4的語句塊。
運(yùn)行結(jié)果

2、switch語句嵌套
在C語言中,switch語句可以嵌套使用,例如:
#include <stdio.h>
int main()
{
int num = 1;
switch (num) {
case 1:
printf("num是1\n");
switch (num) {
case 2:
printf("num是2\n");
break;
default:
printf("num不是2\n");
break;
}
break;
case 3:
printf("num是3\n");
break;
default:
printf("num既不是1也不是3\n");
break;
}
return 0;
}
在這個示例中,switch語句被嵌套使用,內(nèi)層的switch語句只有在外層的case 1被匹配時才會執(zhí)行。
運(yùn)行結(jié)果

到此這篇關(guān)于C語言中條件判斷的正確使用姿勢的文章就介紹到這了,更多相關(guān)C語言條件判斷內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言單鏈表實(shí)現(xiàn)多項(xiàng)式相加
這篇文章主要為大家詳細(xì)介紹了C語言單鏈表實(shí)現(xiàn)多項(xiàng)式相加,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10
c語言實(shí)現(xiàn)24小時制轉(zhuǎn)換為12小時制示例
這篇文章主要介紹了c語言實(shí)現(xiàn)24小時制轉(zhuǎn)換為12小時制示例,需要的朋友可以參考下2014-04-04
Qt音視頻開發(fā)之音頻播放QAudioOutput的實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了如何利用Qt實(shí)現(xiàn)音頻播放QAudioOutput功能,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Qt開發(fā)有一定的幫助,需要的可以參考一下2023-03-03

