C語言入門篇--學(xué)習(xí)選擇,if,switch語句以及代碼塊
1.什么是語句
語句:C語言中由一個(gè) ; 隔開的就是一條語句。
例如:
int a = 10;
printf("haha\n");
10;
'A';
; //空語句,啥都不執(zhí)行
2.選擇語句(分支語句)
2.1if語句&注意事項(xiàng)

2.1.1語法結(jié)構(gòu)
(1)
if (表達(dá)式)
{
代碼塊;
}
(2)
//二選一
if (表達(dá)式)
{
代碼塊1;//表達(dá)式為真
}
else
{
代碼塊2;//表達(dá)式為假
}
(3)
//多分支 多選一
if (表達(dá)式1)
{
代碼塊1;
}
else if (表達(dá)式2)
{
代碼塊2;
}
else
{
代碼塊3;
}
說明:
- 1.if語句是選擇分支語句,只要滿足一個(gè)條件則其他語句就不執(zhí)行了。
- 2.if后( )判斷的是( )中表達(dá)式返回的結(jié)果。在C語言中,0為假,非0為真。
- 3.條件判斷為防止誤寫為if (flag=6),可寫成 if (6==flag)。
- 4.一個(gè){ }就是一個(gè)代碼塊,盡量使用{ },使邏輯更加清楚,以示其是完整的代碼塊,不容易出錯(cuò)。否則可能會(huì)出現(xiàn)編譯不通過或輸出結(jié)果錯(cuò)誤的情況。
如:
(1)編譯不通過
//error,編譯不通過
int main()
{
if (a > 10)
i++;
j++;//error,編譯不通過
else
j++;
return 0;
}
//推薦寫法,帶全{ }
int main()
{
if (a > 10)
{
i++;
j++
}
else
{
j++;
}
return 0;
}
(2)懸空else問題
//未加全{ },出現(xiàn)懸空else
int main()
{
int a = 0;
int b = 2;
if (1 == a)
if (2 == b)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
輸出:

//推薦寫法,加全{ }
int main()
{
int a = 0;
int b = 2;
if (1 == a)
{
if (2 == b)
{
printf("hehe\n");
}
}
else
{
printf("haha\n");
}
return 0;
}
輸出:

(3).if語句多分支例子:
int main()
{
int age = 0;
scanf("%d", &age);
if (age<18)
{
printf("少年\n");
}
else if (age >= 18 && age<30)
{
printf("青年\n");
}
else if (age >= 30 && age<50)
{
printf("中年\n");
}
else if (age >= 50 && age<80)
{
printf("老年\n");
}
else
{
printf("長命百歲\n");
}
system("pause");
return 0;
}
2.1.2懸空else
#include <stdio.h>
int main()
{
int a = 1;
int b = 2;
if(a == 1)
if(b == 2)
printf("hehe\n");
else//懸空else
printf("haha\n");
return 0;
}
輸出:hehe
說明:
- 1.此處的else即為懸空else。
- 2.if else 語句嵌套時(shí),else采取就近原則匹配最近的if。
- 3.寫代碼時(shí)盡量把{ }帶上,避免懸空else的出現(xiàn),導(dǎo)致輸出結(jié)果錯(cuò)誤,例子詳見 2.1.1 (2)懸空else問題。
2.2switch語句&注意事項(xiàng)
2.2.1語法結(jié)構(gòu)
//switch語句是C語言中經(jīng)典多分支語句
switch (整型表達(dá)式)
{
case 常量表達(dá)式1:
語句;
case 常量表達(dá)式2:
語句;
...
case 常量表達(dá)式n:
default:
語句;
}
說明:
- 1.switch語句是匹配跳轉(zhuǎn),case只有判斷功能,無分支功能;
case匹配到哪個(gè)位置就跳轉(zhuǎn)到哪個(gè)位置,從匹配位置開始往后執(zhí)行;
case語句加break后則可實(shí)現(xiàn)分支。
- 2.整型表達(dá)式包含 int,char,long long,short 類型, int a=10; a>10;(1+2);等表達(dá)式。
- 3.常量表達(dá)式如97、'7'等。
2.2.2switch語句中的break
作用:在switch語句中break語句可以實(shí)現(xiàn)分支作用。
例子:
(1)無break
switch (3)
{
case 1:
printf("星期一\n");
case 2:
printf("星期二\n");
case 3:
printf("星期三\n");
case 4:
printf("星期四\n");
case 5:
printf("星期五\n");
case 6:
printf("星期六\n");
case 7:
printf("星期天\n");
}
輸出:

(2)有break
switch (3)
{
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;
}
輸出:

(3)需求改變
int main()
{
int day = 3;
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("weekday\n");
break;
case 6:
case 7:
printf("weekday\n");
break;
}
}
輸出:

