C語言程序ch4 選擇結構ppt課件_第1頁
C語言程序ch4 選擇結構ppt課件_第2頁
C語言程序ch4 選擇結構ppt課件_第3頁
C語言程序ch4 選擇結構ppt課件_第4頁
C語言程序ch4 選擇結構ppt課件_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、本章要點:正確使用關系表達式和邏輯表達式掌握用if語句和switch語句實現(xiàn)選擇結構掌握條件運算符的使用 選擇語句是控制程序執(zhí)行選擇結構的語句選擇語句是控制程序執(zhí)行選擇結構的語句 是程序實現(xiàn)邏輯判斷的唯一形式是程序實現(xiàn)邏輯判斷的唯一形式 根據(jù)學生分數(shù)判斷是否及格根據(jù)學生分數(shù)判斷是否及格 根據(jù)學生分數(shù)如何進行分級根據(jù)學生分數(shù)如何進行分級 一元二次方程求解一元二次方程求解自然語言:假設自然語言:假設 那么那么 否則否則C語言:語言:分支語句分支語句如何解決如何解決?4.4. 關系運算符和關系表達式關系運算符和關系表達式.1.1 .1.1 關系運算符關系運算符 1. 1.關系運算符關系運算符 關系運

2、算是進行比較大小的運算,并產生運關系運算是進行比較大小的運算,并產生運算結果算結果1 1真或真或 0 0假)。假)。語言中的關系運算符有種語言中的關系運算符有種: : 、!、!優(yōu)先次序:前種同級,高于后種后種優(yōu)先次序:前種同級,高于后種后種同級)同級)關系運算符的結合性為從左到右;關系運算符的結合性為從左到右; 算術運算符算術運算符 (高高)關系運算符關系運算符賦值運算符賦值運算符 (低低)如:如:32 ab)(bb)(bc) 、ab ay xy 、s+fds+fd 關系表達式的值為邏輯值關系表達式的值為邏輯值“真或真或“假假”. ”. 留意留意: : 語言沒有邏輯型數(shù)據(jù),關系表達式的語言沒有

3、邏輯型數(shù)據(jù),關系表達式的真、假真、假 是以數(shù)值是以數(shù)值“代表代表“真真”,以,以“代表代表“假假”。 例例 :設:設 a=3, b=2, c=1 a=3, b=2, c=1 ,求下列表達式,求下列表達式的值?的值? cb; cb; (a-b)=1; (a-b)=1; (b+c)a; (b+c)34 a=534設有變量定義 int z; 分析z%2=0 的值? 如果z為偶數(shù),那么 z%2=0的值為1; 否則z為奇數(shù),那么 z%2=0的值為0; 因此,z%2=0是斷言“z是偶數(shù)的c語言判斷式。2. x與y的個位數(shù)字相同 x%10=y%10 如何判斷十位數(shù)上數(shù)字相同?4.2.1 4.2.1 邏輯運算

4、符邏輯運算符 C C語言提供三種邏輯運算符:語言提供三種邏輯運算符: & ( & (邏輯與邏輯與) ) 、 | ( | (邏輯或邏輯或) ) 、! (! (邏輯非邏輯非) )闡明闡明: :(1 1)“&”“&”和和“| ”“| ”是是“雙目元運算符雙目元運算符”,”,它要它要求有兩個操作數(shù)。求有兩個操作數(shù)。(2 2)“! ”“! ”是是“單目元運算符單目元運算符”,只要求有一個,只要求有一個運算量。運算量。(3 3優(yōu)先級次序:優(yōu)先級次序:! & | ! & | 4.2 4.2 邏輯運算符和邏輯表達式邏輯運算符和邏輯表達式 a&b a a&

5、amp;b a、b b均為真,均為真, 則則a&ba&b為為1 1真)。真)。 a|b a a|b a、b b之一為真,則之一為真,則a|ba|b為為1 1真)。真)。 !a !a 若若a a為真為真, ,那么那么!a!a為假。為假。 ?。ǚ牵?(高)算術運算符 關系運算符& 和 |賦值運算符 (低)4.2.2 4.2.2 邏輯表達式邏輯表達式用邏輯運算符將關系表達式或邏輯量連接起來的式子用邏輯運算符將關系表達式或邏輯量連接起來的式子. .留意:規(guī)定:判斷一個邏輯量為留意:規(guī)定:判斷一個邏輯量為“真、假的方法:真、假的方法: “ “非代表非代表“真真”,“代表代表“假假

