我們大家都知道,c語(yǔ)言是一門** 結(jié)構(gòu)化 **的程序設(shè)計(jì)語(yǔ)言,程序的運(yùn)行都是以某種結(jié)構(gòu)和順序?yàn)楣羌苋?zhí)行的,那么本期就向大家介紹一下c語(yǔ)言的幾種結(jié)構(gòu)。
本期主要介紹分支與循環(huán)語(yǔ)句
1.什么是語(yǔ)句
2.if語(yǔ)句
3.switch語(yǔ)句
- 什么是語(yǔ)句
c語(yǔ)言中用一個(gè)分號(hào) ;隔開的就是一條語(yǔ)句。例如:
int main()
{
int a=0;//語(yǔ)句由分號(hào)隔開,一條語(yǔ)句由分號(hào)表示結(jié)束
printf ("%d\\n" , a);
; //這也是一種語(yǔ)句
return 0;
}
一個(gè)程序基本的組成單位就是語(yǔ)句,值得一提的是 即使一個(gè)語(yǔ)句中只有一個(gè)分號(hào)(如上所示),它也是一條正確的語(yǔ)句,我們后面會(huì)有特殊的用法。
- 分支語(yǔ)句
如上圖,我們?cè)?a href="http://ttokpm.com/v/tag/1315/" target="_blank">編程中常會(huì)遇到上述的結(jié)構(gòu),它們含有兩個(gè)或多個(gè)分支,如果想準(zhǔn)確表達(dá)上圖所表示的意思,我們就要使用分支語(yǔ)句,其中包含if語(yǔ)句和switch語(yǔ)句。
- lf語(yǔ)句
if語(yǔ)句的語(yǔ)法結(jié)構(gòu)
if(表達(dá)式){
?? 語(yǔ)句;
}
if(表達(dá)式){
??語(yǔ)句1;
}
else
{
??語(yǔ)句2;
}
//多分支
if(表達(dá)式1){
??語(yǔ)句1
}
else if(表達(dá)式2){
??語(yǔ)句2;
}
else {
??語(yǔ)句3;
}
以上三種結(jié)構(gòu)幾乎可用于一切的分支情況。
-
if語(yǔ)句如何執(zhí)行
對(duì)于這種結(jié)構(gòu)的分支語(yǔ)句來說:
if(表達(dá)式){
?? 語(yǔ)句;
}
只需要判斷表達(dá)式的值是否為真,若表達(dá)式為真則執(zhí)行語(yǔ)句,否則跳出分支語(yǔ)句。
如何判斷表達(dá)式是否為真?
表達(dá)式為零則為假,表達(dá)式為非零則為真
對(duì)于這種結(jié)構(gòu)的分支語(yǔ)句來說:
if(表達(dá)式){
??語(yǔ)句1;
}
else
{
??語(yǔ)句2;
}
只需要判斷表達(dá)式的值是否為真,若表達(dá)式為真則執(zhí)行語(yǔ)句1,否則執(zhí)行語(yǔ)句2。
對(duì)于這種結(jié)構(gòu)的分支語(yǔ)句來說:
if(表達(dá)式1){
??語(yǔ)句1
}
else if(表達(dá)式2){
??語(yǔ)句2;
}
else {
??語(yǔ)句3;
}
首先判斷表達(dá)式1的值是否為真,如果為真則執(zhí)行語(yǔ)句1,否則判斷表達(dá)式2的值是否為真,若表達(dá)式2的值為真則執(zhí)語(yǔ)句2,否則執(zhí)行語(yǔ)句3。
值得一提的是,if自動(dòng)匹配之后的一條語(yǔ)句,但若超過兩條,則需要用”{}“括起來。如下圖所示,程序返回了”4“,驗(yàn)證了我們的說法。
#include
int test(int a)
{
if (a)
return 2;//若if包含下一條語(yǔ)句,程序會(huì)打印4,若包含兩條以上,程序會(huì)打印2
return 4;
}
int main()
{
int a = 1;
int b=test(a);
printf("%d\\n", b);
return 0;
}
- switch語(yǔ)句
switch也是一種分支語(yǔ)句。常常用于多分支的情況,例如,下面這種情景:
輸入1,輸出星期一
輸入2,輸出星期二
輸入3,輸出星期三
輸入4,輸出星期四
輸入5,輸出星期五
輸入6,輸出星期六
輸入7,輸出星期日
switch語(yǔ)句的語(yǔ)法結(jié)構(gòu)
switch(整型表達(dá)式)
{
??case 整型表達(dá)式值1:
????語(yǔ)句1;
??case 整型表達(dá)式值2:
????語(yǔ)句2;
??case 整型表達(dá)式值3:
????語(yǔ)句3;
??case 整型表達(dá)式值4:
????語(yǔ)句4;
…
??default :
????語(yǔ)句5;
}
-
switch語(yǔ)句如何執(zhí)行
switch語(yǔ)句首先判斷整型表達(dá)式的值,當(dāng)整型表達(dá)式與某個(gè)case后的值i相等時(shí),則執(zhí)行語(yǔ)句i至最后一條語(yǔ)句,當(dāng)整型表達(dá)式的值與任意一個(gè)case后的值均不相等,則執(zhí)行default語(yǔ)句至最后一條語(yǔ)句。
-
switch中的break
switch語(yǔ)句只能選擇從某條語(yǔ)句開始執(zhí)行,并不能選擇只執(zhí)行某條case后的語(yǔ)句。也就是說,switch語(yǔ)句在開始執(zhí)行后,除非遇到break或return,否則語(yǔ)句會(huì)逐個(gè)執(zhí)行接下來的case語(yǔ)句直到語(yǔ)句結(jié)束。這里可以借用break語(yǔ)句來實(shí)現(xiàn)多分支。
那么上面打印星期幾的問題就可用以下代碼來解決:
# include
int main()
{
int day;
printf("請(qǐng)輸入day的值\\n");
scanf_s("%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("星期日\(chéng)\n");break;
}
}
- switch語(yǔ)句的特殊應(yīng)用場(chǎng)景
那么如果我們的需求變成了”輸入15,輸出工作日,輸入67,輸出休息日“的話,我們可以通過調(diào)整輸出語(yǔ)句和break 語(yǔ)句的位置來實(shí)現(xiàn)。如下所示
#include
#include
#include
int main()
{
int day;
printf("請(qǐng)輸入day的值\\n");
scanf_s("%d", &day);
switch (day) {
case 1:
case 2:
case 3:
case 4:
case 5:printf("工作日\(chéng)\n");break;
case 6:
case 7:printf("休息日\(chéng)\n");break;
}
}
-
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7594瀏覽量
135856 -
結(jié)構(gòu)化
+關(guān)注
關(guān)注
0文章
26瀏覽量
10297 -
程序設(shè)計(jì)語(yǔ)言
+關(guān)注
關(guān)注
0文章
3瀏覽量
6615
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論