第四章選擇結構程序設計(最終版)-2013(1)_第1頁
第四章選擇結構程序設計(最終版)-2013(1)_第2頁
第四章選擇結構程序設計(最終版)-2013(1)_第3頁
第四章選擇結構程序設計(最終版)-2013(1)_第4頁
第四章選擇結構程序設計(最終版)-2013(1)_第5頁
已閱讀5頁,還剩44頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

1、計算機科學學院計算機科學學院本章內容:4.1 4.1 關系運算及其表達式關系運算及其表達式4.2 4.2 邏輯運算及其表達式邏輯運算及其表達式4.3 if4.3 if語句語句4.4 switch4.4 switch語句語句4.5 4.5 選擇結構程序舉例選擇結構程序舉例請做練習請做練習計算機科學學院計算機科學學院4.1 關系運算及其表達式 所謂“關系運算”實際上就是“比較運算”,即將兩個數據進行比較,判定兩個數據是否符合給定的關系。 計算機科學學院計算機科學學院4.1.1 關系運算符及其優先次序1關系運算符關系運算符C語言提供語言提供6種關系運算符:種關系運算符: = = !=注意注意:在語言

2、中,“等于”關系運算符是雙等號“= =”,而不是單等號“= ”(賦值運算符)。計算機科學學院計算機科學學院4.1.1 關系運算符及其優先次序 = = !=2優先級優先級 (1)在關系運算符中,前)在關系運算符中,前4個優先級相同,個優先級相同,后后2個也相同,且前個也相同,且前4個高于后個高于后2個。個。 (2)與其它種類運算符的優先級關系)與其它種類運算符的優先級關系 關系運算符的優先級,低于算術運算符,但關系運算符的優先級,低于算術運算符,但高于賦值運算符。高于賦值運算符。計算機科學學院計算機科學學院4.1.2 關系表達式1關系表達式的概念關系表達式的概念 所謂關系表達式是指,用關系運算符

3、將兩所謂關系表達式是指,用關系運算符將兩個表達式連接起來,進行關系運算的式子。個表達式連接起來,進行關系運算的式子。 例如: 下面的關系表達式都是合法的: ab,a+bc-d,(a=3)=b,(ab)= =(bc)合法計算機科學學院計算機科學學院4.1.2 關系表達式 2關系表達式的值關系表達式的值邏輯值(非邏輯值(非“真真”即即“假假”)。)。 語言沒有邏輯型數據,用整數語言沒有邏輯型數據,用整數“”表表示示“邏輯真邏輯真”,用整數,用整數“”表示表示“邏輯假邏輯假”。 由于上述原因,關系表達式的值還可以參由于上述原因,關系表達式的值還可以參與其它種類的運算,例如算術運算、邏輯運算與其它種類

4、的運算,例如算術運算、邏輯運算等。等。計算機科學學院計算機科學學院例如,假設num1=3,num2=4,num3=5,則(1)num1num2的值0(2)(num1num2)!=num3的值1(3)num1num2num3的值1思考題思考題:任意改變num1或num2的值,會影響整個表達式的值嗎?為什么?(4)(num1=0) & (x10)(x5)! (x= =0)(year%4=0)&(year%100!=0)|(year%400=0)計算機科學學院計算機科學學院4.2.1 邏輯運算及其優先次序(2)運算規則)運算規則 1)&:當且僅當兩個運算量的值都為:當且僅當兩

5、個運算量的值都為“真真”時,運算結果為時,運算結果為“真真”,否則為,否則為“假假”。 2) | :當且僅當兩個運算量的值都為:當且僅當兩個運算量的值都為“假假”時,運算結果為時,運算結果為“假假”,否則為,否則為“真真”。 3) ! :當運算量的值為:當運算量的值為“真真”時,運算結果時,運算結果為為“假假”;當運算量的值為;當運算量的值為“假假”時,運算結時,運算結果為果為“真真”。例如,假定例如,假定x=5,則,則(x=0) & (x10)的的值為值為“真真”,(x5)的值為的值為“假假”。計算機科學學院計算機科學學院4.2.1 邏輯運算及其優先次序2邏輯運算符的運算優先級邏輯運