6、” 例例 : 寫出寫出1x101x1&x10 1x1&x10 1x3&2|83&2|84!0!0 例例 :a+bc&c=d a+bn+3a-!d|mn+3 例例 :(m=ab)&(n=c-d) (m=ab)&(n=c-d) 若若a=3,b=2,c=6,d=5,n=8 a=3,b=2,c=6,d=5,n=8 例例 :a|b|c a|b|c 如果如果a a為真,就不再判斷為真,就不再判斷b b和和c c了了 強調:在邏輯表達式的求解過程中強調:在邏輯表達式的求解過程中, ,只要能確定只要能確定表達式的值表達式的值, ,就不繼續(xù)向下求解其他的值

7、了就不繼續(xù)向下求解其他的值了. .(a+b)(n+3)(53)&2|(8b) x=a;: if (ab) x=a;1. 單選擇單選擇if語句語句 語句語句零零表達式表達式非零非零表達式可以是關系式或邏輯式表達式可以是關系式或邏輯式4.3 選擇語句選擇語句4.3.1 if 語句語句2. 雙選擇雙選擇if語句語句語句格式語句格式: :if (if (表達式表達式) ) 語句組語句組1; 1; else else 語句組語句組2;2;功能:功能:當表達式為非零時執(zhí)行語句組當表達式為非零時執(zhí)行語句組1否則執(zhí)行語句組否則執(zhí)行語句組2。APB非零非零零零3.3.控制條件的表示控制條件的表示 #in

8、clude “stdio.h” #include “stdio.h” main() main() int a,b,c=25; int a,b,c=25; a=10c; a=10c; b=a=a; b=a=a; printf(“a=%d,b=%d”,a,b); printf(“a=%d,b=%d”,a,b); if(c) printf(“c=%d”,c); if(c) printf(“c=%d”,c); 運行結果:運行結果:控制條件的幾種形式:控制條件的幾種形式: if(a=0) k=1; if(a=0) k=1; if(a=0) k=1; if(a=0) k=1; if(a!=0) k=1;

9、if(a!=0) k=1; if(a) k=1; if(a) k=1; if(1) k=1; if(1) k=1;思考思考a取不同的值時,語句的執(zhí)行情況?取不同的值時,語句的執(zhí)行情況?提示:不要用提示:不要用“=“比較兩個浮點數(shù)是否相等。比較兩個浮點數(shù)是否相等??墒褂萌缦路绞剑嚎墒褂萌缦路绞剑篿f(fabs(a-b)1.e-6)fabs(x)是庫函數(shù),表示求是庫函數(shù),表示求x的絕對值的絕對值#include “stdio.h” #include “stdio.h” main()main() int a,b,s; int a,b,s; scanf(“%d%d”,&a,&b); s

10、canf(“%d%d”,&a,&b); s=a; s=a; if(ab) s=b; if(a50) printf(%d,a); if (a50) printf(%d,a); if (a40) printf(%d,a); if (a40) printf(%d,a); if (a30) printf(%d,a); if (a30) printf(%d,a); 程序運行程序運行: : 輸入輸入5858, 輸出輸出? ? 輸入輸入3030, 輸出?輸出?if(a=60) printf(“及格及格n”);else printf(“不及格不及格n”);main() int a; scanf

11、(“%d”,&a); if (ab ) max=a; else max=b; printf(The max of a and b is : %dn, max);ab?max=bmax=a非非00求求a a和和b b兩數(shù)中較大的一個。兩數(shù)中較大的一個。有關有關if語句的說明語句的說明l 表達式后面不加分號表達式后面不加分號l 語句之后有分號語句之后有分號l else不是語句,不能單獨使用不是語句,不能單獨使用l 當當if后有多個執(zhí)行語句時,必須用后有多個執(zhí)行語句時,必須用 將多將多l(xiāng) 個語句括起來,構成一個復合語句,個語句括起來,構成一個復合語句, 之之 外不必有分號。外不必有分號。#i

