版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
用于條件判斷的表達(dá)式
if語句實現(xiàn)選擇結(jié)構(gòu)
switch語句實現(xiàn)選擇結(jié)構(gòu)條件運(yùn)算符Begin:第四章選擇結(jié)構(gòu)程序設(shè)計
引例問題:學(xué)生參加某門功課的考試,如果考試及格,則顯示“通過考試”,如果考試不及格,則顯示“未通過考試”。4.2用于條件判斷的表達(dá)式關(guān)系運(yùn)算符與關(guān)系表達(dá)式邏輯運(yùn)算符與邏輯表達(dá)式4.2.1關(guān)系運(yùn)算符與關(guān)系表達(dá)式關(guān)系運(yùn)算(比較運(yùn)算)即比較兩個量的大小,比較的結(jié)果為“真”或“假”。例:a>3
如果a=8,則結(jié)果為“真”;如果a=1,則結(jié)果為“假”。1.關(guān)系運(yùn)算符含義運(yùn)算符優(yōu)先級結(jié)合性小于<6左結(jié)合小于等于<=6左結(jié)合大于>6左結(jié)合大于等于>=6左結(jié)合等于==7左結(jié)合不等于!=7左結(jié)合2.關(guān)系表達(dá)式—用關(guān)系運(yùn)算符將兩個表達(dá)式連接起來的式子。一般形式:其中:表達(dá)式1和表達(dá)式2可以是任何表達(dá)式。<表達(dá)式1><關(guān)系運(yùn)算符><表達(dá)式2>a>bm+n<=20c!=‘y’(x>z)==(y>z)i>j>k例:關(guān)系表達(dá)式只能表達(dá)一些簡單的關(guān)系,如:sum>=1500y!=z即只能對一個條件進(jìn)行測試。而以下關(guān)系:
20≤x≤100則不能用關(guān)系表達(dá)式表達(dá)。邏輯非!真值表1.邏輯運(yùn)算符含義運(yùn)算符優(yōu)先級結(jié)合性邏輯非!2右結(jié)合邏輯與&&11左結(jié)合邏輯或||12左結(jié)合4.2.2邏輯運(yùn)算符與邏輯表達(dá)式邏輯或‖2.邏輯表達(dá)式
—用邏輯運(yùn)算符將表達(dá)式連接起來的式子。如:
1)0≤x≤10→
x>=0&&x<=102)a>5或x<15→a>15‖x<153)a、b不能同時為零→
a==0&&b!=0||a!=0&&b==0邏輯與&&一般形式為:[〈表達(dá)式1〉]〈邏輯運(yùn)算符〉〈表達(dá)式2〉
邏輯表達(dá)式是構(gòu)成選擇結(jié)構(gòu)條件的基本式子。[注意]
在計算邏輯表達(dá)式時,并非所有的邏輯運(yùn)算符都參與運(yùn)算。如:x=y=-1;++x&&++y;/*x=?y=?*/“短路能力”算術(shù)運(yùn)算關(guān)系運(yùn)算邏輯與、或邏輯非運(yùn)算符運(yùn)算優(yōu)先級小結(jié):C語言沒有邏輯型數(shù)據(jù)。因此,
在返回邏輯值時:用1表示“真”,用0表示“假”;
在判斷邏輯值時:用非0代表“真”,用0代表“假”。例:#include<stdio.h>voidmain(){inta=15,b=18,c=10;printf("%d,%d,%d\n",a>b,a<b,a>b>c);}0,1,0思考:判斷某年是否為閏年的邏輯表達(dá)式?4.3用if語句實現(xiàn)選擇結(jié)構(gòu)4.3.1if語句的三種形式格式一:單分支結(jié)構(gòu)
if(<條件>)語句A;語句執(zhí)行過程:
先判斷條件(表達(dá)式),若條件成立,就執(zhí)行語句A;否則,直接執(zhí)行if后面的語句。該結(jié)構(gòu)的流程圖如右圖所示。例:if(grade>=60)printf(“Pass\n”);注意:單分支結(jié)構(gòu)只有在條件為真時,才執(zhí)行給定的操作,如果條件為假,則不執(zhí)行任何操作。1)條件均為邏輯表達(dá)式或關(guān)系表達(dá)式,也可以是任意的數(shù)值類型。2)語句可以是單語句,也可以是復(fù)合語句。注意:在復(fù)合語句{}外不需再加分號。例:if(3)printf("O.K.\n");
if(‘q’)printf("%d\n",‘a(chǎn)’);
if(3<x&&x<=5)printf("3<x<=5\n");4.3用if語句實現(xiàn)選擇結(jié)構(gòu)例:if(a>b)
{t=a;a=b;b=t;}說明:例:鍵盤輸入一個整數(shù),輸出該數(shù)的絕對值。main()
{intshu;
printf("請輸入一個整數(shù)%%d:\n");scanf("%d",&shu);if(shu<0)shu=-shu;printf(“該數(shù)的絕對值為:%d。\n",shu);}4.3用if語句實現(xiàn)選擇結(jié)構(gòu)格式二:雙分支結(jié)構(gòu)
if(<條件>)語句A;
else語句B;注意:
else子句是if語句的一部分,它不能作為語句單獨使用,必須與if配對使用。4.3用if語句實現(xiàn)選擇結(jié)構(gòu)語句執(zhí)行過程:
先判斷條件(表達(dá)式),若條件成立,就執(zhí)行語句A;否則,執(zhí)行語句B。即一定會執(zhí)行語句A和語句B中的一句,且只能執(zhí)行其中的一句。該結(jié)構(gòu)的流程圖如右圖所示。例:if(grade>=60)printf(“Pass\n”);
elseprintf(“Failure”);例:
計算voidmain(){floatx,y;printf("送數(shù)%%f:\n");scanf("%f",&x);if(x>=0)y=3*x+6;elsey=-x*x+2*x-8;printf("y=%.2f\n",y);}4.3用if語句實現(xiàn)選擇結(jié)構(gòu)例:任意輸入兩個不相等的數(shù),將大數(shù)放入X,小數(shù)放入Y中。算法:1.定義變量2.給變量賦初值3.比較x、y,
若x<y,交換兩數(shù)4.輸出x、y分析:兩數(shù)比較,要么x>y,直接輸出;要么x<y,兩數(shù)交換。4.3用if語句實現(xiàn)選擇結(jié)構(gòu)程序:main()
{intx,y,t;printf("\n請輸入兩個整數(shù)%%d%%d:");scanf("%d%d",&x,&y);if(x<y){t=x;x=y;y=t;}printf("\nx=%d,y=%d\n",x,y);}格式三:多分支結(jié)構(gòu)
if(<條件1>)語句1;
elseif(<條件2>)語句2;
···elseif(<條件n-1>)語句n-1;
else語句n;4.3用if語句實現(xiàn)選擇結(jié)構(gòu)語句執(zhí)行過程:
先判斷條件1(表達(dá)式1),若條件1成立,就執(zhí)行語句1后,退出該if結(jié)構(gòu);否則,再判斷條件2(表達(dá)式2),若條件2成立,則執(zhí)行語句2后,退出該if結(jié)構(gòu);否則,再判斷條件3(表達(dá)式3),若條件3成立,則執(zhí)行語句3后,退出該if結(jié)構(gòu);……。表達(dá)式1表達(dá)式2表達(dá)式3表達(dá)式n-1語句n語句n-1...語句3語句2語句1...真真真真假假假假例:
計算4.3用if語句實現(xiàn)選擇結(jié)構(gòu)程序:#include<stdio.h>voidmain(){floatx,y;printf("送數(shù)%%f:\n");scanf("%f",&x);
if(x>0) y=x-7;
else
if(x==0)y=2;
elsey=3*x*x;printf("%.2f\n",y);}例2:if(a>0) if(b>0)printf("%d,%d\n",a,b);elseprintf("%d\n",a);elseif(b>0)printf("%d\n",b);elseprintf("\n");在if語句中又包含有一個或多個if語句稱為if語句的嵌套。請說出以下兩段程序的功能:例1:if(a>0)if(b>0)printf("%d,%d\n",a,b);如果a,b都是正數(shù),則輸出a,b輸出a,b中的正數(shù)4.3用if語句實現(xiàn)選擇結(jié)構(gòu)4.3.2if語句的嵌套為避免錯誤可用{}將內(nèi)嵌結(jié)構(gòu)括起來以確定if與else的配對關(guān)系屬內(nèi)嵌范圍。說明:
嵌套不允許交叉。else與if必須成對出現(xiàn),且else總是與最近的一個未配對的if配對。4.3用if語句實現(xiàn)選擇結(jié)構(gòu)例:讀程序。main(){inta=2,b=1,c=2;if(a)if(b<0)c=0;elsec++;
printf("%d\n",c);}main(){inta=2,b=1,c=2;if(a){if(b<0)c=0;}elsec++;
printf("%d\n",c);}程序運(yùn)行結(jié)果:3程序運(yùn)行結(jié)果:24.3用if語句實現(xiàn)選擇結(jié)構(gòu)例:任意輸入三個整數(shù),找出其中最大的整數(shù)。a>=cmax=cmax=bmax=cYb>=cYmax=aa>=bNNYN4.3用if語句實現(xiàn)選擇結(jié)構(gòu)程序:main(){inta,b,c,max;printf(”請輸入三個整數(shù):%%d%%d%%d\n”);scanf("%d%d%d",&a,&b,&c);if(a>=b)if(a>=c)max=a;elsemax=c;elseif(b>=c)max=b;elsemax=c;printf(”\n最大數(shù)為:%d\n”,max);}4.3用if語句實現(xiàn)選擇結(jié)構(gòu)4.3.3條件運(yùn)算符與條件表達(dá)式條件運(yùn)算符:
?:三目運(yùn)算符,運(yùn)算優(yōu)先級為13,右結(jié)合性。例:a>b?max=a:max=b例:(grade>=60)?printf(“Passed”):printf(“Failed”);一般形式:
<表達(dá)式1>?<表達(dá)式2>:<表達(dá)式3>例:讀下列程序,寫出運(yùn)行結(jié)果。
a>b?a:c>d?c:d
其中a=1,b=2,c=3,d=4.運(yùn)行結(jié)果為:4.該表達(dá)式等價于a>b?a:(c>d?c:d)例:用條件運(yùn)算符表達(dá)3個數(shù)a,b,c中的大數(shù)。思路1:先求兩個數(shù)b,c中的大數(shù):b>c?b:c再求兩個數(shù)a,(b,c)中的大數(shù):a>(b>c?b:c)?a:(b>c?b:c)思路2:a>b?是,則讓a與c比較;否,則讓b與c比較a>b?(a>c?a:c):(b>c?b:c)4.3.3用條件表達(dá)式實現(xiàn)選擇結(jié)構(gòu)switch語句的格式:switch(表達(dá)式)
{case<常量表達(dá)式1>:語句1;[break;]case<常量表達(dá)式2>:語句2;[break;]……case<常用表達(dá)式n-1>:語句n-1;[break;]default:語句n;[break;]}4.4用switch語句實現(xiàn)多分支選擇結(jié)構(gòu)說明:表達(dá)式:可以是整型表達(dá)式,或字符表達(dá)式,或枚舉表達(dá)式。case常量表達(dá)式1~(n-1):case也是關(guān)鍵字。常量表達(dá)式應(yīng)與switch后的表達(dá)式類型相同,且各常量表達(dá)式的值不允許相同。語句1~n:可省略,或為單語句,或為復(fù)合語句。default:關(guān)鍵字,可省略,也可出現(xiàn)在switch語句體內(nèi)的任何位置。4.4用switch語句實現(xiàn)多分支選擇結(jié)構(gòu)break語句格式:
break;功能:強(qiáng)迫終止程序的執(zhí)行,即提前退出程序的執(zhí)行。用法:只能用在switch語句和循環(huán)體中。
4.4用switch語句實現(xiàn)多分支選擇結(jié)構(gòu)switch語句執(zhí)行過程:執(zhí)行:若表達(dá)式==常量表達(dá)式,則執(zhí)行語句;若表達(dá)式!=常量表達(dá)式,則執(zhí)行default開始的(語句);若程序中無default開始的語句,則程序語句switch相當(dāng)于一個空程序(語句)。計算:計算表達(dá)式的值。判斷:表達(dá)式的值與常量表達(dá)式的值是否相等。4.4用switch語句實現(xiàn)多分支選擇結(jié)構(gòu)注意:表達(dá)式及常數(shù)表達(dá)式(由常數(shù)、符號常量組成的表達(dá)式)必須為整型,故它們也可用字符表達(dá)式。case后的常數(shù)表達(dá)式的值不允許相同。4.4用switch語句實現(xiàn)多分支選擇結(jié)構(gòu)switch語句中若沒有default分支,則當(dāng)找不到與表達(dá)式相匹配的的常量表達(dá)式時,不執(zhí)行任何操作。例:x=3;
switch(x){case0:printf(“Ture!”);case1:printf(“False");}
該switch語句不執(zhí)行任何操作多個case可以共同使用一個語句序列
4.4用switch語句實現(xiàn)多分支選擇結(jié)構(gòu)例:switch(n){case1:case3:
case5:case7:
case9:printf(”奇數(shù)
\n”);
break;
case0:
case2:
case4:
case6:
case8:printf(”偶數(shù)
\n”);
break;
}
該switch語句中,當(dāng)n=1,3,5,7,9時,輸出“奇數(shù)”;當(dāng)n=0,2,4,6,8時,輸出“偶數(shù)”;例:輸入一個0~2的數(shù)。main(){intx;printf("請輸入一個0—2的整數(shù):");scanf("%d",&x);switch(x){case0:printf("輸入0。\n");case1:printf("輸入1。\n");case2:printf("輸入2。\n");default:printf("輸入錯誤!\n");}
}程序運(yùn)行結(jié)果:請輸入一個0—2的整數(shù):1↙輸入1。輸入2。輸入錯誤!4.4用switch語句實現(xiàn)多分支選擇結(jié)構(gòu)#include"math.h"voidmain(){floatx,y;intm;printf("請輸入0~5之間的數(shù)%%f\n");scanf("%f",&x);m=floor(x);/*不大于x的最大整數(shù)*/
switch(m){case0:y=0;break;
case1:y=3*x+5;break;
case2:y=2*sin(x)-1;break;
case3:y=log(1+x*x);break;
case4:y
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026福建廈門市集美區(qū)雙嶺小學(xué)產(chǎn)假頂崗教師招聘1人考試備考試題及答案解析
- 2026中國水利電力物資集團(tuán)有限公司高校畢業(yè)生招聘考試備考試題及答案解析
- 2026年甘肅省天水瑞慈醫(yī)院招聘臨床崗位護(hù)士考試參考試題及答案解析
- 2026年南昌市勞動保障事務(wù)代理中心以勞務(wù)外包形式招聘項目申報與監(jiān)測服務(wù)工作人員1人考試備考題庫及答案解析
- 2026年溫州市婦女兒童活動中心招聘兼職專業(yè)教師考試備考題庫及答案解析
- 2026河南漯河市召陵區(qū)公益性崗位招聘5人考試參考題庫及答案解析
- 2025湖南衡陽市衡東縣城鄉(xiāng)發(fā)展投資集團(tuán)有限公司招聘工作人員部分崗位降低開考比例考試參考試題及答案解析
- 2026年河北正定師范高等??茖W(xué)校單招職業(yè)技能考試備考題庫帶答案解析
- 2026年1月南京市溧水區(qū)教育局所屬事業(yè)單位公開招聘教師71人筆試模擬試題及答案解析
- 2026年1月江蘇南京市溧水區(qū)教育局所屬事業(yè)單位招聘教師71人筆試備考試題及答案解析
- (2025年)新疆公開遴選公務(wù)員筆試題及答案解析
- 直銷公司旅游獎勵方案
- DB11T 290-2005山區(qū)生態(tài)公益林撫育技術(shù)規(guī)程
- 有關(guān)中國居民死亡態(tài)度的調(diào)查報告
- 開放大學(xué)(原電視大學(xué))行政管理實務(wù)期末復(fù)習(xí)資料所有單
- 醫(yī)學(xué)統(tǒng)計學(xué)(12)共143張課件
- 特種設(shè)備安全檢查臺賬
- 水工建筑物位移觀測記錄
- 住宅項目開盤前工作倒排表
- 福州魯能花園項目施工總承包工程主體結(jié)構(gòu)勞務(wù)施工組織設(shè)計
- GB∕T 41422-2022 壓力輸水用取向硬聚氯乙烯(PVC-O)管材和連接件
評論
0/150
提交評論