




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第四章選擇結(jié)構(gòu)C語言程序設(shè)計(jì)1第四章選擇結(jié)構(gòu)C語言程序設(shè)計(jì)1本章要點(diǎn):正確使用關(guān)系表達(dá)式和邏輯表達(dá)式掌握用if語句和switch語句實(shí)現(xiàn)選擇結(jié)構(gòu)掌握條件運(yùn)算符的使用2本章要點(diǎn):2 選擇語句是控制程序執(zhí)行選擇結(jié)構(gòu)的語句 是程序?qū)崿F(xiàn)邏輯判斷的唯一形式 根據(jù)學(xué)生分?jǐn)?shù)判斷是否及格 根據(jù)學(xué)生分?jǐn)?shù)如何進(jìn)行分級 一元二次方程求解自然語言:如果 那么 否則C語言:分支語句如何解決?為什么要用選擇結(jié)構(gòu)?3 選擇語句是控制程序執(zhí)行選擇結(jié)構(gòu)的語句 根據(jù)學(xué)生分?jǐn)?shù)判斷4. 關(guān)系運(yùn)算符和關(guān)系表達(dá)式.1.1 關(guān)系運(yùn)算符 1.關(guān)系運(yùn)算符 關(guān)系運(yùn)算是進(jìn)行比較大小的運(yùn)算,并產(chǎn)生運(yùn)算結(jié)果1(真)或 0(假)。語言中的關(guān)系運(yùn)算符有種
2、: 、!優(yōu)先次序:前種同級,高于后種(后種同級)關(guān)系運(yùn)算符的結(jié)合性為從左到右; 算術(shù)運(yùn)算符 (高)關(guān)系運(yùn)算符賦值運(yùn)算符 (低)如:32 ab)(bc) 、ay 、s+fd 關(guān)系表達(dá)式的值為邏輯值“真”或“假”. 注意: 語言沒有邏輯型數(shù)據(jù),關(guān)系表達(dá)式的真、假 是以數(shù)值“”代表“真”,以“”代表“假”。 例:設(shè) a=3, b=2, c=1 ,求下列表達(dá)式的值? cb值為0(假)(a-b)=1值為1(真)(b+c)34 a的值為05 4.1.2 關(guān)系表達(dá)式cb值為0(假)(a-b)=練 習(xí)設(shè)有變量定義 int z; 分析z%2=0 的值? 如果z為偶數(shù),則 z%2=0的值為1; 否則z為奇數(shù),則
3、z%2=0的值為0; 因此,z%2=0是斷言“z是偶數(shù)”的c語言判斷式。2. x與y的個(gè)位數(shù)字相同 x%10=y%10 如何判斷十位數(shù)上數(shù)字相同?6練 習(xí)設(shè)有變量定義 int z;64.2.1 邏輯運(yùn)算符 C語言提供三種邏輯運(yùn)算符: & (邏輯與) 、 | (邏輯或) 、! (邏輯非)說明:(1)“&”和“| ”是“雙目(元)運(yùn)算符”,它要求有兩個(gè)操作數(shù)。(2)“! ”是“單目(元)運(yùn)算符”,只要求有一個(gè)運(yùn)算量。(3)優(yōu)先級次序:! & | 4.2 邏輯運(yùn)算符和邏輯表達(dá)式 a&b a、b均為真, 則a&b為1(真)。 a|b a、b之一為真,則a|b為1(真)。 !a 若a為真,則!a為假。
4、74.2.1 邏輯運(yùn)算符4.2 邏輯運(yùn)算符和邏輯表達(dá)式 a運(yùn)算符的優(yōu)先級!(非) (高)算術(shù)運(yùn)算符 關(guān)系運(yùn)算符& 和 |賦值運(yùn)算符 (低)8運(yùn)算符的優(yōu)先級84.2.2 邏輯表達(dá)式用邏輯運(yùn)算符將關(guān)系表達(dá)式或邏輯量連接起來的式子.規(guī)定:判斷一個(gè)邏輯量為“真、假”的方法: “非”代表“真”,“”代表“假”例: 寫出1x1&x10 1x3&2|84!0例:a+bn+3例:(m=ab)&(n=c-d) 若a=3,b=2,c=6,d=5,n=8 例:a|b|c 如果a為真,就不再判斷b和c了 強(qiáng)調(diào):在邏輯表達(dá)式的求解過程中,只要能確定表達(dá)式的值,就不繼續(xù)向下求解其他的值了.(a+b)(n+3)(53)&2
5、|(8b) x=a;1. 單選擇if語句 語句零表達(dá)式非零表達(dá)式可以是關(guān)系式或邏輯式4.3 選擇語句4.3.1 if 語句11根據(jù)給定的表達(dá)式?jīng)Q定要執(zhí)行的操作。執(zhí)行過程:語句格式:1. 2. 雙選擇if語句語句格式:if (表達(dá)式) 語句組1; else 語句組2;功能:計(jì)算表達(dá)式的值,當(dāng)表達(dá)式值為非零時(shí)執(zhí)行語句組1,否則執(zhí)行語句組2。APB非零零122. 雙選擇if語句語句格式:功能:APB非零零123.控制條件的表示 #include “stdio.h” main() int a,b,c=25; a=10c; b=a=a; printf(“a=%d,b=%d,”,a,b); if(c) p
6、rintf(“c=%d”,c); 運(yùn)行結(jié)果:a=0,b=1,c=25133.控制條件的表示運(yùn)行結(jié)果:a=0,b=1,c=2513控制條件的幾種形式: if(a=0) k=1; if(a=0) k=1; if(a!=0) k=1; if(a) k=1; if(1) k=1;思考a取不同的值時(shí),語句的執(zhí)行情況?提示:不要用“=“比較兩個(gè)浮點(diǎn)數(shù)是否相等??墒褂萌缦路绞剑篿f(fabs(a-b)1.e-6)fabs(x)是庫函數(shù),表示求x的絕對值14控制條件的幾種形式:思考a取不同的值時(shí),語句的執(zhí)行情況?提示#include “stdio.h” main() int a,b,s; scanf(“%d%
7、d”,&a,&b); s=a; if(a50) printf(%d,a); if (a40) printf(%d,a); if (a30) printf(%d,a);程序運(yùn)行: 輸入58, 輸出?585858 輸入30, 輸出?例216 指出下列程序的輸出結(jié)果:例216if(a=60) printf(“及格n”);else printf(“不及格n”);main() int a; scanf(“%d”,&a); if (a=60)main()輸出不及格的成績例317#include “stdio.h” main( ) int a,b,max; printf(Input a and b=); s
8、canf(%d%d,&a, &b); if ( ab ) max=a; else max=b; printf(The max of a and b is : %dn, max);ab?max=bmax=a非00求a和b兩數(shù)中較大的一個(gè)。例418#include “stdio.h” ab?max=bma#include “stdio.h” main( ) int a,b,t; printf(Input a and b=); scanf(%d%d,&a, &b); if ( ab ) t=a; a=b; b=t; printf(“%d,%dn, a,b);按由小到大的順序輸出兩個(gè)數(shù)。例519#in
9、clude “stdio.h” 按由小到大的順序輸出兩有關(guān)if語句的說明 表達(dá)式后面不加分號 語句之后有分號 else不是語句,不能單獨(dú)使用 當(dāng)if后有多個(gè)執(zhí)行語句時(shí),必須用 將多 個(gè)語句括起來,構(gòu)成一個(gè)復(fù)合語句, 之 外不必有分號。20有關(guān)if語句的說明 表達(dá)式后面不加分號204.3.2 if語句的嵌套格式:if(表達(dá)式) if( 表達(dá)式1) 語句11; else 語句12; else if (表達(dá)式2) 語句21; else 語句22;在if語句的“語句1”或“語句2”中又包含著if語句判斷表達(dá)式的值,若為非0,再判斷表達(dá)式1的值,非0執(zhí)行語句11,否則執(zhí)行語句12若表達(dá)式的值為0,再判斷
10、表達(dá)式2的值,非0執(zhí)行語句21,否則執(zhí)行語句22功能:外if內(nèi)嵌if214.3.2 if語句的嵌套格式:if(表達(dá)式)在if語句的下列程序段表示的數(shù)學(xué)式子? y=-1; if (x!=0) if (x0) y=2*sin(x); else y=0; 程序段表示的數(shù)學(xué)式1: 0 (x0)討論:給第二個(gè)if行加 后表示的數(shù)學(xué)式?程序段表示的數(shù)學(xué)式2: -1 (x0)數(shù)學(xué)式1程序可表示為:y=-1;if (x!=0) if (x0) y=2*sin(x); else y=0;思考強(qiáng)調(diào):if和else可成對出現(xiàn),也可不成對出現(xiàn),每個(gè)else都與距其最近的if配對。22下列程序段表示的數(shù)學(xué)式子? 程序段
11、表示的數(shù)學(xué)式1:討論:給 if 語句的常用格式: if(表達(dá)式1) 語句 1 else if(表達(dá)式2) 語句 2 else if(表達(dá)式3) 語句 3 else if(表達(dá)式m) 語句 m else 語句 n僅執(zhí)行表達(dá)式為真的else if后的內(nèi)嵌語句,若所有的表達(dá)式值都為0,則執(zhí)行最后一個(gè)else后的內(nèi)嵌語句.23 if 語句的常用格式:僅執(zhí)行表達(dá)式為真的else if后的 已知 編寫程序,輸入一個(gè)x的值,輸出y值。程序?yàn)椋?#include “stdio.h” main( ) int x, y; scanf(“%d”,&x); if(x0) y=-1; else if(x= 0) y=0
12、; else y=1; printf(“x=%d, y=%dn”, x, y); 例624程序?yàn)椋?例624switch語句 該語句為開關(guān)語句,適合解決多分支的情況。格式:switch(表達(dá)式) case 常量表達(dá)式:語句序列; case 常量表達(dá)式:語句序列; case 常量表達(dá)式n: 語句序列n; default :語句序列n+1; 說明:執(zhí)行順序如下:4.3.2 switch 語句問題: 為什么引出switch語句?可以是一條語句,也可以是多條語句。多條語句不必用括號括起來。起語句標(biāo)號的作用,不進(jìn)行條件判斷,在執(zhí)行完某個(gè) case后的語句序列后,將自動轉(zhuǎn)移到下一個(gè)case繼續(xù)執(zhí)行??梢允?/p>
13、整型、字符型。25switch語句 4.3.2 switch 語句可以是一條 a. 計(jì)算表達(dá)式的值; b. 找到與表達(dá)式的值相同的case常量表達(dá)式,執(zhí)行該case后邊的語句序列,之后依次往下執(zhí)行語句塊。表達(dá)式語句序列1語句序列2語句序列n語句序列n+1 26 a. 計(jì)算表達(dá)式的值;表達(dá)式語句序列1語句序列2語句序每個(gè)語句序列的最后一條語句后增加break語句,執(zhí)行流程為:表達(dá)式語句序列1語句序列n語句序列n+1語句序列227每個(gè)語句序列的最后一條語句后增加break語句,執(zhí)行流程為: 根據(jù)考試成績的等級打印出百分制分?jǐn)?shù)段。采用多分支情況程序段: switch( grade ) case A
14、: printf(“85100n”) ; break; case B : printf(“7084n”); break; case C: printf(“6069n”); break; case D :printf(“60n”); break; default : printf(“error ”); 若 grade= A時(shí),輸出結(jié)果為? 當(dāng) grade= B時(shí),輸出結(jié)果為?例728 根據(jù)考試成績的等級打印出百分制分?jǐn)?shù)流程圖為: grade輸出 “85100”輸出 “b ? a : b 若 a=3, b=2, 則 max=?說明: (1) 條件運(yùn)算符優(yōu)于賦值運(yùn)算符。 (2) 條件運(yùn)算符的結(jié)合方向
15、為“自右向左”。 如:當(dāng)a=1,b=2,c=3, d=4 時(shí),表達(dá)式 ab ? a : cd ? c : d , 值為:? 如: 若 x=1,y=0,a=3,b=-3 表達(dá)式 (yx?a:b)&a+b 值為:? 404.4 條件運(yùn)算符32條件運(yùn)算符:404.4 條件運(yùn)算符32(3) 條件表達(dá)式中的表達(dá)式的類型可以與表達(dá)式和表達(dá)式的類型不同。條件表達(dá)式值的類型為二者中較高的類型。如: xy ? 1.2 : 6 , 當(dāng)xy成立時(shí)條件表達(dá)式的值為1.2 ,否則為實(shí)型數(shù)據(jù)6.0。 c=xy ? 1 : s , 當(dāng)xy成立時(shí)c=1, 否則c= s。33(3) 條件表達(dá)式中的表達(dá)式的類型可以與表達(dá)式和表達(dá)
16、式if ( y0 )x=-y;elsex=y;(y0)?x=-y:x=y;等價(jià)等價(jià)x = (y0) ? -y:y;說明:if else可以完成與條件 運(yùn)算符( ? : )完全相同 的任務(wù),并且可以進(jìn)行 相應(yīng)的轉(zhuǎn)換。34if ( y0 )x=-y;(y=A& ch=Z)? (ch+32):ch; printf(“%c”, ch) 輸入 輸出 a例835 將輸入的大寫字母轉(zhuǎn)換為小寫字母.例835 判別某一年year是否閏年。閏年條件:能被整除,但不能被100整除,或能被整 除,又能被400整除。判斷閏年的邏輯表達(dá)式為:(year % 4= =0 & year % 100!0)| year % 40
17、0= =0)判斷非閏年的邏輯表達(dá)式為: (year % 4!= 0) | (year % 100 = = 0 & year % 400 != 0)36 判別某一年year是否閏年。36 main() /* 輸入今天的日期,顯示明天的日期。*/ int year,month,day; scanf(%d %d %d,&year,&month,&day); switch(month) case 1: case 3: case 5: case 7: case 8: case 10: case 12: if(day31) day=day+1; else if (month=12) year=year+1; month=1;day=1; else month=month+1;day=1;break; case 4: case 6: case 9: case 11: if(day30) day=day+1; else month=month+1;day=1;break; case 2: if(day28) day=day+1; else if(year%4=0&year%100!=0)|(year%400=0) if(day=29)month=month+1; day=
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年法律知識競賽搶答題庫及答案(共50題)
- 健康健身挑戰(zhàn)賽參賽協(xié)議
- 醫(yī)療行業(yè)模擬試題
- 事業(yè)單位崗位聘用協(xié)議
- 健康保險(xiǎn)代理銷售合作協(xié)議
- 關(guān)于產(chǎn)品研發(fā)方向決策會議的紀(jì)要
- 車輛維修服務(wù)記錄與統(tǒng)計(jì)表
- 醫(yī)療機(jī)構(gòu)托管經(jīng)營協(xié)議
- 食品安全法律法規(guī)試題集
- 電子商務(wù)行業(yè)商品退換貨保障合同
- 《新病歷書寫規(guī)范》課件
- 眼瞼腫物的護(hù)理查房課件
- 顧客提問的問題100條
- 全國優(yōu)質(zhì)課一等獎(jiǎng)職業(yè)學(xué)?!独L制切割類組合體的三視圖》課件
- 【自考復(fù)習(xí)資料】03011兒科護(hù)理學(xué)(二)復(fù)習(xí)重點(diǎn)
- 跳繩之雙腳跳教案
- 大象版小學(xué)科學(xué)四年級下冊5.1小船與浮力 教學(xué)課件
- 物資管理工作流程圖
- 中西式點(diǎn)心新手制作教程
- 讀書分享交流會《從一到無窮大》課件
- 高大模板支撐體系安全檢查驗(yàn)收表
評論
0/150
提交評論