12、nclude “stdio.h” main( ) int a,b; printf(Input a and b=); scanf(%d%d,&a, &b); if ( ab ) t=a; a=b; b=t; printf(“%d,%dn, a,b);按由小到大的順序輸出兩個數(shù)。按由小到大的順序輸出兩個數(shù)。有關有關if語句的說明語句的說明l 表達式后面不加分號表達式后面不加分號l 語句之后有分號語句之后有分號l else不是語句,不能單獨使用不是語句,不能單獨使用l 當當if后有多個執(zhí)行語句時,必須用后有多個執(zhí)行語句時,必須用 將多將多l(xiāng) 個語句括起來,構成一個復合語句,個語句括起

13、來,構成一個復合語句, 之之 外不必有分號。外不必有分號。4.3.2 if語句的嵌套語句的嵌套格式:格式:if表達式)表達式) if( 表達式表達式1) 語句語句11; else 語句語句12; else if (表達式表達式2) 語句語句21; else 語句語句22;在在ifif語句的語句的“語句語句1 1或或“語句語句2 2中又包含著中又包含著ifif語句語句判斷表達式的值,若為非判斷表達式的值,若為非0,再判斷表達式,再判斷表達式1的的值,非值,非0執(zhí)行語句執(zhí)行語句11,否則執(zhí)行語句,否則執(zhí)行語句12若表達式的值為若表達式的值為0,再判斷表達式,再判斷表達式2的值,非的值,非0執(zhí)行語句

14、執(zhí)行語句21,否則執(zhí)行語句,否則執(zhí)行語句22功能:功能:外if內嵌if下列程序段表示的數(shù)學式子下列程序段表示的數(shù)學式子? ? y=-1; y=-1; if (x!=0) if (x!=0) if (x0) y=2 if (x0) y=2* *sin(x);sin(x); else y=0; else y=0; 程序段表示的數(shù)學式程序段表示的數(shù)學式1:1: 0 (x0) 0 (x0) 2sinx (x0)討論討論: :給第二個給第二個ifif行加行加 后表示的數(shù)學式?后表示的數(shù)學式? 程序段表示的數(shù)學式程序段表示的數(shù)學式2:2: -1 (x0) -1 (x0) 2sinx (x0)數(shù)學式數(shù)學式1

15、 1程序可表示為程序可表示為: :y=-1;y=-1;if (x!=0)if (x!=0) if (x0) y=2 if (x0) y=2* *sin(x);sin(x); else y=0; else y=0;思索 if 語句的常用格式:語句的常用格式: if(表達式表達式1) 語句語句 1 else if(表達式表達式2) 語句語句 2 else if(表達式表達式3) 語句語句 3 else if(表達式表達式m) 語句語句 m else 語句語句 n僅執(zhí)行表達式為真的僅執(zhí)行表達式為真的else if后的內嵌語句后的內嵌語句,若所有的若所有的表達式值都為表達式值都為0,則執(zhí)行最后一個則執(zhí)

16、行最后一個else后的內嵌語句后的內嵌語句. 知知 編寫程序,輸入一個編寫程序,輸入一個x x的值,輸出的值,輸出y y值。值。010001)(xxxxy程序為:程序為: #include “stdio.h” main( ) int x, y; scanf(“%d”,&x); if(x0) y=-1; else if(x= 0) y=0; else y=1; printf(“x=%d, y=%dn”, x, y); 例例4-3從鍵盤輸入一個字符,當該字符是從鍵盤輸入一個字符,當該字符是+、 、*、/時,時,顯示對應的英文單詞,否則顯示顯示對應的英文單詞,否則顯示Error!。#incl

17、ude stdio.h main( ) char c; c=getchar( ); if(c= =+ ) printf( plusn ); else if(c= = ) printf( minusn ); else if(c= = * ) printf( multiplicationn ); else if(c= = / ) printf( divisionn ); else printf( Error!n ); 4.3.3 switch語句語句 該語句為開關語句,解決多分支的情況。該語句為開關語句,解決多分支的情況。格式:格式: switch(表達式)表達式) 變量定義變量定義 case 常

18、量表達式:常量表達式:語句序列語句序列 case 常量表達式:常量表達式:語句序列語句序列 case 常量表達式常量表達式n:語句序列語句序列 n default :語句序列:語句序列 n+1 功能:從多條可供選擇的執(zhí)行流程中選擇一條功能:從多條可供選擇的執(zhí)行流程中選擇一條闡明:闡明:(1) 表達式可以是整型、字符型、枚舉數(shù)表達式可以是整型、字符型、枚舉數(shù)據(jù)型的表達式。據(jù)型的表達式。 (2)“常量表達式常量表達式1”、“常量表達式常量表達式2”“常量表達式常量表達式n的值必須互的值必須互 不相不相同。同。 a. a. 計算表達式的值;計算表達式的值; b. b. 找到與表達式的值相同的找到與表