2.2.3switch語句中的default語句
作用:當(dāng)表達(dá)式的值與case都不匹配時(shí),則執(zhí)行default的語句。
說明:
- 1.default語句可以出現(xiàn)在任何一個(gè)case語句出現(xiàn)的地方。
- 2.switch后表達(dá)式的值與case都不匹配時(shí),不管default的語句在switch里的哪一個(gè)位置,都執(zhí)行default的語句,一個(gè)switch語句中只可出現(xiàn)一個(gè)default。
- 3.default語句可以不寫,但做為一種良好的編程習(xí)慣,可以在case語句中加上default,并且在其后加上break。
eg:
(1)default在最后
int main()
{
switch ('r')
{
case 'w':
printf("工作日\n");
break;
case 'r':
printf("休息日\n");
break;
case's':
printf("加班日\n");
default:
printf("輸入有誤\n");
break;
}
return 0;
}
輸出:

(2)default在中間
int main()
{
switch ('r')
{
case 'w':
printf("工作日\n");
break;
default:
printf("輸入有誤\n");
break;
case 'r':
printf("休息日\n");
break;
case's':
printf("加班日\n");
break;
}
return 0;
}
輸出:

(3)case未匹配到,執(zhí)行default語句
int main()
{
switch ('N')
{
case 'w':
printf("工作日\n");
break;
default:
printf("輸入有誤\n");
break;
case 'r':
printf("休息日\n");
break;
case's':
printf("加班日\n");
break;
}
return 0;
}
輸出:

2.2.4switch語句的嵌套
例子:(可以自己嘗試做一下輸出結(jié)果)
int main()
{
int n = 1;
int m = 2;
switch (n)
{
case 1:
m++;
case 2:
n++;
case 3:
switch (n)
{
case 1:
n++;
case 2:
m++;
n++;
break;
}
case 4:
m++;
break;
default:
break;
}
printf("m = %d, n = %d\n", m, n);
return 0;
}
輸出:

說明:
- 1.switch語句支持嵌套使用。
- 2.當(dāng)前套使用時(shí),switch語句中的break僅是跳出離其最近的switch語句。
3.代碼塊
1.一個(gè){ }就是一個(gè)代碼塊。
2.凡是在代碼塊里定義的變量叫做臨時(shí)變量,函數(shù)也是代碼塊,因?yàn)楹瘮?shù)也用{ }括起來了。
3.凡是在代碼中定義的變量都叫局部變量,只在本代碼塊內(nèi)有效。
(1)error
int main()
{
int flag = 6;
if (6 == flag)
{
int x = 10;//x在本代碼塊{}內(nèi)定義,出了本代碼塊后x無效
}
printf("%d\n", x);//x在其他代碼塊中不可使用
return 0;
}
輸出:

(2)編譯通過
int main()
{
int flag = 6;
if (6 == flag)
{
int x = 10;
printf("%d\n", x);//x在本代碼塊{}內(nèi)定義,出了本代碼塊后x無效
}
int x = 20;//可以在其他代碼塊定義一個(gè)同名的變量
printf("%d\n", x);
return 0;
}
輸出:

以上就是C語言入門篇--學(xué)習(xí)選擇,if,switch語句以及代碼塊的詳細(xì)內(nèi)容,更多關(guān)于C語言的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
c語言實(shí)現(xiàn)通訊錄管理系統(tǒng)詳細(xì)實(shí)例
這篇文章主要給大家介紹了關(guān)于c語言實(shí)現(xiàn)通訊錄管理系統(tǒng)的相關(guān)資料,通訊錄管理系統(tǒng)是一種常見的應(yīng)用程序,可以用來管理聯(lián)系人的信息,包括姓名、電話號碼、地址等,需要的朋友可以參考下2023-07-07
VC6實(shí)現(xiàn)激活后臺(tái)窗口最佳方法
C/C++實(shí)現(xiàn)控制臺(tái)輸出不同顏色字體的方法
使用?C++20?Modules?導(dǎo)入?Boost?模塊的方法(問題記錄)
C語言遞歸應(yīng)用實(shí)現(xiàn)掃雷游戲

