版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第四章選擇結(jié)構(gòu)4.1.1關(guān)系運算符C語言有6種關(guān)系運算符:
<、<=、>、>=、==、!=關(guān)系成立:關(guān)系運算的值為1(表示邏輯真);關(guān)系不成立:關(guā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。注意:浮點數(shù)是用近似值表示的?!?=”用于兩個浮點數(shù)的判斷時,由于存儲誤差,會得出錯誤的結(jié)果。4.1.2關(guān)系表達式1、關(guān)系表達式的構(gòu)成關(guān)系表達式是用關(guān)系運算符將兩個表達式連接起來,進行關(guān)系運算的式子。例如:
a+b>b+c 比較兩個算術(shù)表達式的值
a<=2*b 比較變量的值和算術(shù)表達式的值
′a′<′b′ 比較兩個字符ASCII碼值關(guān)系表達式2、
關(guān)系運算符的優(yōu)先級(1)<、<=、>和>=為同一級,==和!=為同一級。前者優(yōu)先級高于后者。(2)關(guān)系運算符優(yōu)先級低于算術(shù)運算符。例如:
a+b>b+c等效于(a+b)>(b+c)。
(2+a)==(b-a)等效于2+a==b-a。3、關(guān)系運算符的結(jié)合律
C語言規(guī)定關(guān)系表達式采取左結(jié)合律。表達式中出現(xiàn)優(yōu)先級別為同一級別的運算符時,按從左到右結(jié)合方向處理。例如:
inta=2,b=3,c=1a>b<c先計算a>b,結(jié)果是0,再計算0<c,關(guān)系表達式的值為:16>3<2先計算6>3,結(jié)果是1,再計算1<2,關(guān)系表達式的值為:1關(guān)系表達式4.1.3邏輯運算符C語言沒有邏輯類型數(shù)據(jù),進行邏輯判斷時:數(shù)據(jù)的值為非0,則認作邏輯真,數(shù)據(jù)的值為0,則認作邏輯假;而邏輯表達式的值為真,則用整形數(shù)1表示。邏輯表達式的值為假,則用整形數(shù)0表示。
邏輯運算符有3個:!、&&
、||表示邏輯非、邏輯與、邏輯或運算。
注:由于C語言依據(jù)判斷數(shù)據(jù)是否為非0或0來判斷邏輯真和邏輯假,所以邏輯運算的操作數(shù)類型可以是字符型、整型或浮點型。
1、邏輯非!邏輯非是單目運算符(也就是說參加運算的操作數(shù)只有一個)。若操作數(shù)本身的值為0,邏輯非運算后的結(jié)果為1(邏輯真)當操作數(shù)值為非0時,邏輯非運算的結(jié)果為0。例如:
inta=5,b=3; !a 結(jié)果為0,即a為非0。
!(a<b)結(jié)果為1。因為a<b的值為0,即取a<b的非。2、邏輯與
&&邏輯與是雙目運算(也就是說參加運算的操作數(shù)有兩個),當參加邏輯與運算的兩個操作數(shù)值均為非0(邏輯真)時,結(jié)果才為真;否則為0(邏輯假)。
例如:inta=5,b=3;a&&b 結(jié)果為l,即a與b均不為0。(a<b)&&(a>0) 結(jié)果為0,因為a<b的值為0。3、邏輯或||
邏輯或也是雙目運算,參加或運算的兩個操作數(shù)中,只要有一個操作數(shù)值為非0(邏輯真),結(jié)果就為l(邏輯真);否則為0(邏輯假)。例如:inta=5,b=3;a||b 結(jié)果為l。(a<b)||(a>0) 結(jié)果為l,因為a>0的值為l。在談到邏輯運算時,我們常用一個真值表來表示,如下:ab!a!ba&&ba||b真真假假真真真假假真假真假真真假假真假假真真假假為理解與、或、非的含義,引入三個電路,如圖所示。在上圖中,我們給出三個指示燈的控制電路,根據(jù)串、并聯(lián)電路的工作原理,我們可以得出:①在圖(a)中,只有當兩個常開按鈕同時按下時,指示燈才會亮;與②在圖(b)中,只要兩個常開按鈕中任何一個按下,指示燈都會亮;或③在圖(c)中,沒有按按鈕時,電路是接通的,所以指示燈亮,按下按鈕時,指示燈反而不亮。非邏輯表達式1、邏輯運算表達式的構(gòu)成用邏輯運算符將表達式連接起來就構(gòu)成了邏輯表達式。例如,!(a>b) 對關(guān)系表達式的值取非(a>b)&&(b>c) 對兩個關(guān)系表達式進行邏輯與運算(a>b)&&(b>c)||(b==0)2、邏輯運算符優(yōu)先級C語言邏輯運算符的優(yōu)先級規(guī)定如下:①優(yōu)先級順序為!→&&→||。
②!高于算術(shù)運算符,
&&,||低于關(guān)系運算符。
3、邏輯運算符的結(jié)合律
C語言邏輯運算符采用左結(jié)合律。表達式中出現(xiàn)優(yōu)先級別為同一級別的運算符時,按從左到右的結(jié)合方向處理。例如:a&&b&&c計算順序為從左自右,即:(a&&b)&&c。4、C語言邏輯表達式的特性
①在多個&&運算符相連的表達式中,計算從左至右進行時,若遇到運算符左邊的操作數(shù)為0(邏輯假),則停止運算。因為此時已經(jīng)可以斷定邏輯表達式結(jié)果為假。②在多個||運算符相連的表達式中,計算從左至右進行時,若遇到運算符左邊的操作數(shù)為l(邏輯真),則停止運算,因為已經(jīng)可以斷定邏輯表達式結(jié)果為真。
4.2if條件語句擇條件語句ifif語句的說明條件運算符4.2選擇型程序設(shè)計if語句的三種形式形式一:格式:if(表達式)
語句1
語句2執(zhí)行過程:例:if(x>y)printf(“%d”,x);x=y;形式二:格式:if(表達式)
語句1else
語句2
語句3執(zhí)行過程:例:if(x>y)max=x;elsemax=y;x=y;表達式語句1非0=0語句2表達式語句1語句2非0=0語句3形式三:格式:if(表達式1)語句1elseif(表達式2)語句2elseif(表達式3)語句3…...[else語句]表達式1語句1非0=0表達式2表達式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后面的表達式類型任意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);}錯誤!在if語句和else語句中若有多個操作語句,則應(yīng)用花括號{}將它們括起成為一個復(fù)合語句。補足程序段--1
輸入兩個整數(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
輸入三個整數(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條件運算符和條件表達式
C語言提供了一個可以代替某些if-else語句的簡便易用的操作符“?”和“:”,該操作符是三目運算符,其一般形式是:
表達式1?表達式2:表達式3
操作符?的作用:在計算表達式1之后,如果數(shù)值為true(真),則計算表達式2,并將結(jié)果作為整個表達式的數(shù)值;如果表達式1的值為false(假),則計算表達式3的值,并以它的結(jié)果作為整個表達式的值。例:
x=10;if(x>9)y=100;elsey=200;可以用下面的條件運算符來處理:
x=10;y=(x>9)?100:200;注意:①條件運算符要求有3個操作對象。②條件運算符的優(yōu)先級別比關(guān)系運算符和算術(shù)運算符都低。因此
y=(x>9)?100:200括號可以不要,可寫成
y=x>9?100:200
如果有a>b?a:b+1相當于a>b?a:(b+1),而不相當于(a>b?a:b)+1③條件運算符的結(jié)合方向為“自右向左”。如:a>b?a:c>d?c:d相當于:a>b?a:(c>d?c:d)如果a=1,b=2,c=3,d=4,則條件表達式的值等于4。Switch語句 switch語句是一種分支控制語句。特點:是可以根據(jù)一個表達式的多種值,選擇多個分支,因而也稱為分情況語句和開關(guān)語句。實際問題中常常需要用到多分支結(jié)構(gòu),例如,學(xué)生成績分檔次(85分以上為“A”等,70~84分為“B”等,60~69分為“C”等……)。Switch語句執(zhí)行過程:switch(表達式){case常量1:語句1;case常量2:語句2;……case常量n:語句n;default:語句n+1;}當“表達式”=“常量表達式1”時,從“語句1”開始執(zhí)行;當“表達式”=“常量表達式2”時,從“語句2”開始執(zhí)行;當“表達式”=其它值時,從“語句n+1”開始執(zhí)行;Switch語句中使用break語句:switch(表達式){case常量1:語句系列1;break;case常量2:語句系列2;break;
……case常量m:語句系列m;break;default:語句系列m+1;}執(zhí)行過程:switch表達式語句組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(“錯誤輸入\n”);}}輸入“C”,求輸出結(jié)果。
結(jié)果:
60~69<60
錯誤輸入
?!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(“錯誤輸入\n”);}}我的成績應(yīng)該是60~69!什么!“<60”?“錯誤輸入”?怎么會這樣?!不好意思,我屬于C級!
運行結(jié)果:
60~69<60
錯誤輸入
解決方法——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(“錯誤輸入\n”);}}這才差不多!break!
運行結(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、每個case常量表達式的值必須互不相同,否則會出現(xiàn)互相矛盾的結(jié)果。2、允許多個case共用一個執(zhí)行語句。
求程序運行結(jié)果。結(jié)果:a=2,b=1。如果x=2?
結(jié)果:a=1,b=1
如果x=3?結(jié)果:a=1,b=1
Switch語句常量1,常量2,…常量n是常量表達式,且值必須互不相同case后可包含多個可執(zhí)行語句,且不必加{}switch可嵌套多個case可共用一組執(zhí)行語句當每一個case語句后均有break語句時,case出現(xiàn)的次序不影響執(zhí)行結(jié)果。(default總是放在最后,這時,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等.壓縮文件請下載最新的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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度版權(quán)許可合同許可方式
- 2024年城市軌道交通建設(shè)與運營管理承包合同
- 2024小產(chǎn)權(quán)房買賣合同(買方)范本
- 2024年度通信工程安全施工質(zhì)量保證合同
- 2024年度學(xué)生轉(zhuǎn)學(xué)與安全責任承諾合同
- 2024年度物業(yè)租賃合同:高端商務(wù)樓物業(yè)管理與租賃合同
- 2024年廣告投放合同投放策略與違約金
- 2024年家具企業(yè)員工股權(quán)激勵計劃合同
- 2024年度影視制作合同標的及制作要求
- 2024丙丁雙方關(guān)于合作開展物流業(yè)務(wù)的戰(zhàn)略合作協(xié)議
- 大班幼兒學(xué)情分析報告
- 北師大版三年級數(shù)學(xué)上冊第六單元《乘法》(大單元教學(xué)設(shè)計)
- 紡織品購銷合同(5篇)
- 體育市場營銷智慧樹知到期末考試答案章節(jié)答案2024年西華大學(xué)
- 【課件】第15課+權(quán)力與理性-17、18世紀西方美術(shù)+課件-高中美術(shù)人教版(2019)美術(shù)鑒賞
- 兒童早期的認知發(fā)展-皮亞杰前運算階段(三座山實驗)
- 2024年極兔速遞有限公司招聘筆試參考題庫附帶答案詳解
- 2024年威士忌酒相關(guān)公司行業(yè)營銷方案
- 網(wǎng)絡(luò)游戲危害課件
- 2024供電營業(yè)規(guī)則學(xué)習(xí)課件
- 鐵路給水排水設(shè)計規(guī)范(TB 10010-2016)
評論
0/150
提交評論