




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、一、關(guān)系運算符和表達(dá)式 1、關(guān)系運算符 在程序中經(jīng)常需要比較兩個量的大小關(guān)系, 以決定程序下一步 的工作。比較兩個量的運算符稱為關(guān)系運算符。 在語言中有以下關(guān)系運算符: 大于 = 大于或等于 = 等于 != 不等于 關(guān)系運算符都是雙目運算符,其結(jié)合性均為左結(jié)合。 關(guān)系運算符的優(yōu)先級低于算術(shù)運算符,高于賦值運算符。 在六個關(guān)系運算符中,,=的優(yōu)先級相同,高于=和!=,=和!=的優(yōu)先級相同。,第五章 選擇結(jié)構(gòu)程序設(shè)計,2、關(guān)系表達(dá)式 關(guān)系表達(dá)式的一般形式為: 表達(dá)式 關(guān)系運算符 表達(dá)式 例如:a+bc-d,x3/2 a+1(bc),a!=(c=d)等。關(guān)系表達(dá)式的值是“真” 和“假”,用“1”和“
2、0”表示。 如: 50的值為“真”,即為1。 (a=3)(b=5)由于35不成立,故其值為假,即為0。,#include main() char c=k; int i=1,j=2,k=3; float x=3e+5,y=0.85; printf(%d,%dn,a+5=k+1); printf(%d,%dn,1j5,x-5.25=x+y); printf(%d,%dn,i+j+k=-2*j,k=j=i+5); 在本例中求出了各種關(guān)系運算符的值。 字符變量是以它對應(yīng) 的ASCII碼參與運算的。對于含多個關(guān)系運算符的表達(dá)式,如 k=j=i+5, 根據(jù)運算符的左結(jié)合性,先計算k=j,該式不成立,其值為
3、0,再 計算0=i+5,也不成立,故表達(dá)式值為0。,1、 邏輯運算符 語言中提供了三種邏輯運算符 int i=1,j=2,k=3; float x=3e+5,y=0.85; printf(%d,%dn,!x*!y,!x); printf(%d,%dn,x|i 本例中!x和!y分別為0,!x*!y也為0,故其輸出值為0。由于 x為非0,故!x的邏輯值為0。對x| i printf(n input two numbers:); scanf(%d%d, ,例:,2.第二種形式為if-else形式 if(表達(dá)式) 語句1; else 語句2; 其語義是:如果表達(dá)式的值為真,則執(zhí)行語句1,否則執(zhí)行語句2
4、 。,3.第三種形式為if-else-if形式 前二種形式的if語句一般都用于兩個分支的情況。 當(dāng)有多個分 支選擇時,可采用if-else-if語句,其一般形式為: if(表達(dá)式1) 語句1; else if(表達(dá)式2) 語句2; else if(表達(dá)式3) 語句3; else if(表達(dá)式m) 語句m; else 語句n;,其語義是:依次判斷表達(dá)式的值,當(dāng)出現(xiàn)某個值為真時, 則執(zhí)行其對應(yīng)的語句。然后跳到整個if語句之外繼續(xù)執(zhí)行程序。 如果所有的表達(dá)式均為假,則執(zhí)行語句n 。 然后繼續(xù)執(zhí)行后續(xù)程序。,#include main() char c; printf(input a characte
5、r:); c=getchar(); if(c= 0 根據(jù)輸入字符的ASCII碼來判別鍵盤輸入字符的類別。由 ASCII碼表可知ASCII值小于32的為控制字符。 在0和9之 間的為數(shù)字,在A和Z之間為大寫字母, 在a和z之間 為小寫字母,其余則為其它字符。,4.在使用if語句中還應(yīng)注意以下問題 (1) 在三種形式的if語句中,在if關(guān)鍵字之后均為表達(dá)式。 該表達(dá) 式通常是邏輯表達(dá)式或關(guān)系表達(dá)式, 但也可以是其它表達(dá)式, 如賦值表達(dá)式等,甚至也可以是一個變量。例如: if(a=5) 語句; if(b) 語句; 都是允許的。只要表達(dá)式的值為非0,即為“真”。如在if(a=5) ;中表達(dá)式的值永遠(yuǎn)為
6、非0,所以其后的語句總是要執(zhí)行的,當(dāng) 然這種情況在程序中不一定會出現(xiàn),但在語法上是合法的。,又如,有程序段: if(a=b) printf(%d,a); else printf(a=0); 本語句的語義是,把b值賦予a,如為非0則輸出該值,否則 輸出“a=0”字符串。這種用法在程序中是經(jīng)常出現(xiàn)的。 (2) 在if語句中,條件判斷表達(dá)式必須用括號括起來, 在語句 之后必須加分號。,3) 在if語句的三種形式中,所有的語句應(yīng)為單個語句,如果要想 在滿足條件時執(zhí)行一組(多個)語句,則必須把這一組語句用 括 起來組成一個復(fù)合語句。但要注意的是在之后不能再加分號。 例如: if(ab) a+; b+;
7、else a=0; b=10; ,5、語句的嵌套 當(dāng)if語句中的執(zhí)行語句又是if語句時,則構(gòu)成了if 語句嵌套的情形。其一般形式可表示如下: if(表達(dá)式) if語句; 或者為 if(表達(dá)式) if語句; else if語句;,在嵌套內(nèi)的if語句可能又是if-else型的,這將會出現(xiàn)多個if 和多個else重疊的情況,這時要特別注意if和else的配對問題。例 如: if(表達(dá)式1) if(表達(dá)式2) 語句1; else 語句2;,應(yīng)該理解為: 還是應(yīng)理解為: if(表達(dá)式1) if(表達(dá)式1) if(表達(dá)式2) if(表達(dá)式2) 語句1; 語句1; else 語句2; else 語句2; 為
8、了避免這種二義性,語言規(guī)定,else 總是與它前面最 近的if配對,因此對上述例子應(yīng)按前一種情況理解。,#include main() int a,b; printf(please input A,B:); scanf(%d%d, 本例中用了if語句的嵌套結(jié)構(gòu)。 采用嵌套結(jié)構(gòu)實質(zhì)上是為了 進(jìn)行多分支選擇,實際上有三種選擇即AB、AB或A=B。這種問 題用if-else-if語句也可以完成。而且程序更加清晰。因此,在 一般情況下較少使用if語句的嵌套結(jié)構(gòu)。 以使程序更便于閱讀理 解.,小結(jié) if 條件語句 一. 條件語句的一般形式為:真 if (表達(dá)式) 語句1; else 語句2;,語句,語句
9、,表達(dá)式,假,例:求任一實數(shù)的絕對值,#include stdio.h main( ) double x, xabs; printf(input a data :); scanf(%lf, ,注意: 1. if 語句中 “else 語句2;” 部分可以缺省, 此時, if 語句變成: if (表達(dá)式) 語句1; 2. 如果語句1或語句2有多于一條語句要執(zhí)行時, 必須使用“”和“” 把這些語句括起來成為一個復(fù)合語句 所謂表達(dá)式一般是關(guān)系表達(dá)式和邏輯表達(dá)式的結(jié)合 式, 也可為任意類型表達(dá)式,. if 語句可以嵌套 例如: if (x20|xx) printf(Good); else printf(
10、Bad); C規(guī)定: else語句與它最近的一個if配對 若為了使else與if(x20|x20|xx) printf(Good); else printf(Bad);,. 可用階梯式if-else-if結(jié)構(gòu)來實現(xiàn)多種條件的選擇 階梯式結(jié)構(gòu)的一般形式為: if (表達(dá)式1) 語句1; else if (表達(dá)式2) 語句2; else if (表達(dá)式3) 語句3; . . else 語句n; 這種結(jié)構(gòu)是從上到下逐個對條件進(jìn)行判斷, 一旦發(fā)現(xiàn)條件 滿足就執(zhí)行與它有關(guān)的語句, 并跳過其它剩余階梯; 若沒有一個條件滿足, 則執(zhí)行最后一個else語句n。 最后這個else常起著缺省條件的作用。,四. 條
11、件運算符和條件表達(dá)式 1. 條件運算符 ? : 是 C語言唯一的一個三目運算符, 其功能為:若在 If 語句中,無論條件表達(dá)式為 真或為假,均是用賦值語句對同一個變量賦值時,可用 條件運算符處理。 即? if (ab) max = a ; else max = b ; 等價于 max = (ab) ? a: b ;,2條件表達(dá)式 一般形式是: ? : 求值過程是: 先求表達(dá)式1的值, 若為真, 則求表達(dá)式2 的值并把它作為整個表達(dá)式 的值; 若表達(dá)式1 的值為假, 則求表達(dá)式3 的值并把它作為 整個表達(dá)式的值。,3說明:,) 條件運算符的優(yōu)先級,算術(shù)運算符 關(guān)系運算符 條件運算符 賦值運算符,
12、(高) (低),max = (ab) ? a : b ; 與 max = ab ? a : b ; 等價,y= ab ? a : (b+1) ; 與 y = ab ? a : b+1 ; 等價,2) 條件運算符的結(jié)合性: 自右向左,例: a=1 , b=2 ,c=3 ,d=4, 則條件表達(dá)式 a b ? a : c d ? c: d 的值為4,3) 條件表達(dá)式不能取代一般的 if 語句,只能取代if 語句中特殊的一種. 例: if (a b) printf (%d, a); else printf (%d, b); 可用 printf(%d, a b ? a: b );取代.,) 條件表達(dá)式中
13、,表達(dá)式的類型可與表達(dá)式及 不同,表達(dá)式和 表達(dá)式的類型也可不同,而 條件表達(dá)式值的類型取表達(dá)式和中的較高者 例:int x, y; x ? a:b 值為字符型 x y ? 1 : 1.5 值為實型,例:求a,b,c中的絕對值最大的數(shù) #include #include main() float a,b,c,max; printf(“input three data:n”); scanf(“%f%f%f ”, ,一般形式為: switch(表達(dá)式) case 常量表達(dá)式1: 語句1或空; case 常量表達(dá)式2: 語句2或空; . . case 常量表達(dá)式n: 語句n或空; default:
14、語句n+1或空; 說明: 1.執(zhí)行switch語句時, 將表達(dá)式的值逐個與case后的常量 進(jìn)行比較, 若與其中一個相等, 則執(zhí)行該常量下的語句, 若不與任何一個常量相等, 則執(zhí)行default 后面的語句。,五、 switch語句,2. switch中表達(dá)式與case后的常量可為任何類型 3. 每一個case后常量表達(dá)式的值必須互不相同,否 則出現(xiàn)矛盾。 4. 每個case或default后的語句可以是復(fù)合語句, 但不需要使用和括起來。 執(zhí)行完一個case后面語句后,流程控制轉(zhuǎn)移到下一 個case 繼續(xù)執(zhí)行因此,若想在不同情況下執(zhí)行不同的 語句,必須使用break語句。,break語句的功能
15、:將程序流程控制跳出整個switch語句, 執(zhí)行switch語句的下一條語句,switch(grade) case A: printf(85100n);break; case B: printf(7084n); break; case C: printf(6069n); break; case D: printf(60n); break; default: printf(Errorn); ,6.多個 case 可共用一組執(zhí)行語句例:,case A: case B: case C: printf(60n); break;,例:,選擇結(jié)構(gòu)程序設(shè)計舉例,例: 將任意三個整數(shù)按從大到小的順序輸出。,#
16、include stdio.h void main() int x,y,z,t; scanf(%d,%d,%d, ,例: 給一個不多于4位的正整數(shù),求出它是幾位數(shù),逆序打印出各位數(shù)字。,#include stdio.h void main() int x,a,b,c,d; /*a,b,c,d代表千位、百位、十位、個位*/ scanf(%d, ,例: 任意輸入三個數(shù),判斷能否構(gòu)成三角形?若能構(gòu)成三角形,是等邊三角形、等腰三角形還是其它三角形?,#include stdio.h void main() float a,b,c; scanf(%f,%f,%f, ,例: 從鍵盤輸入一個年份,判斷是否是閏年。,#include stdio.h void main()
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030中國白葡萄酒行業(yè)市場深度分析及發(fā)展預(yù)測與投資策略報告
- 2025至2030中國電力濾波器行業(yè)發(fā)展研究與產(chǎn)業(yè)戰(zhàn)略規(guī)劃分析評估報告
- 2025至2030中國生姜油行業(yè)市場占有率及投資前景評估規(guī)劃報告
- 2025至2030中國玄武巖連續(xù)纖維行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030中國物聯(lián)網(wǎng)專業(yè)服務(wù)行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 應(yīng)對叛逆期的教育與心理引導(dǎo)技巧探索
- 地質(zhì)專業(yè)培訓(xùn)課件
- 打造跨文化教育資源平臺促進(jìn)全球教育交流
- 學(xué)生自我認(rèn)知與教育心理學(xué)的關(guān)系探討
- 醫(yī)療健康領(lǐng)域中教師的科研方向與挑戰(zhàn)分析
- 氣瓶充裝質(zhì)量保證體系手冊
- 《布病防控知識》課件
- 2024年社區(qū)工作者考試必考1000題及完整答案
- 起重裝卸機械3級復(fù)習(xí)試題附答案
- 2024年09月2024秋季中國工商銀行湖南分行校園招聘620人筆試歷年參考題庫附帶答案詳解
- 《北京市道路橋梁試驗檢測費用定額》
- 中醫(yī)院人才引進(jìn)績效考核方案
- 高速公路施工安全培訓(xùn)課件
- 2024年中級經(jīng)濟(jì)師考試經(jīng)濟(jì)基礎(chǔ)知識必考重點總結(jié)全覆蓋
- 轉(zhuǎn)崗人員安全知識培訓(xùn)
- 金屬非金屬地下礦山安全生產(chǎn)標(biāo)準(zhǔn)化定級評分標(biāo)準(zhǔn)(2023版)
評論
0/150
提交評論