6、算符的運算優先級(1)邏輯非的優先級最高,邏輯與次之,)邏輯非的優先級最高,邏輯與次之,邏輯或最低,即:邏輯或最低,即:! & |(2)與其它種類運算符的優先關系)與其它種類運算符的優先關系 ! 算術運算算術運算 關系運算關系運算 & | 賦值運算賦值運算計算機科學學院計算機科學學院4.2.2 邏輯表達式1邏輯表達式的概念邏輯表達式的概念 所謂邏輯表達式是指,用邏輯運算符將所謂邏輯表達式是指,用邏輯運算符將關系表達式或邏輯量連接起來的式子。在關系表達式或邏輯量連接起來的式子。在C語語言中,用邏輯表達式表示多個條件的組合。言中,用邏輯表達式表示多個條件的組合。 邏輯表達式的值也是

7、一個邏輯值(非邏輯表達式的值也是一個邏輯值(非“真真”即即“假假”)。)。計算機科學學院計算機科學學院4.2.2 邏輯表達式2邏輯量的真假判定邏輯量的真假判定和非和非 語言用整數語言用整數“”表示表示“邏輯真邏輯真”、用用“”表示表示“邏輯假邏輯假”。但在判斷一個數據。但在判斷一個數據的的“真真”或或“假假”時,卻以和非為根據:時,卻以和非為根據:如果為,則判定為如果為,則判定為“邏輯假邏輯假”;如果為非,;如果為非,則判定為則判定為“邏輯真邏輯真”。練習:假設練習:假設num=12,則:,則:!num的值為?的值為?0num=1 num31的值為的值為1計算機科學學院計算機科學學院4.2.2

8、 邏輯表達式3說明說明 (1)邏輯運算符兩側的操作數,除可以是和非的)邏輯運算符兩側的操作數,除可以是和非的整數外,也可以是其它任何類型的數據,如實型、字整數外,也可以是其它任何類型的數據,如實型、字符型等。符型等。 (2)在計算邏輯表達式時,并不是所有的表達式都被)在計算邏輯表達式時,并不是所有的表達式都被求解,只有在必須執行下一個表達式才能求解時,才求解,只有在必須執行下一個表達式才能求解時,才求解該表達式。求解該表達式。 例如,假設例如,假設n1、n2、n3、n4、x、y的值分別為的值分別為1、2、3、4、1、1,則求解表達式,則求解表達式“(x=n1n2)&(y=n3n4)”后

9、,后,x的值變為,而的值變為,而y的的值不變,仍等于值不變,仍等于1!返回計算機科學學院計算機科學學院4.3 if語句和條件表達式4.3.1 if4.3.1 if語句語句4.3.2 if4.3.2 if語句的嵌套語句的嵌套4.3.3 4.3.3 條件運算符條件運算符返回計算機科學學院計算機科學學院4.3.1 if 語句if語句的形式語句的形式形式形式1:if (表達式表達式) 語句語句;表達式表達式語句語句YN計算機科學學院計算機科學學院4.3.1 if 語句if語句的形式語句的形式形式形式2:if (表達式表達式) 語句語句1 else 語句語句2;表達式表達式語句語句1YN語句語句2計算機

10、科學學院計算機科學學院4.3.1 if語句if語句的形式語句的形式形式形式3:if (表達式表達式1) 語句語句1; else if (表達式表達式2) 語句語句2; else if (表達式表達式3) 語句語句3; else if (表達式表達式m) 語句語句m; else 語句語句n;計算機科學學院計算機科學學院表達式表達式1表達式表達式2語句語句1表達式表達式3表達式表達式4語句語句2語句語句3語句語句4語句語句5YYYYNNNN計算機科學學院計算機科學學院4.3.1 if語句if語句的形式語句的形式說明說明:(1)表達式一般為關系表達式或邏輯表達式,也允許)表達式一般為關系表達式或邏輯

11、表達式,也允許是其它類型的數據,如,整型、實型、字符型等,若是其它類型的數據,如,整型、實型、字符型等,若表達式的值為表達式的值為0,則按假來處理,若表達式的值為非,則按假來處理,若表達式的值為非0,則按真來處理。則按真來處理。(2)第)第2、3種形式的種形式的if語句,每個語句,每個else前都有一個分號,前都有一個分號,else必須和必須和if配套使用。配套使用。(3)“語句語句1”和和“語句語句2”,可以只包含一個簡單語句,可以只包含一個簡單語句,也可以是復合語句。也可以是復合語句。計算機科學學院計算機科學學院4.3.1 if 語句例例4-1 輸入任意三個整數輸入任意三個整數n1、n2、

