第4章程序的控制結構..3選擇結構_第1頁
第4章程序的控制結構..3選擇結構_第2頁
第4章程序的控制結構..3選擇結構_第3頁
第4章程序的控制結構..3選擇結構_第4頁
第4章程序的控制結構..3選擇結構_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 順序結構是最簡單的C語言程序結構,也是C語言程序中最常用的程序結構,其特點是完全按照語句出現(xiàn)的先后次序執(zhí)行程序。 順序結構沒有專用的控制語句,在該種結構中通常只包括:變量聲明語句、賦值語句、輸入/輸出函數(shù)語句等。 順序結構雖然簡單,但畢竟處理問題有限。4.2 順序結構順序結構4.3.1 關系運算符和關系表達式關系運算符和關系表達式4.3.2 邏輯運算符和邏輯表達式邏輯運算符和邏輯表達式4.3.3 if語句語句4.3.4 switch語句語句一一 關系運算符關系運算符C語言提供6種關系運算符: = (優(yōu)先級高) = != (優(yōu)先級低)二二 優(yōu)先次序優(yōu)先次序 前四種關系運算符的優(yōu)先級相同,后兩種

2、也相同。前四種高于后兩種。 關系運算符的優(yōu)先級低于算術運算符。 關系運算符的優(yōu)先級高于賦值運算符。4.3.1 關系運算符和關系表達式關系運算符和關系表達式算術運算符賦值運算符關系運算符 (低)(高)例如:例如: c a + b 等效于等效于 c (a + b) a b = c 等效于等效于 (a b) = c a = b c 等效于等效于 a = (b c)三三 關系表達式關系表達式 定義:定義: 用關系運算符將兩個表達式連接起來的式子。用關系運算符將兩個表達式連接起來的式子。例如:例如: a b , a + b b + c , (a = 3) (b = 5) , a b) (b b”的值為的

3、值為“真真”,即:關系表達式的值為,即:關系表達式的值為“1”。 “b + c b c f = ?再如再如 : f = 0.1 0.5 b) & (x y) (a b) | (x y) “!”是“一目(元)運算符”,只要求有一個運算量。例如:例如: ! (a b) 邏輯運算舉例例如:例如: a & b 若若a、b都為真,則都為真,則a & b為真。為真。 a | b 若若a、b之一為真,則之一為真,則a | b為真。為真。 !a 若若a為真,則為真,則 !a為假。為假。2. 邏輯運算符的優(yōu)先次序邏輯運算符的優(yōu)先次序 !(非) & (與) | (或) (“!”的優(yōu)

4、先級最高) 邏輯運算符中的“&”和“|”低于關系運算符,“!”高于算術運算符。!(非非)算術運算符算術運算符關系運算符關系運算符&賦值運算符賦值運算符(低低)(高)(高) |例如: a b & x y !a | a b 在在C語言中規(guī)定非零為語言中規(guī)定非零為“真真”,零為,零為“假假”例如:例如: 若若a = 4,則,則 !a 0 若若a = 4,b = 5,則,則 a &b 1 a = 4,b = 5,則,則 !a | b 1 4.3 & 0 | -0.52 1 a & b 1 !(0.1 0.6 0.9) & A 10) &

5、(y=5+4) & (z = 7)思考:計算表達式后以下變量和表達式的值 x = ? y =? z = ? 表達式的值為:?(x=3 , y、z變量的值“不確定”,表達式值為0)(2)“|”運算 (x = 1) | (y = 2) (z = 1) | (x + z) = y思考:計算表達式后以下變量和表達式的值 x = ? y =? z = ? 表達式的值為:?(x=1 , y、z變量的值“不確定”,表達式值為1)4.3.3 if語句語句 if語句是語句是選擇結構選擇結構的控制語句的控制語句。一一 if語句的三種形式語句的三種形式 if (表達式表達式) 語句;語句;注:為單分支控制結

6、構;注:為單分支控制結構; 其中表達式可是常量、變量、其中表達式可是常量、變量、函數(shù)和表達式,表示判別條件;函數(shù)和表達式,表示判別條件; 語句可是簡單或復合語句。語句可是簡單或復合語句。表達式表達式語句語句真假例例1:有一個函數(shù):有一個函數(shù): y=-1 x0編一程序,輸入一個編一程序,輸入一個x值,輸出值,輸出y值。值。#include int main(void)int x, y;printf(Please input x:);scanf(%d, &x);if (x 0) y = 1;printf(x=%d,y=%dn, x, y); return 0; 例例2:輸入任意三個整數(shù),然

