《C語言程式設計》一 3 2 二分支選擇結構

2021-09-23 09:22:56 字數 3788 閱讀 6621

使用二分支結構的形式主要有兩種,由使用基本的if語句實現,即if-else語句和省略else的if語句。在if語句中的條件表示式可由關係表示式或邏輯表示式組成。因此在講解if語句之前,首先介紹一下關係表示式和邏輯表示式。

例3-1的程式中,if((year % 4 == 0 && year % 100 != 0)||(year % 400 == 0))的條件表示式中包含了關係運算子「==」(等於)和「!=」(不等於)。

關係運算子是二元運算子,共有6個運算子,如表3-1所示。

關係表示式是由關係運算子將運算物件連線起來的式子,運算物件可以是常量、變數或者任何有效的c語言表示式。關係表示式的運算結果為邏輯值,如果表示式成立,結果為邏輯真,否則為邏輯假。在c語言中邏輯「真」用整數「1」來表示,邏輯「假」用整數「0」來表示。

關係運算子優先順序低於算術運算子,關係運算子中,「<」,「>」,「<=」,「>=」的優先順序高於「==」和「!=」的優先順序。當多個關係運算子同時出現在乙個表示式中,根據優先順序決定計算順序,相同優先順序的關係運算子按照從左到右的順序計算。

下面的關係表示式是有效的:

3<0,表示式不成立,結果為0。

7>6>5,7>6表示式成立,結果為1,再計算1>5,表示式不成立,結果為0。

若x=2,y=4,z=-5,則關係表示式x+3>y+z成立,結果為1。

若x=2,y=4,則關係表示式x!=3>y先計算3>y,結果為0,再計算x!=0,結果為1。

關係運算子也可以用來比較字元型資料,字元型資料按ascii碼值的大小比較。例如『a』>『a』結果為1,『a』>『b』結果為0。

注意 浮點數的比較不能用「==」或「!=」關係運算子,因為float型和double型的資料是由二進位制方式儲存,都有精度限制。十進位制小數沒有準確的二進位制表示,所以浮點數判斷相等的方式一般採用判斷兩個數差的絕對值小於乙個可以接受的範圍。例如浮點變數a,不能用if(a==0.0)判斷a是否等於0.0,而應轉換成if(a−0.0>1e−4)。

例3-1的程式中,if((year % 4 == 0 && year % 100 != 0)||(year % 400 == 0))的條件表示式中包含了邏輯運算子「||」和「&&」。邏輯表示式能夠表達比關係表示式更複雜的條件。c語言中邏輯運算子包括「&&」(邏輯與)、「||」(邏輯或)和「!」(邏輯非)。

邏輯表示式是用邏輯運算子將運算物件連線起來的式子。運算物件可以是關係表示式和邏輯表示式。邏輯表示式的結果為真(1)或假(0)。表3-2是三種邏輯運算子的真值表。

邏輯與「&&」和邏輯或「||」為二元運算子,邏輯非「!」為一元運算子,「!」的優先順序最高,「&&」的優先順序次之,「||」的優先順序最低。表3-3說明了算術運算子、關係運算子和邏輯運算子的優先順序和運算的結合方向。

括號的優先順序最高,它也可以使表示式更清晰易讀。

若x=2,y=4,z=5,下面的表示式是合法的邏輯表示式:

xz>x+y等價於z>(x+y),結果為0(假)。

z&&!y+2等價於z&&((!y)+2),結果為1(真)。

z||y&&!x等價於z||(y&&(!x)),結果為1(真)。

5&&-1,5和-1均為非0值,為真,進行「與」運算的結果為1(真)。

注意 邏輯表示式在求解中,並不是所有的運算子都執行,當前面的表示式已經能夠確定結果時,後面的運算子就不再執行。例如邏輯表示式a&&b&&c,當a為假時,不管b和c的值為真或假,結果均為假(0),所以當a為真時才判斷b的值,當b為真時才判斷c的值;表示式a||b||c,當a為真時,不管b和c的值為真或假,結果均為真(1),所以當a為假時才判斷b的值,當b為假時才判斷c的值。

在解決實際問題時,經常會遇到根據不同的情況採取不同的行為的情形。c語言中的分支結構就是根據條件值選擇要執行的語句,分支結果分為二分支選擇結構和多分支選擇結構,用if-else結構和switch-case結構實現。

基本的if語句有兩種形式,if語句和if-else語句。

1.if語句

最簡單的選擇語句具有如下的語法結構:

if(表示式)

語句;如果表示式為真,則執行if結構內的語句,否則不執行該語句,直接執行if結構後面的語句。執行流程如圖3-1所示。

if語句中的表示式可以是任何表示式,如關係表示式、邏輯表示式或算術表示式,也可以是整數,只要表示式的值為0(假)或非0(真)即可。

【例3-2】 從鍵盤上輸入乙個整數,求其絕對值。

/*程式名:prg3-2.c

功能:求乙個整數的絕對值

*/

#includeint main()

輸出結果為:

enter a number:-5.6

the absolute value is 5.60

例3-2中如果輸入為正數或零,則跳過if語句直接列印;否則,執行if語句。

注意 如果if表示式為真時,要執行多條語句,要將多條語句用花括號括起來,構成乙個復合句。乙個復合句的通用格式如下:

if(表示式)

例3-3說明了復合語句的使用。

【例3-3】 從鍵盤中輸入兩個數到little、large變數值中,如果little變數中的值大於large,則交換兩個變數的值。

/*

程式名:prg3-3.c

功能:兩個數little、large,如果little的值大於large,則交換兩個變數的值

*/#includeint main()

printf("little = %5.2f, large = %5.2f",little,large);

return 0; }

2.if-else語句

if-else語句的語法結構為:

if(表示式)

語句1;

else

語句2;

如果表示式為真,執行語句1,否則執行語句2,兩者只能選擇乙個執行。當語句1或語句2有不止一條語句時構成復合語句,用花括號括起來,格式如下:

if(表示式)

else

if-else結構的執行流程如圖3-2所示。

【例3-4】 從鍵盤輸入兩個數,輸出兩數相除的

結果。

/*

程式名:prg3-4.c

功能:求兩個數相除的結果

*/#includeint main()

else

printf("num2 can not be zero");

return 0;

}

執行結果1:

enter two  numbers: 6,2

6.00 / 2.00= 3.00

執行結果2:

enter two  numbers: 3, 0

num2 can not be zero

C語言(二) 分支語句結構

今天我們來看一下c語言中的分支語言結構,它包括if語句,switch語句和goto語句 什麼是語句?c語言中由乙個分號 隔開的就是一條語句。比如 printf hehe 1 2 if語句的語法 if 表示式 語句 if 表示式 語句1 else 語句2 解釋 如果表示式的結果為真,則語句1執行,否則...

C語言程式設計2 分支結構

第一題 1.輸入乙個整數,判斷奇偶,並輸出 某某是奇數 或者 某某是偶數 import int main int argc,const char argv 2.輸入乙個數,判斷符號。如果大於0,輸出 正數 如果小於0,輸出 負數 如果等於0,輸出 0 import int main int argc...

C語言總結二(分支與迴圈語句)

本次我們要討論的便是分支和迴圈語句,在c語言中我們用 作為一條語句的結束標誌,在c語言中最重要的便是語句了,通過一條條語句的結合,我們才能實現一定的邏輯。分支語句 if例 if 條件1 else if 條件2 else 注 if else 語句較容易理解,條件滿足執行語句,不滿足執行else語句,一...