12、n3,求三個數中的最大值。,求三個數中的最大值。算法:算法:1.輸入三個數。輸入三個數。2.從前兩個數中選最大的賦值給從前兩個數中選最大的賦值給max。3.將將max與第三個數與第三個數n3比較比較,若若n3的值大于的值大于max,則將,則將其值賦給其值賦給max。4.輸出輸出max。請依據算法畫出流程圖請依據算法畫出流程圖計算機科學學院計算機科學學院給給n1、n2、n3輸入數值輸入數值n1n2max=n1YNmax=n2n3maxmax=n3YN輸出輸出max試寫程序試寫程序scanf(%d,%d,%d,&n1,&n2,&n3);if (n1n2) max=n1; e

13、lse max=n2;if (n3max) max=n3;printf(max=%dn,max);查看完整程序計算機科學學院計算機科學學院4.3.1 if語句例例4-1 輸入任意三個整數輸入任意三個整數n1、n2、n3,求三個數中的最大值。,求三個數中的最大值。#include “stdio.h”void main() int n1,n2,n3,max; printf(Please input three numbers:); scanf(%d,%d,%d,&n1,&n2,&n3); if (n1n2) max=n1; else max=n2; if (n3max) m

14、ax=n3; printf(The three numbers are:%d,%d,%dn,n1,n2,n3); printf(max=%dn,max);演示程序演示程序計算機科學學院計算機科學學院4.3.1 if語句例例4-2輸入任意三個數輸入任意三個數n1、n2、n3,按從大到小的順序排序輸出。,按從大到小的順序排序輸出。算法:算法:1.輸入三個數。輸入三個數。2.從從n1和和n2兩個數中選較大的賦值給兩個數中選較大的賦值給n1 ,較小的賦值給,較小的賦值給n2。3.從從n2和和n3兩個數中選較大的賦值給兩個數中選較大的賦值給n2 ,較小的賦值給,較小的賦值給n3。 4.從從n1和和n2兩

15、個數中選較大的賦值給兩個數中選較大的賦值給n1 ,較小的賦值給,較小的賦值給n2。5.輸出輸出n1、n2、n3。如果如果n1n2,交換交換n1和和n2的值,如的值,如何交換呢?何交換呢?計算機科學學院計算機科學學院4.3.1 if語句給給n1、n2、n3輸入數值輸入數值n1n2交換交換n1和和n2的值的值n2n3交換交換n2和和n3的值的值n1n2交換交換n1和和n2的值的值輸出輸出n1、n2、n3nyyynnscanf(%d,%d,%d,&n1,&n2,&n3);if (n1n2) temp=n1;n1=n2;n2=temp;if (n2n3) temp=n2;n2=

16、n3;n3=temp;if (n1n2) temp=n1;n1=n2;n2=temp;printf(%d,%d,%dn,n1,n2,n3);#include “stdio.h”void main() int n1,n2,n3,temp; printf(Please input three numbers:); scanf(%d,%d,%d,&n1,&n2,&n3); if (n1n2) temp=n1;n1=n2;n2=temp; if (n2n3) temp=n2;n2=n3;n3=temp; if (n1n2) temp=n1;n1=n2;n2=temp; prin

17、tf(Three numbers after sorted: %d,%d,%dn,n1,n2,n3);返回演示程序演示程序計算機科學學院計算機科學學院4.3.2 if語句的嵌套if語句的嵌套與嵌套匹配原則語句的嵌套與嵌套匹配原則 if語句允許嵌套。所謂語句允許嵌套。所謂if語句的嵌套是指,語句的嵌套是指,在在“語句語句1”或(和)或(和)“語句語句2”中,又包含有中,又包含有if語句的情況。語句的情況。 if語句嵌套時,語句嵌套時,else子句與子句與if的匹配原則:的匹配原則:與在它上面、距它最近、且尚未匹配的與在它上面、距它最近、且尚未匹配的if配對。配對。計算機科學學院計算機科學學院4.

18、3.2 if語句的嵌套例例4-3 有一個函數:有一個函數:編寫一個程序,輸入編寫一個程序,輸入x的值,輸出的值,輸出y的值。的值。Y=-101x0計算機科學學院計算機科學學院4.3.2 if語句的嵌套算法算法1:1.輸入輸入x。2.若若x0,y=1;5.輸出輸出y。輸入輸入xx0y=-1輸出輸出ynyyynnY=-1請同學們自己寫出程序。請同學們自己寫出程序。計算機科學學院計算機科學學院4.3.2 if語句的嵌套算法算法2:1.輸入輸入x。2.若若x=0, 若若x0,則則y=-1; 否則,否則, y=0; 否則,否則,y=1;3.輸出輸出y。輸入輸入xx=0 x0y=-1YNy=0y=1輸出輸