7、后按從小到大的順序輸出。#include int main(void) int a, b, c, t; scanf(%d%d%d, &a, &b, &c); if (a b) t = a; a = b; b = t; if (a c) t = a; a = c; c = t; if (b c) t = b; b = c; c = t; printf(a=%d b=%d c=%dn, a, b, c); return 0;2. if(表達式表達式) 語句語句1 ; else 語句語句2;注意:雙分支控制結構;注意:雙分支控制結構; 當條件表達式值為真當條件表達式值為真(非

8、(非0)則選擇執(zhí)行)則選擇執(zhí)行語句語句1;當值為假(;當值為假(0)則選擇執(zhí)行語句則選擇執(zhí)行語句2。語句語句1表達式表達式語句語句2 假假真真例例3:輸入任意三個整數(shù),求其中的最大數(shù)。分析:分析:1.輸入a,b,c的值2.處理:求三個數(shù)的最大(?。?shù)算法:“兩兩比較”法3.輸出最大值#include int main(void)int a, b, c, max; printf(Please input a,b,c data: );scanf(%d%d%d, &a, &b, &c);if (a b)max = a;elsemax = b;if (c max)max = c

9、;printf(Max data is :%dn, max);return 0;3. if (表達式表達式1) 語句語句1 ; else if (表達式表達式2) 語句語句2; else if (表達式表達式m) 語句語句m ; else 語句語句n;表達式表達式2表達式表達式3表達式表達式1語句語句1語句語句2語句語句4語句語句3假假真真 真真真真假假假假多分支控制結構多分支控制結構例例4:有一個函數(shù):有一個函數(shù): y=-1 x0編一程序,輸入一個編一程序,輸入一個x值,輸出值,輸出y值。值。#include int main(void)int x, y;printf(Please inpu

10、t x:);scanf(%d, &x);if (x 0) y = -1;else if (x = 0)y = 0;else y = 1;printf(x=%d,y=%dn, x, y);return 0; 二二 if 語句的嵌套語句的嵌套 定義:定義: 在在if語句中又包含一個或多個語句中又包含一個或多個if語句,稱語句,稱為為if語句的嵌套。語句的嵌套。 一般形式:一般形式: if ( ) if ( ) 語句語句1; else 語句語句2; else if ( ) 語句語句3; else 語句語句4;例例4:有一個函數(shù):有一個函數(shù): y=-1 x0編一程序,輸入一個編一程序,輸入一個

11、x值,輸出值,輸出y值。值。#include int main(void)int x, y;printf(Please input x:);scanf(%d, &x);if (x =90,等級為“A”若80=score90,等級為“B”若70=score80,等級為“C”若60=score70,等級為“D”若score= 90) grade = A;else if (score = 80) grade = B;else if (score = 70) grade = C;else if (score = 60) grade = D;else grade = E;printf(“Scor

12、e=%.2f Grade=%cn”, score, grade);三三 條件運算符條件運算符1 .條件運算符(條件運算符(三目運算符三目運算符) 一般形式 表達式表達式1?表達式表達式2 : 表達式表達式3例如:例如: (a b) ? A : b 執(zhí)行過程表達式表達式1條件表達式取條件表達式取表達式表達式2的值的值條件表達式取條件表達式取表達式表達式3的值的值假假真真算術運算符關系運算符條件運算符賦值運算符(低)(高)2.幾點說明:幾點說明: 優(yōu)先級例如:例如:a b ? a : b + 1 等價于等價于 (a b) ? a : (b + 1)例例7:輸入一個字符,判別它是否大寫字母,如果是,

13、將它轉換成小寫字母;如果不是,不轉換。然后輸出最后得到的字符。#include int main(void)char ch;scanf(“%c”, &ch);ch = (ch = A & ch = A & ch = Z) ch = ch + 32; else ch = ch; 4.3.4 switch語句語句 switch語句是多分支選擇語句,用來實現(xiàn)多分支選擇結構。一一 、一般形式、一般形式switch (表達式表達式)case 常量表達式常量表達式1:語句:語句1 ; case 常量表達式常量表達式2:語句:語句2 ;case 常量表達式常量表達式3:語句:語句3;

14、 case 常量表達式常量表達式n:語句:語句n;default: 語句語句n+1;注意注意: (表達式)必須是有序類型:整型、字符型等。表達式)必須是有序類型:整型、字符型等。 switch-case語句僅僅是起一種開關的作用。語句僅僅是起一種開關的作用。switch語句的執(zhí)行流程表達式表達式常量1常量2常量3常量ndefault語句1語句2語句3語句n語句n+1注意:當起用某個開關后,其實質是一種順序執(zhí)行流程。switch語句的另一種形式二、在二、在switch結構中可選用結構中可選用break子句子句switch (表達式表達式)case 常量表達式常量表達式1:語句:語句1 ; bre