19、達式的值相同的casecase常量表達式,執(zhí)行該常量表達式,執(zhí)行該casecase后邊的語句序列,之后依次往下執(zhí)行語句塊。后邊的語句序列,之后依次往下執(zhí)行語句塊。表達式語句序列1語句序列2語句序列n語句序列n+1 每個語句序列的最后一條語句后增加每個語句序列的最后一條語句后增加break語句,執(zhí)行流程為:語句,執(zhí)行流程為:表達式語句序列1語句序列n語句序列n+1語句序列2 根據(jù)考試成績的等級打印出百分制分數(shù)段。根據(jù)考試成績的等級打印出百分制分數(shù)段。采用多分支情況程序段:采用多分支情況程序段: switch( grade ) case A : printf(“85100n”) ; break;

20、case B : printf(“7084n”); break; case C: printf(“6069n”); break; case D :printf(“60n”); break; default : printf(“error ”); 假設假設 grade= A時,輸出結果為時,輸出結果為? 當當 grade= B時,輸出結果為?時,輸出結果為?流程圖為:流程圖為: grade輸出 “85100”輸出 “b ? a : b max=ab ? a : b 假設假設 a=3, b=2, a=3, b=2, 那么那么 max=?max=?闡明:闡明: (1) (1) 條件運算符優(yōu)于賦值運算

21、符。條件運算符優(yōu)于賦值運算符。 (2) (2) 條件運算符的結合方向為條件運算符的結合方向為“自右向左自右向左”。 如:當如:當a=1,b=2,c=3, d=4 a=1,b=2,c=3, d=4 時,時,表達式表達式 ab ? a : cd ? c : d , ab ? a : cd ? c : d , 值為:值為:? ? 如:如: 假設假設 x=1,y=0,a=3,b=-3 x=1,y=0,a=3,b=-3 表達式表達式 (yx?a:b)&a+b (yx?a:b)&a+b 值為:?值為:? 404.4 條件運算符條件運算符(3) 條件表達式中的表達式的類型可以與表達式條件表達

22、式中的表達式的類型可以與表達式和表達式的類型不同。條件表達式值的類和表達式的類型不同。條件表達式值的類型為二者中較高的類型。型為二者中較高的類型。如:如: xy ? 1.2 : 6 , 當當xy成立時條件表達式的值為成立時條件表達式的值為1.2 ,否則為實型數(shù)據(jù),否則為實型數(shù)據(jù)6.0。 c=xy ? 1 : s , 當當xy成立時成立時c=1, 否則否則c= s。if ( y0 ) x=-y;elsex=y;(y0)?x=-y:x=y;等價等價等價等價x = (y=A& ch=A& ch=3000) c=12; else c= s / 250; switch( c ) case

23、 0: d=0 ; break ; case 1: d=2 ; break ; case 2: case 3: d=5; break; case 4: case 5:多個多個case可共用一可共用一組執(zhí)行語句組執(zhí)行語句 case 6: case 7: d=8 ; break ; case 8: case 9: case 10: case 11: d=10 ; break ; case 12: d=15 ; break ; f=p*w*s*(1-d/100.0) ; printf(“freight=%15.4f ”, f ); 運轉:100,20,300結果:freight= 588000.00

24、00例4-6 通過鍵盤輸入三個整數(shù),按照由小到大的順序輸出。 算法分析:在對三個數(shù)進行排序時,首先將第一個數(shù)依次與后面的兩個數(shù)進行比較,若第一個數(shù)比后面的數(shù)大,則交換兩個數(shù)據(jù)的值,這樣即可將三個數(shù)中最小的數(shù)放在最前面;然后將后面的兩個數(shù)進行比較,若第二個數(shù)大于第三個數(shù),繼續(xù)交換兩個數(shù)據(jù)的值。如此可將三個數(shù)按照由小到大的順序進行排列。 #include stdio.hmain( ) int a,b,c,t; printf(Please input 3 integers:n); scanf(%d%d%d, &a,&b,&c); if(ab) t=a; a=b; b=t; if(ac) t=a; a=c; c=t; if(bc) t=b; b=c; c=t; printf(The sorted number is: %d %d %d

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論