19、出yYN請同學們寫出程序請同學們寫出程序計算機科學學院計算機科學學院4.3.2 if語句的嵌套#include “stdio.h” void main( ) int x,y; scanf(“%d”,&x); if (x=0) if (x=A & ch=A & ch=A & ch=Z) ? (ch+32) : ch; printf(ch=%cn,ch);返回演示程序演示程序計算機科學學院計算機科學學院4.4 switch語句1switch語句的一般形式語句的一般形式switch(表達式表達式) case 常量表達式常量表達式1:語句組;:語句組;break; ca

20、se 常量表達式常量表達式2:語句組;:語句組;break; . case 常量表達式:語句組;常量表達式:語句組;break; default:語句組;:語句組;break; 計算機科學學院計算機科學學院4.4 switch語句2執行過程執行過程 (1)當)當switch后面后面“表達式表達式”的值,與某個的值,與某個case后后面的面的“常量表達式常量表達式”的值相同時,就執行該的值相同時,就執行該case后面后面的語句(組);當執行到的語句(組);當執行到break語句時,跳出語句時,跳出switch語句,轉向執行語句,轉向執行switch語句的下一條。語句的下一條。 (2)如果沒有任何

21、一個)如果沒有任何一個case后面的后面的“常量表達式常量表達式”的的值,與值,與“表達式表達式”的值匹配,則執行的值匹配,則執行default 后面的后面的語句(組)。然后,再執行語句(組)。然后,再執行switch語句的下一條。語句的下一條。計算機科學學院計算機科學學院4.4 switch語句3說明說明(1)switch后面的后面的“表達式表達式”,可以是,可以是int、char和枚和枚舉型中的一種。舉型中的一種。(2)每個)每個case后面后面“常量表達式常量表達式”的值,必須各不相的值,必須各不相同,否則會出現相互矛盾的現象(即對表達式的同一同,否則會出現相互矛盾的現象(即對表達式的同

22、一值,有兩種或兩種以上的執行方案)。值,有兩種或兩種以上的執行方案)。(3)case后面的常量表達式僅起語句標號作用,并不后面的常量表達式僅起語句標號作用,并不進行條件判斷進行條件判斷。系統一旦找到入口標號,就從此標號。系統一旦找到入口標號,就從此標號開始執行,不再進行標號判斷,所以必須加上開始執行,不再進行標號判斷,所以必須加上break語句,以便結束語句,以便結束switch語句。語句。計算機科學學院計算機科學學院4.4 switch語句(4)各)各case及及default子句的先后次序,子句的先后次序,不影響程序執行結果。不影響程序執行結果。(5)用)用switch語句實現的多分支結構

23、程語句實現的多分支結構程序,完全可以用序,完全可以用if語句或語句或if語句的嵌套語句的嵌套來實現。來實現。計算機科學學院計算機科學學院4.4 switch語句例例4-5 從鍵盤上輸入一個百分制成績從鍵盤上輸入一個百分制成績score,按下列原,按下列原則輸出其等級:則輸出其等級: score90,等級為,等級為A; 80score90,等級為,等級為B; 70score80,等級為,等級為C; 60score70,等級為,等級為D; score0輸出輸出“非二次非二次方程方程”輸出輸出兩個兩個相等相等的實的實根根ab2aacbbx2421aacbbx2422復根:復根:實部:實部:abp2虛

24、部:虛部:aacbq2)4(2輸出兩個實根:輸出兩個實根:x1,x2輸出兩個復根:輸出兩個復根:p+qi,p-qi例例4-7計算機科學學院計算機科學學院例例4-7#include math.hmain()float a,b,c,disc,x1,x2,p,q; scanf(“%f,%f,%f”, &a, &b, &c); disc=b*b-4*a*c; if (fabs(disc)1e-6) x1=(-b+sqrt(disc)/(2*a); x2=(-b-sqrt(disc)/(2*a); printf(x1=%7.2f,x2=%7.2fn, x1, x2); else p=-b/(2*a); q=sqrt(fabs(disc)/(2*a); printf(“x1=%7.2f + %7.2f in“, p, q); printf(”x2=%7.2f - %7.2f in“, p, q); 返回演示程序演示

溫馨提示

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

評論

0/150

提交評論