Hi!這里是漁火。今天我們繼續(xù)來(lái)講C語(yǔ)言的分支結(jié)構(gòu)。在C語(yǔ)言里,可以使用if-else實(shí)現(xiàn)分支結(jié)構(gòu)。
1、雙分支if語(yǔ)句。其一般形式為:if(表達(dá)式)語(yǔ)句1;else 語(yǔ)句2;。 我們來(lái)用雙分支if語(yǔ)句來(lái)做一道簡(jiǎn)單的題目。
【1.1】使用雙分支語(yǔ)句求兩個(gè)數(shù)中較大的數(shù)。
#include運(yùn)行結(jié)果1://2023.2.1漁火 Linux迷 www.linuxmi.com int main() { int a,b; printf("請(qǐng)輸入兩個(gè)整數(shù):"); scanf("%d%d",&a,&b); if(a>b) printf("兩個(gè)整數(shù)中的最大數(shù)為:%d ",a); else printf("兩個(gè)整數(shù)中的最大數(shù)為:%d ",b); //2023.2.1漁火 Linux迷 www.linuxmi.com return 0; }

運(yùn)行結(jié)果2:

2、單分支語(yǔ)句。其一般形式為:if(表達(dá)式) 語(yǔ)句; 我們用單分支語(yǔ)句來(lái)解決一道題目。
【2.1】編寫程序任意輸入一個(gè)實(shí)數(shù),輸出其絕對(duì)值。
#include運(yùn)行結(jié)果如下://2023.2.1漁火 Linux迷 www.linuxmi.com int main() { float x; scanf("%f",&x); if(x<0) x=-x; printf("%f",x); //2023.2.1漁火 Linux迷 www.linuxmi.com return 0; }

分析:無(wú)論在雙分支還是單分支if語(yǔ)句的格式中,“表達(dá)式”都是用來(lái)描述判斷的條件,語(yǔ)法上可以是任意類型的表達(dá)式。表達(dá)式的結(jié)果如果為“0”,表示“假”;結(jié)果為“1”,表示“真”。
無(wú)論在雙分支還是單分支if語(yǔ)句的格式中,被執(zhí)行的語(yǔ)句均為單個(gè)語(yǔ)句,如果想要執(zhí)行一組語(yǔ)句時(shí),則必須將這一組語(yǔ)句用{}括起來(lái)形成復(fù)合語(yǔ)句,但在“}”之后不能再加括號(hào)。注意:復(fù)合語(yǔ)句中的語(yǔ)句執(zhí)行時(shí)會(huì)全部被執(zhí)行。
我們來(lái)看一個(gè)復(fù)合語(yǔ)句的例子。
【3.1】輸入3個(gè)實(shí)數(shù),要求按從小到大的順序輸出。
#include運(yùn)行結(jié)果如下://2023.2.1漁火 Linux迷 www.linuxmi.com int main() { float x,y,z,k; scanf("%f %f %f",&x,&y,&z); if(x>y) {k=x;x=y;y=k;} if(x>z) {k=x;x=z;z=k;} if(y>z) {k=y;y=z;z=k;} printf("%5.2f,%5.2f,%5.2f ",x,y,z); //2023.2.1漁火 Linux迷 www.linuxmi.com return 0; }

分析:{k=x;x=z;z=k;}的作用是交換變量x和y的值,變量k為中間變量。 使用if語(yǔ)句的基本形式解決分支少于兩個(gè)的問(wèn)題十分方便,而經(jīng)常遇到的是多于兩個(gè)分支,或者需要再多個(gè)不同條件下執(zhí)行不同語(yǔ)句的問(wèn)題,這就需要掌握if語(yǔ)句的嵌套以及多分支結(jié)果。一個(gè)if語(yǔ)句中又包含一個(gè)或多個(gè)if語(yǔ)句的現(xiàn)象稱為if語(yǔ)句的嵌套。if語(yǔ)句的基本形式:if(表達(dá)式) 語(yǔ)句1;else 語(yǔ)句2;。其中“語(yǔ)句1”或“語(yǔ)句2”都可以嵌套另一個(gè)if語(yǔ)句,在缺省else部分的if語(yǔ)句中的“語(yǔ)句”也可以嵌套另一個(gè)if語(yǔ)句。在if語(yǔ)句嵌套的結(jié)構(gòu)中一定要注意else與if之間的對(duì)應(yīng)關(guān)系。為了避免二義性,在C語(yǔ)言中規(guī)定其對(duì)應(yīng)原則是:else總是與它前面最近的一個(gè)未匹配的if相匹配。
【4.1】輸入3個(gè)任意數(shù),找出其中的最大值。
#include運(yùn)行結(jié)果如下://2023.2.1漁火 Linux迷 www.linuxmi.com int main() { int x,y,z,max; scanf("%d %d %d",&x,&y,&z); if(x>y) if(x>z) max=x; else max=z; else if(y>z) max=y; else max=z; printf("max=%d ",max); //2023.2.1漁火 Linux迷 www.linuxmi.com return 0; }

多分支if語(yǔ)句是最常用的實(shí)現(xiàn)多路分支的方法,其一般形式為:if(表達(dá)式1) 語(yǔ)句1;else if(表達(dá)式2)···else if(表達(dá)式n-1) 語(yǔ)句n-1;else 語(yǔ)句n;.
在C語(yǔ)言中還提供了一種switch語(yǔ)句也可以實(shí)現(xiàn)多分支的選擇。switch的一般形式為:switch(表達(dá)式){case 常量表達(dá)式1;語(yǔ)句1;break;case 常量表達(dá)式2;語(yǔ)句2;break;···case 常量表達(dá)式n;語(yǔ)句n;break;default:語(yǔ)句n+1;break;}
注意:1、switch后的表達(dá)式可以是任何表達(dá)式,其值只能為整型、字符型、枚舉型。2、每個(gè)case后面的常量表達(dá)式的值互不相同,否則會(huì)出現(xiàn)互相矛盾的現(xiàn)象。3、各個(gè)case和default的出現(xiàn)次序不影響執(zhí)行結(jié)果。4、可以讓多個(gè)case共用一組執(zhí)行語(yǔ)句。5、switch語(yǔ)句允許嵌套使用。
-
Linux
+關(guān)注
關(guān)注
87文章
11509瀏覽量
213715 -
Switch
+關(guān)注
關(guān)注
1文章
537瀏覽量
59659 -
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7632瀏覽量
141626 -
程序
+關(guān)注
關(guān)注
117文章
3826瀏覽量
82959 -
字符
+關(guān)注
關(guān)注
0文章
237瀏覽量
25590
原文標(biāo)題:從零開始跟我學(xué) C 語(yǔ)言之分支結(jié)構(gòu)(下)
文章出處:【微信號(hào):Linux迷,微信公眾號(hào):Linux迷】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
評(píng)論