語言c課件第04章選擇結(jié)構(gòu)_第1頁
語言c課件第04章選擇結(jié)構(gòu)_第2頁
語言c課件第04章選擇結(jié)構(gòu)_第3頁
語言c課件第04章選擇結(jié)構(gòu)_第4頁
語言c課件第04章選擇結(jié)構(gòu)_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論