




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第四章選擇結(jié)構(gòu)4.1.1關(guān)系運(yùn)算符C語言有6種關(guān)系運(yùn)算符:
<、<=、>、>=、==、!=關(guān)系成立:關(guān)系運(yùn)算的值為1(表示邏輯真);關(guān)系不成立:關(guān)系運(yùn)算的值為0(表示邏輯假)。例如:
5>3值為1 5<=3 值為05==3 值為0 5!=3 值為1例如:1.0/3.0*3.0==1.0?
由于1.0/3.0得到的值用有限位保存,是近似值,所以1.0/3.0*3.0≠1.0。注意:浮點(diǎn)數(shù)是用近似值表示的?!?=”用于兩個(gè)浮點(diǎn)數(shù)的判斷時(shí),由于存儲(chǔ)誤差,會(huì)得出錯(cuò)誤的結(jié)果。4.1.2關(guān)系表達(dá)式1、關(guān)系表達(dá)式的構(gòu)成關(guān)系表達(dá)式是用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接起來,進(jìn)行關(guān)系運(yùn)算的式子。例如:
a+b>b+c 比較兩個(gè)算術(shù)表達(dá)式的值
a<=2*b 比較變量的值和算術(shù)表達(dá)式的值
′a′<′b′ 比較兩個(gè)字符ASCII碼值關(guān)系表達(dá)式2、
關(guān)系運(yùn)算符的優(yōu)先級(jí)(1)<、<=、>和>=為同一級(jí),==和!=為同一級(jí)。前者優(yōu)先級(jí)高于后者。(2)關(guān)系運(yùn)算符優(yōu)先級(jí)低于算術(shù)運(yùn)算符。例如:
a+b>b+c等效于(a+b)>(b+c)。
(2+a)==(b-a)等效于2+a==b-a。3、關(guān)系運(yùn)算符的結(jié)合律
C語言規(guī)定關(guān)系表達(dá)式采取左結(jié)合律。表達(dá)式中出現(xiàn)優(yōu)先級(jí)別為同一級(jí)別的運(yùn)算符時(shí),按從左到右結(jié)合方向處理。例如:
inta=2,b=3,c=1a>b<c先計(jì)算a>b,結(jié)果是0,再計(jì)算0<c,關(guān)系表達(dá)式的值為:16>3<2先計(jì)算6>3,結(jié)果是1,再計(jì)算1<2,關(guān)系表達(dá)式的值為:1關(guān)系表達(dá)式4.1.3邏輯運(yùn)算符C語言沒有邏輯類型數(shù)據(jù),進(jìn)行邏輯判斷時(shí):數(shù)據(jù)的值為非0,則認(rèn)作邏輯真,數(shù)據(jù)的值為0,則認(rèn)作邏輯假;而邏輯表達(dá)式的值為真,則用整形數(shù)1表示。邏輯表達(dá)式的值為假,則用整形數(shù)0表示。
邏輯運(yùn)算符有3個(gè):!、&&
、||表示邏輯非、邏輯與、邏輯或運(yùn)算。
注:由于C語言依據(jù)判斷數(shù)據(jù)是否為非0或0來判斷邏輯真和邏輯假,所以邏輯運(yùn)算的操作數(shù)類型可以是字符型、整型或浮點(diǎn)型。
1、邏輯非!邏輯非是單目運(yùn)算符(也就是說參加運(yùn)算的操作數(shù)只有一個(gè))。若操作數(shù)本身的值為0,邏輯非運(yùn)算后的結(jié)果為1(邏輯真)當(dāng)操作數(shù)值為非0時(shí),邏輯非運(yùn)算的結(jié)果為0。例如:
inta=5,b=3; !a 結(jié)果為0,即a為非0。
!(a<b)結(jié)果為1。因?yàn)閍<b的值為0,即取a<b的非。2、邏輯與
&&邏輯與是雙目運(yùn)算(也就是說參加運(yùn)算的操作數(shù)有兩個(gè)),當(dāng)參加邏輯與運(yùn)算的兩個(gè)操作數(shù)值均為非0(邏輯真)時(shí),結(jié)果才為真;否則為0(邏輯假)。
例如:inta=5,b=3;a&&b 結(jié)果為l,即a與b均不為0。(a<b)&&(a>0) 結(jié)果為0,因?yàn)閍<b的值為0。3、邏輯或||
邏輯或也是雙目運(yùn)算,參加或運(yùn)算的兩個(gè)操作數(shù)中,只要有一個(gè)操作數(shù)值為非0(邏輯真),結(jié)果就為l(邏輯真);否則為0(邏輯假)。例如:inta=5,b=3;a||b 結(jié)果為l。(a<b)||(a>0) 結(jié)果為l,因?yàn)閍>0的值為l。在談到邏輯運(yùn)算時(shí),我們常用一個(gè)真值表來表示,如下:ab!a!ba&&ba||b真真假假真真真假假真假真假真真假假真假假真真假假為理解與、或、非的含義,引入三個(gè)電路,如圖所示。在上圖中,我們給出三個(gè)指示燈的控制電路,根據(jù)串、并聯(lián)電路的工作原理,我們可以得出:①在圖(a)中,只有當(dāng)兩個(gè)常開按鈕同時(shí)按下時(shí),指示燈才會(huì)亮;與②在圖(b)中,只要兩個(gè)常開按鈕中任何一個(gè)按下,指示燈都會(huì)亮;或③在圖(c)中,沒有按按鈕時(shí),電路是接通的,所以指示燈亮,按下按鈕時(shí),指示燈反而不亮。非邏輯表達(dá)式1、邏輯運(yùn)算表達(dá)式的構(gòu)成用邏輯運(yùn)算符將表達(dá)式連接起來就構(gòu)成了邏輯表達(dá)式。例如,!(a>b) 對(duì)關(guān)系表達(dá)式的值取非(a>b)&&(b>c) 對(duì)兩個(gè)關(guān)系表達(dá)式進(jìn)行邏輯與運(yùn)算(a>b)&&(b>c)||(b==0)2、邏輯運(yùn)算符優(yōu)先級(jí)C語言邏輯運(yùn)算符的優(yōu)先級(jí)規(guī)定如下:①優(yōu)先級(jí)順序?yàn)?→&&→||。
②!高于算術(shù)運(yùn)算符,
&&,||低于關(guān)系運(yùn)算符。
3、邏輯運(yùn)算符的結(jié)合律
C語言邏輯運(yùn)算符采用左結(jié)合律。表達(dá)式中出現(xiàn)優(yōu)先級(jí)別為同一級(jí)別的運(yùn)算符時(shí),按從左到右的結(jié)合方向處理。例如:a&&b&&c計(jì)算順序?yàn)閺淖笞杂遥矗?a&&b)&&c。4、C語言邏輯表達(dá)式的特性
①在多個(gè)&&運(yùn)算符相連的表達(dá)式中,計(jì)算從左至右進(jìn)行時(shí),若遇到運(yùn)算符左邊的操作數(shù)為0(邏輯假),則停止運(yùn)算。因?yàn)榇藭r(shí)已經(jīng)可以斷定邏輯表達(dá)式結(jié)果為假。②在多個(gè)||運(yùn)算符相連的表達(dá)式中,計(jì)算從左至右進(jìn)行時(shí),若遇到運(yùn)算符左邊的操作數(shù)為l(邏輯真),則停止運(yùn)算,因?yàn)橐呀?jīng)可以斷定邏輯表達(dá)式結(jié)果為真。
4.2if條件語句擇條件語句ifif語句的說明條件運(yùn)算符4.2選擇型程序設(shè)計(jì)if語句的三種形式形式一:格式:if(表達(dá)式)
語句1
語句2執(zhí)行過程:例:if(x>y)printf(“%d”,x);x=y;形式二:格式:if(表達(dá)式)
語句1else
語句2
語句3執(zhí)行過程:例:if(x>y)max=x;elsemax=y;x=y;表達(dá)式語句1非0=0語句2表達(dá)式語句1語句2非0=0語句3形式三:格式:if(表達(dá)式1)語句1elseif(表達(dá)式2)語句2elseif(表達(dá)式3)語句3…...[else語句]表達(dá)式1語句1非0=0表達(dá)式2表達(dá)式3語句n語句3語句2非0非0=0=0執(zhí)行過程:
例:if(x>1000)y=0.4;elseif(x>800)y=0.3;elseif(x>600)y=0.2;elseif(x>400)y=0.1;elsey=0;如:if(a==b&&x==y)printf(“a=b,x=y”);if(3)printf(“OK”);if(‘a(chǎn)’)printf(“%d”,’a’);說明1:if后面的表達(dá)式類型任意if(x)if(x!=0)if(!x)if(x==0)語句可以是復(fù)合語句例考慮下面程序的輸出結(jié)果:
#include<stdio.h>main(){intx,y;scanf(“%d,%d”,&x,&y);if(x>y)
x=y;y=x;elsex++;y++;printf(“%d,%d\n”,x,y);}錯(cuò)誤!在if語句和else語句中若有多個(gè)操作語句,則應(yīng)用花括號(hào){}將它們括起成為一個(gè)復(fù)合語句。補(bǔ)足程序段--1
輸入兩個(gè)整數(shù),按從小到大的順序輸出它們。t=a;a=b;b=t;#include<stdio.h>main(){inta,b,t;scanf("%d,%d",&a,&b);if(a>b){
}printf("%d,%d",a,b);}條件語句舉例--2
輸入三個(gè)整數(shù),按從小到大的順序輸出它們。#include<stdio.h>main(){inta,b,c,t;scanf("%d,%d,%d",&a,&b,&c);if(a>b){
}if(a>c){
}if(b>c){
}printf("%d,%d,%d",a,b,c);}t=a;a=b;b=t;t=a;a=c;c=t;t=b;b=c;c=t;4.3條件運(yùn)算符和條件表達(dá)式
C語言提供了一個(gè)可以代替某些if-else語句的簡便易用的操作符“?”和“:”,該操作符是三目運(yùn)算符,其一般形式是:
表達(dá)式1?表達(dá)式2:表達(dá)式3
操作符?的作用:在計(jì)算表達(dá)式1之后,如果數(shù)值為true(真),則計(jì)算表達(dá)式2,并將結(jié)果作為整個(gè)表達(dá)式的數(shù)值;如果表達(dá)式1的值為false(假),則計(jì)算表達(dá)式3的值,并以它的結(jié)果作為整個(gè)表達(dá)式的值。例:
x=10;if(x>9)y=100;elsey=200;可以用下面的條件運(yùn)算符來處理:
x=10;y=(x>9)?100:200;注意:①條件運(yùn)算符要求有3個(gè)操作對(duì)象。②條件運(yùn)算符的優(yōu)先級(jí)別比關(guān)系運(yùn)算符和算術(shù)運(yùn)算符都低。因此
y=(x>9)?100:200括號(hào)可以不要,可寫成
y=x>9?100:200
如果有a>b?a:b+1相當(dāng)于a>b?a:(b+1),而不相當(dāng)于(a>b?a:b)+1③條件運(yùn)算符的結(jié)合方向?yàn)椤白杂蚁蜃蟆?。如:a>b?a:c>d?c:d相當(dāng)于:a>b?a:(c>d?c:d)如果a=1,b=2,c=3,d=4,則條件表達(dá)式的值等于4。Switch語句 switch語句是一種分支控制語句。特點(diǎn):是可以根據(jù)一個(gè)表達(dá)式的多種值,選擇多個(gè)分支,因而也稱為分情況語句和開關(guān)語句。實(shí)際問題中常常需要用到多分支結(jié)構(gòu),例如,學(xué)生成績分檔次(85分以上為“A”等,70~84分為“B”等,60~69分為“C”等……)。Switch語句執(zhí)行過程:switch(表達(dá)式){case常量1:語句1;case常量2:語句2;……case常量n:語句n;default:語句n+1;}當(dāng)“表達(dá)式”=“常量表達(dá)式1”時(shí),從“語句1”開始執(zhí)行;當(dāng)“表達(dá)式”=“常量表達(dá)式2”時(shí),從“語句2”開始執(zhí)行;當(dāng)“表達(dá)式”=其它值時(shí),從“語句n+1”開始執(zhí)行;Switch語句中使用break語句:switch(表達(dá)式){case常量1:語句系列1;break;case常量2:語句系列2;break;
……case常量m:語句系列m;break;default:語句系列m+1;}執(zhí)行過程:switch表達(dá)式語句組1語句組2語句組n語句組…...常量1defaultcase常量2常量nmain(){chars;scanf(“%c”,&s);switch(s){case‘A’:printf(“85~100\n”);case‘B’:printf(“70~84\n”);case‘C’:printf(“60~69\n”);case‘D’:printf(“<60\n”);default:printf(“錯(cuò)誤輸入\n”);}}輸入“C”,求輸出結(jié)果。
結(jié)果:
60~69<60
錯(cuò)誤輸入
?!main(){chars;scanf(“%c”,&s);switch(s){case‘A’:printf(“85~100\n”);case‘B’:printf(“70~84\n”);case‘C’:printf(“60~69\n”);case‘D’:printf(“<60\n”);default:printf(“錯(cuò)誤輸入\n”);}}我的成績應(yīng)該是60~69!什么!“<60”?“錯(cuò)誤輸入”?怎么會(huì)這樣?!不好意思,我屬于C級(jí)!
運(yùn)行結(jié)果:
60~69<60
錯(cuò)誤輸入
解決方法——break語句:main(){chars;scanf(“%c”,&s);switch(s){case‘A’:printf(“85~100\n”);break;case‘B’:printf(“70~84\n”);break;case‘C’:printf(“60~69\n”);break;case‘D’:printf(“<60\n”);break;default:printf(“錯(cuò)誤輸入\n”);}}這才差不多!break!
運(yùn)行結(jié)果:
60~69main(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf(“a=%d,b=%d\n”,a,b);}說明1、每個(gè)case常量表達(dá)式的值必須互不相同,否則會(huì)出現(xiàn)互相矛盾的結(jié)果。2、允許多個(gè)case共用一個(gè)執(zhí)行語句。
求程序運(yùn)行結(jié)果。結(jié)果:a=2,b=1。如果x=2?
結(jié)果:a=1,b=1
如果x=3?結(jié)果:a=1,b=1
Switch語句常量1,常量2,…常量n是常量表達(dá)式,且值必須互不相同case后可包含多個(gè)可執(zhí)行語句,且不必加{}switch可嵌套多個(gè)case可共用一組執(zhí)行語句當(dāng)每一個(gè)case語句后均有break語句時(shí),case出現(xiàn)的次序不影響執(zhí)行結(jié)果。(default總是放在最后,這時(shí),deafult后不需要break語句)。說明:X0≤X<102X+110≤X<20Y=4120≤X<3071-X30≤X<400X<0或X≥40#include<stdio.h>main(){intxscanf("%d",&x);switch( ){cas
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物學(xué)科實(shí)驗(yàn)操作經(jīng)驗(yàn)交流計(jì)劃
- 畫出童年小班藝術(shù)表現(xiàn)計(jì)劃
- 優(yōu)化流程的年度工作框架計(jì)劃
- 班級(jí)心理素質(zhì)提升活動(dòng)的案例分享計(jì)劃
- 2025年中國新型建材行業(yè)市場競爭格局及投資方向研究報(bào)告(智研咨詢)
- 2025年鐵紅項(xiàng)目建議書
- 2025年系列自動(dòng)遙測氣象站項(xiàng)目合作計(jì)劃書
- 汽車零件互換性規(guī)則設(shè)定
- 構(gòu)建穩(wěn)定可靠的數(shù)據(jù)庫同步體系
- 三國演義的英雄氣概讀后感
- 發(fā)展?jié)h語 初級(jí)讀寫一 第二課 謝謝你
- 部編版六年級(jí)語文下冊第一單元大單元教學(xué)任務(wù)單
- 人教版小學(xué)語文1-6年級(jí)背誦內(nèi)容完整版
- 2023徐金桂“徐徐道來”(行政法知識(shí)點(diǎn))版
- 《事故汽車常用零部件修復(fù)與更換判別規(guī)范》
- 2024-2030年中國酒類流通行業(yè)發(fā)展動(dòng)態(tài)及投資盈利預(yù)測研究報(bào)告
- 物業(yè)管理如何實(shí)現(xiàn)降本增效
- DL-T825-2021電能計(jì)量裝置安裝接線規(guī)則
- 信息科技重大版 七年級(jí)下冊 互聯(lián)網(wǎng)應(yīng)用與創(chuàng)新 第一單元單元教學(xué)設(shè)計(jì) 互聯(lián)網(wǎng)創(chuàng)新應(yīng)用
- 2024年興業(yè)銀行股份有限公司校園招聘考試試題及參考答案
- 2024智慧城市城市交通基礎(chǔ)設(shè)施智能監(jiān)測技術(shù)要求
評(píng)論
0/150
提交評(píng)論