15、ak;case 常量表達式常量表達式2:語句:語句2 ; break;case 常量表達式常量表達式3:語句:語句3; break; case 常量表達式常量表達式n:語句:語句n; break;default: 語句語句n+1;注意:加上注意:加上break子句將改變原來的順序執(zhí)行流程。子句將改變原來的順序執(zhí)行流程。switch語句的另一種執(zhí)行流程表達式表達式常量1常量2常量3常量ndefault語句1語句2語句3語句n語句n+1breakbreakbreakbreak注意:加注意:加break后,已經(jīng)不再是順序執(zhí)行流程了。后,已經(jīng)不再是順序執(zhí)行流程了。例例8:輸入任意的日期值,求該日期是該

16、年的輸入任意的日期值,求該日期是該年的第幾天。第幾天。#include int main(void) int y, m, d, len; printf(“Please input year,month,day data:”); scanf(“%d%d%d”, &y, &m, &d); len = d; switch (m - 1) case 11: len += 30; case 10: len += 31; case 9: len += 30; case 8: len += 31; case 7: len += 31; case 6: len += 30; case

17、5: len += 31; case 4: len += 30; case 3: len += 31; case 2: len += (y % 4 = 0 & y % 100 !=0)| (y % 400 = 0) ? 29:28; case 1: len += 31; printf(“Len = %dn”, len); return 0;例例9:輸入任意的年份與月份,求該年該月有輸入任意的年份與月份,求該年該月有幾天?幾天?#include int main(void) int y, m, d; printf(“Please input year,month data:”); sca

18、nf(“%d%d”, &y, &m); switch (m) case 12: case 10: case 8: case 7: case 5: case 3: case 1: d = 31;break; case 11 : case 9: case 6: case 4: d = 30;break; case 2: d = (y % 4 = 0 & y % 100 !=0)| (y % 400 = 0) ? 29:28; default: printf(“error!n); return 0; printf(“Day = %dn”, day); return 0;例例1

19、0:要求按照考試成績的等級打印出百分要求按照考試成績的等級打印出百分制分數(shù)段。制分數(shù)段。#include int main(void)char grade; scanf(%c, &grade); switch (grade) case A:printf(85100n); case B:printf(7084n); case C:printf(6069n); case D:printf(60n); default :printf(errorn); return 0;不用不用break語句語句#include int main(void)char grade; scanf(%c, &

20、;grade); switch (grade) case A:printf(85100n);break; case B:printf(7084n);break; case C:printf(6069n);break; case D:printf(60n);break; default :printf(errorn); return 0;使用使用break語句語句例例11:思考:以下程序的功能是什么?:思考:以下程序的功能是什么?#include int main(void ) char grade; scanf(%c, &grade); switch (grade) case A: case B:case C:case D:printf(“60n);break;default:printf(“60n); return 0;多個多個case可以共用一組執(zhí)行語句可以共用一組執(zhí)行語句switch語句編程舉例語句編程舉例:例例12:編寫一個簡單計算器程序,輸入格式編寫一個簡單計算器程序,輸入格式為:為:data1 op data2。其中。其中data1和和data2是參加是參加運算的兩個數(shù)運算的兩個數(shù)(data1、data2必須定義為必須定義為int,但二者相加可能超出但二者相加可能超出int

溫馨提示

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

評論

0/150

提交評論