《C語言程序設(shè)計視頻教程-徐紅波-第5章 課件.ppt》由會員分享,可在線閱讀,更多相關(guān)《C語言程序設(shè)計視頻教程-徐紅波-第5章 課件.ppt(32頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、C程序設(shè)計講師:徐紅波Email: x_h_ 第5章 選擇結(jié)構(gòu)程序設(shè)計 選擇結(jié)構(gòu)是三種基本結(jié)構(gòu)之一。在大多數(shù)程序中都會包含選擇結(jié)構(gòu)。它的作用是,根據(jù)所指定的條件是否滿足,決定從給定的兩組操作選擇其一。在本章中介紹如何用C語言實現(xiàn)選擇結(jié)構(gòu)。 在C語言中選擇結(jié)構(gòu)用if語句實現(xiàn)。if語句最常用的形式如下:if (關(guān)系表達式) 語句1 else 語句2例如:if (x0) y=1; else y=-1;其中x0是一個關(guān)系表達式?!啊笔且粋€關(guān)系運算符。 5.1 關(guān)系運算符和關(guān)系表達式關(guān)系運算是邏輯運算中比較簡單的一種?!瓣P(guān)系運算” 就是“比較運算”。將兩個值進行比較,判斷其比較的結(jié)果是否符合給定的條件。
2、例如a3是一個關(guān)系表達式。 5.1.1 關(guān)系運算符及其優(yōu)先次序C語言提供6種關(guān)系運算符: = = !=關(guān)于優(yōu)先次序:(1)前4種關(guān)系運算符的優(yōu)先級別相同,后兩種也相同。前4種高于后2種。(2)關(guān)系運算符的優(yōu)先級低于算術(shù)運算符。(3)關(guān)系運算符的優(yōu)先級高于賦值運算符。 5.1.2 關(guān)系表達式用關(guān)系運算符將兩個表達式(可以是算術(shù)表達式或關(guān)系表達式、邏輯表達式、賦值表達式、字符表達式)連接起來的式子,稱關(guān)系表達式。關(guān)系表達式的值是一個邏輯值,即“真”或“假”。C語言沒有邏輯型數(shù)據(jù),以1代表“真”,以0代表“假” 5.2 邏輯運算符和邏輯表達式用邏輯運算符將關(guān)系表達式或邏輯量連接起來的式子就是邏輯表達
3、式。 5.2.1 邏輯運算符及其優(yōu)先次序C語言提供三種邏輯運算符:(1) 2、if (表達式) 語句1 else 語句2例如:if (xy)printf(“%d”, x);elseprintf(“%d”, y); 3、if (表達式1) 語句1else if (表達式2) 語句2else if (表達式3) 語句3else if (表達式m) 語句melse 語句n 說明:(1)三種形式的if語句中在if后面都有“表達式”,一般為邏輯表達式或關(guān)系表達式。(2)第二、第三種形式的if語句中,在每個else前面有一個分號,整個語句結(jié)束處有一個分號。(3)在if和else后面可以只含一個內(nèi)嵌的操作語
4、句,也可以有多個操作語句,此時用花括號將幾個語句括起來成為一個復(fù)合語句。 5.1輸入兩個實數(shù),按代數(shù)值由小到大的順序輸出這兩個數(shù)#include void main() float a, b, t;scanf(“%f,%f”, if(ab) t=a;a=b;b=t;printf(“%5.2f,%5.2fn”, a, b); 例5.2輸入3個數(shù)a、b、c,要求按由小到大的順序輸出#include void main() float a, b, c, t;scanf(“%f,%f,%f”, if(ab) t=a;a=b;b=t;if(ac) t=a;a=c;c=t;if(bc) t=b;b=c;c
5、=t; 5.3.2 if語句的嵌套在if語句中又包含一個或多個if語句稱為if語句的嵌套。一般形式如下:if() if() 語句1else 語句2else if() 語句3else 語句4 例5.3編程,輸入x值,輸出y值,函數(shù):-1 (x0)#include void main() int x, y;scanf(“%d”, if(x0) y=-1;elseif(x=0) y=0; else y=1;printf(“x=%d,y=%dn”,x,y); 5.3.3 條件運算符若在if語句中,當(dāng)被判別的表達式的值為“真”或“假”時,都執(zhí)行一個賦值語句且向同一個變量賦值時,可以用一個條件運算符來處理
6、。條件運算符要求有3個操作對象,稱三目(元)運算符。條件表達式的一般形式為 表達式1?表達式2:表達式3 說明:(1)條件運算符的執(zhí)行順序:先求解表達式1,若為非0則求解表達式2,此時表達式2的值就作為整個條件表達式的值。若表達式1的值為0,則求解表達式3,表達式3的值就是整個條件表達式的值。(2)條件運算符優(yōu)先于賦值運算符。(3)條件運算符的結(jié)合方向為自右至左。(4)表達式不僅可以是數(shù)值表達式,還可以是賦值表達式或函數(shù)表達式。(5)條件表達式中,表達式1的類型可以與表達式2和表達式3的類型不同。 例5.4輸入一個字母,判別它是否大寫字母,如果是,將它轉(zhuǎn)換成小寫字母;如果不是,不轉(zhuǎn)換。然后輸出
7、最后得到的字符#include void main() char ch;scanf(“%c”, ch=(ch=A & ch0(4)b2-4ac0 例5.7運輸公司對用戶計算運費路程越遠,每噸每千米運費越低。標(biāo)準(zhǔn)如下:s250沒有折扣250s500 2%折扣500s1000 5%折扣1000s2000 8%折扣20003c & b=c(2)a|b+c & b-c(3)!(ab) & ! c|1(4)!(x=a) & (y=b) & 0(5)!(a+b)+c-1 & b+c/25.4 有3個整數(shù)a、b、c,由鍵盤輸入,輸出其中最大的數(shù)。 5.5 有一個函數(shù):x x1 y= 2x-1 1x103x-11 10 x5.6 給出一百分制成績,要求輸出成績等級A、B、C、D、E。90分以上為A,8089分為B,7079分為C,6069分為D,60分以下為E。5.9 輸入4個整數(shù),要求按由小到大的順序輸出。 5.10 有4個圓塔,圓心分別為(2,2)、(-2,2)、(-2,-2)、(2,-2),圓半徑為1。這4個塔的高度為10m,塔以外無建筑物。今輸入任意點的坐標(biāo),求該點的建筑高度(塔外的高度為零)。