![第03章 選擇結(jié)構(gòu)_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/20/e502a5fd-8d6b-422e-b9b9-e505740de8b9/e502a5fd-8d6b-422e-b9b9-e505740de8b91.gif)
![第03章 選擇結(jié)構(gòu)_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/20/e502a5fd-8d6b-422e-b9b9-e505740de8b9/e502a5fd-8d6b-422e-b9b9-e505740de8b92.gif)
![第03章 選擇結(jié)構(gòu)_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/20/e502a5fd-8d6b-422e-b9b9-e505740de8b9/e502a5fd-8d6b-422e-b9b9-e505740de8b93.gif)
![第03章 選擇結(jié)構(gòu)_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/20/e502a5fd-8d6b-422e-b9b9-e505740de8b9/e502a5fd-8d6b-422e-b9b9-e505740de8b94.gif)
![第03章 選擇結(jié)構(gòu)_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/20/e502a5fd-8d6b-422e-b9b9-e505740de8b9/e502a5fd-8d6b-422e-b9b9-e505740de8b95.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、目錄3.1 結(jié)構(gòu)化程序設(shè)計(jì)概述結(jié)構(gòu)化程序設(shè)計(jì)概述3.2 關(guān)系運(yùn)算符與關(guān)系表關(guān)系運(yùn)算符與關(guān)系表達(dá)式達(dá)式3.3 邏輯邏輯運(yùn)算符與邏輯表運(yùn)算符與邏輯表達(dá)式達(dá)式3.4 條件運(yùn)算符與條件表?xiàng)l件運(yùn)算符與條件表達(dá)式達(dá)式3.5 if語句語句3.6 switch語句語句教學(xué)目標(biāo)教學(xué)目標(biāo)理解理解C程序的基本結(jié)構(gòu)程序的基本結(jié)構(gòu)理解基本流程控制結(jié)構(gòu)理解基本流程控制結(jié)構(gòu)掌握掌握C語言語句的分類語言語句的分類掌握掌握if語句的多種使用方法語句的多種使用方法掌握掌握switch語句的用法語句的用法會(huì)用流程控制語句解決簡單問題會(huì)用流程控制語句解決簡單問題了解程序的錯(cuò)誤類型和調(diào)試技術(shù)了解程序的錯(cuò)誤類型和調(diào)試技術(shù)數(shù)據(jù)結(jié)構(gòu):描述數(shù)
2、據(jù)的類型及組織形式。數(shù)據(jù)結(jié)構(gòu):描述數(shù)據(jù)的類型及組織形式。算法:描述對(duì)指定數(shù)據(jù)的操作方法和步驟。算法:描述對(duì)指定數(shù)據(jù)的操作方法和步驟。 程序程序 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu) 算法算法數(shù)據(jù)結(jié)構(gòu)是程序的核心數(shù)據(jù)結(jié)構(gòu)是程序的核心算法是程序的靈魂算法是程序的靈魂程序設(shè)計(jì)的關(guān)鍵是合理組織數(shù)據(jù)結(jié)構(gòu)和設(shè)計(jì)算法程序設(shè)計(jì)的關(guān)鍵是合理組織數(shù)據(jù)結(jié)構(gòu)和設(shè)計(jì)算法順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu): 3種基本結(jié)構(gòu)的特點(diǎn):種基本結(jié)構(gòu)的特點(diǎn): 單入口和單出口單入口和單出口 結(jié)構(gòu)中的每個(gè)部分都有可能被執(zhí)行結(jié)構(gòu)中的每個(gè)部分都有可能被執(zhí)行 結(jié)構(gòu)內(nèi)不應(yīng)出現(xiàn)永不終止的循環(huán)結(jié)構(gòu)內(nèi)不應(yīng)出現(xiàn)永不終止的循環(huán)結(jié)構(gòu)化程序設(shè)計(jì)方法:結(jié)構(gòu)
3、化程序設(shè)計(jì)方法:用用3種基本算法結(jié)構(gòu)設(shè)計(jì)程序。種基本算法結(jié)構(gòu)設(shè)計(jì)程序。E.Dijkstra等人于等人于1972年提出年提出公認(rèn)的具有公認(rèn)的具有“良好風(fēng)格良好風(fēng)格”的程序設(shè)計(jì)方法的程序設(shè)計(jì)方法源于軟件危機(jī)后,對(duì)源于軟件危機(jī)后,對(duì)goto語句的爭論語句的爭論結(jié)構(gòu)化程序設(shè)計(jì)方法的理論基礎(chǔ):結(jié)構(gòu)化程序設(shè)計(jì)方法的理論基礎(chǔ):Bohm、Jacopini證明,解決證明,解決任何問題的算法都可表示為順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的任何問題的算法都可表示為順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的組合。組合。結(jié)構(gòu)化程序設(shè)計(jì)方法的優(yōu)點(diǎn):結(jié)構(gòu)化程序設(shè)計(jì)方法的優(yōu)點(diǎn):結(jié)構(gòu)清晰,易于理解,易于驗(yàn)證其結(jié)構(gòu)清晰,易于理解,易于驗(yàn)證其正確性,
4、也易于查錯(cuò)和排錯(cuò)。正確性,也易于查錯(cuò)和排錯(cuò)。 C語言的語句完全支持結(jié)構(gòu)化程序設(shè)計(jì)方法!語言的語句完全支持結(jié)構(gòu)化程序設(shè)計(jì)方法!一個(gè)一個(gè)C源程序:源程序:至少由一個(gè)源程序文件組成。至少由一個(gè)源程序文件組成。一個(gè)源程序文件:一個(gè)源程序文件:通常由編譯預(yù)處理命令、數(shù)據(jù)類型、變量和函通常由編譯預(yù)處理命令、數(shù)據(jù)類型、變量和函數(shù)的定義所組成。數(shù)的定義所組成。一個(gè)函數(shù):一個(gè)函數(shù):通常由編譯預(yù)處理命令、數(shù)據(jù)類型、變量的定義,以通常由編譯預(yù)處理命令、數(shù)據(jù)類型、變量的定義,以及若干語句所組成。及若干語句所組成。語句分為:語句分為:說明語句和可執(zhí)行語句。說明語句和可執(zhí)行語句。說明語句或聲明語句:說明語句或聲明語句:指
5、數(shù)據(jù)類型的定義、變量的定義和函數(shù)的定義。指數(shù)據(jù)類型的定義、變量的定義和函數(shù)的定義。說明語句必須置于可執(zhí)行語句之前,否則編譯源程說明語句必須置于可執(zhí)行語句之前,否則編譯源程序時(shí)會(huì)產(chǎn)生語法錯(cuò)誤。序時(shí)會(huì)產(chǎn)生語法錯(cuò)誤。表達(dá)式語句:表達(dá)式語句:表達(dá)式后加一個(gè)分號(hào)構(gòu)成。例如:表達(dá)式后加一個(gè)分號(hào)構(gòu)成。例如: j+=10;函數(shù)調(diào)用語句:函數(shù)調(diào)用語句:函數(shù)調(diào)用后加一個(gè)分號(hào)構(gòu)成。例如:函數(shù)調(diào)用后加一個(gè)分號(hào)構(gòu)成。例如: cos(x);空語句:空語句:僅由一個(gè)分號(hào)構(gòu)成,不執(zhí)行任何動(dòng)作。主要用于指明被僅由一個(gè)分號(hào)構(gòu)成,不執(zhí)行任何動(dòng)作。主要用于指明被轉(zhuǎn)向的控制點(diǎn)或在特殊情況下做循環(huán)體。轉(zhuǎn)向的控制點(diǎn)或在特殊情況下做循環(huán)體。
6、復(fù)合語句:復(fù)合語句:也稱也稱塊語句塊語句。用一對(duì)花括號(hào)把一個(gè)或多個(gè)語句括起來后構(gòu)成。用一對(duì)花括號(hào)把一個(gè)或多個(gè)語句括起來后構(gòu)成。看成一個(gè)語句,廣泛用于控制語句??闯梢粋€(gè)語句,廣泛用于控制語句。控制語句:控制語句:可能改變程序執(zhí)行順序的語句??赡芨淖兂绦驁?zhí)行順序的語句。選擇語句:選擇語句:if、switch循環(huán)語句:循環(huán)語句:for、while、dowhile轉(zhuǎn)向語句:轉(zhuǎn)向語句:break、continue、goto、return二元運(yùn)算符,用來比較兩個(gè)操作數(shù)之間的關(guān)系,二元運(yùn)算符,用來比較兩個(gè)操作數(shù)之間的關(guān)系,其優(yōu)先級(jí)比算術(shù)運(yùn)算符低,但比賦值運(yùn)算符高。共有六個(gè):其優(yōu)先級(jí)比算術(shù)運(yùn)算符低,但比賦值運(yùn)
7、算符高。共有六個(gè): 字符型、整型、實(shí)型、枚舉類型以字符型、整型、實(shí)型、枚舉類型以及指針類型及指針類型左結(jié)合性左結(jié)合性 、= 、=優(yōu)先級(jí)相同優(yōu)先級(jí)相同=、!=!=優(yōu)先級(jí)相同優(yōu)先級(jí)相同優(yōu)先級(jí)高優(yōu)先級(jí)高 低低初學(xué)者常常誤將初學(xué)者常常誤將 = = 當(dāng)作當(dāng)作 = 使使用用用關(guān)系運(yùn)算符將操作數(shù)連接起來的式子。關(guān)系表用關(guān)系運(yùn)算符將操作數(shù)連接起來的式子。關(guān)系表達(dá)式的值為整數(shù)達(dá)式的值為整數(shù)0或或1。關(guān)系成立時(shí),結(jié)果為。關(guān)系成立時(shí),結(jié)果為1;否則,結(jié)果為;否則,結(jié)果為0。(132:值為:值為0。因它等價(jià)于。因它等價(jià)于(43)2。abc的含義并不是的含義并不是a大于大于b且且b大于大于c。實(shí)現(xiàn)邏輯運(yùn)算,表達(dá)復(fù)雜條件
8、。實(shí)現(xiàn)邏輯運(yùn)算,表達(dá)復(fù)雜條件。 ! 邏輯非邏輯非(單目單目) & 邏輯與邏輯與(二目二目) | 邏輯或邏輯或(二目二目)!的優(yōu)先級(jí)最高,高于算術(shù)運(yùn)算符,為右結(jié)合性。的優(yōu)先級(jí)最高,高于算術(shù)運(yùn)算符,為右結(jié)合性。&的優(yōu)先級(jí)低于的優(yōu)先級(jí)低于!,但高于,但高于|,但兩者均比關(guān)系運(yùn)算,但兩者均比關(guān)系運(yùn)算符、算術(shù)運(yùn)算符的優(yōu)先級(jí)低。符、算術(shù)運(yùn)算符的優(yōu)先級(jí)低。邏輯運(yùn)算的操作數(shù)不為邏輯運(yùn)算的操作數(shù)不為0時(shí),為邏輯真;而操作數(shù)的值為時(shí),為邏輯真;而操作數(shù)的值為0時(shí),時(shí),為邏輯假。為邏輯假。當(dāng)操作數(shù)的值為當(dāng)操作數(shù)的值為0時(shí),對(duì)該操作數(shù)做邏輯非運(yùn)算的時(shí),對(duì)該操作數(shù)做邏輯非運(yùn)算的結(jié)果為結(jié)果為1;而當(dāng)操作數(shù)
9、為非;而當(dāng)操作數(shù)為非0時(shí),對(duì)其做邏輯非運(yùn)算的結(jié)果為時(shí),對(duì)其做邏輯非運(yùn)算的結(jié)果為0。例如:例如:!0的值為的值為1,!20的運(yùn)算結(jié)果為的運(yùn)算結(jié)果為0。僅當(dāng)參加邏輯與的兩個(gè)操作數(shù)的值都為非僅當(dāng)參加邏輯與的兩個(gè)操作數(shù)的值都為非0時(shí),時(shí),其結(jié)果為其結(jié)果為1;否則結(jié)果為;否則結(jié)果為0。例如:。例如:0&1.2為為0, 1&1.2為為1。僅當(dāng)參加邏輯或的兩個(gè)操作數(shù)的值都為僅當(dāng)參加邏輯或的兩個(gè)操作數(shù)的值都為0時(shí),其結(jié)時(shí),其結(jié)果為果為0;否則結(jié)果為;否則結(jié)果為1。例如:。例如:0|1.2為為1, 0|0為為0。用邏輯運(yùn)算符連接起來的式子。邏輯運(yùn)算的數(shù)據(jù)用邏輯運(yùn)算符連接起來的式子。邏輯運(yùn)算的數(shù)據(jù)
10、類型與關(guān)系運(yùn)算相同,其運(yùn)算結(jié)果用整數(shù)表示。當(dāng)邏輯關(guān)系成類型與關(guān)系運(yùn)算相同,其運(yùn)算結(jié)果用整數(shù)表示。當(dāng)邏輯關(guān)系成立時(shí),其運(yùn)算結(jié)果為整數(shù)立時(shí),其運(yùn)算結(jié)果為整數(shù)1;反之,為整數(shù);反之,為整數(shù)0。同樣,。同樣,1或或0可作可作為整數(shù)繼續(xù)參加運(yùn)算。為整數(shù)繼續(xù)參加運(yùn)算。a=x&x=b 判斷判斷x的值是否在區(qū)間的值是否在區(qū)間a,b(a=b)&(b=c) 判斷判斷a、b、c三個(gè)數(shù)是否相等三個(gè)數(shù)是否相等xb|xa 判斷判斷x小于小于b或者或者x小于小于ac9 判斷變量判斷變量c不是數(shù)字字符不是數(shù)字字符邏輯表達(dá)式求值時(shí),若能確定其值,邏輯表達(dá)式求值時(shí),若能確定其值,則不必再逐步求值。則不必再逐步求值
11、。設(shè)設(shè)int a=0,b=2,c=1;a&b+&-c因因a的值為的值為0,則可直接確定整個(gè)表達(dá)式的值為,則可直接確定整個(gè)表達(dá)式的值為0,此時(shí)不再,此時(shí)不再對(duì)后續(xù)的邏輯與項(xiàng)做計(jì)算,即對(duì)后續(xù)的邏輯與項(xiàng)做計(jì)算,即b和和c的值并不會(huì)改變。的值并不會(huì)改變。a|b-|c+a的值為的值為0,再與,再與b做邏輯或運(yùn)算,此時(shí)結(jié)果為做邏輯或運(yùn)算,此時(shí)結(jié)果為1,直接確定表,直接確定表達(dá)式的值為達(dá)式的值為1,其后的運(yùn)算不再進(jìn)行。這樣,計(jì)算結(jié)果為,其后的運(yùn)算不再進(jìn)行。這樣,計(jì)算結(jié)果為1,a為為0,b為為1,c不變。不變。唯一的三目運(yùn)算符,其優(yōu)先級(jí)僅高于賦值運(yùn)算符、唯一的三目運(yùn)算符,其優(yōu)先級(jí)僅高于賦值運(yùn)算
12、符、復(fù)合賦值運(yùn)算符和逗號(hào)運(yùn)算符,且為復(fù)合賦值運(yùn)算符和逗號(hào)運(yùn)算符,且為右結(jié)合性,右結(jié)合性,即是應(yīng)該將最即是應(yīng)該將最右邊的問號(hào)與離它最近的冒號(hào)配對(duì)。右邊的問號(hào)與離它最近的冒號(hào)配對(duì)。 表達(dá)式表達(dá)式1 ? 表達(dá)式表達(dá)式2 : 表達(dá)式表達(dá)式3先求表達(dá)式先求表達(dá)式1的值,若為的值,若為0,則求出表達(dá)式,則求出表達(dá)式2的值的值(不不求表達(dá)式求表達(dá)式3的值的值),并把該值作為運(yùn)算結(jié)果;否則求出表達(dá)式,并把該值作為運(yùn)算結(jié)果;否則求出表達(dá)式3的值的值(不求表達(dá)式不求表達(dá)式2的值的值),并把它作為運(yùn)算結(jié)果。,并把它作為運(yùn)算結(jié)果。max=a=b?a:b;printf(%s,ab?a大于大于bn:a小于等于小于等于bn
13、);wx?x+w:xy?x:y 使用右結(jié)合性,即可理解為:使用右結(jié)合性,即可理解為: (wx)?(x+w):(xy?x:y)選擇語句選擇語句也稱也稱分支語句分支語句:根據(jù)給定條件,選擇執(zhí)行兩個(gè)或兩個(gè)以:根據(jù)給定條件,選擇執(zhí)行兩個(gè)或兩個(gè)以上分支程序段中的某一個(gè)。上分支程序段中的某一個(gè)。C語言的選擇語句:語言的選擇語句:條件語句:條件語句:if。有三種形式,即有三種形式,即、和、和, 這三種形式可單獨(dú)使用這三種形式可單獨(dú)使用 如果如果ifif語句(基本型)中又包含一個(gè)或多個(gè)語句(基本型)中又包含一個(gè)或多個(gè)ifif語句(基本型語句(基本型),), 則為則為。 開關(guān)語句:開關(guān)語句:switch問題描述
14、:問題描述:輸入三個(gè)整數(shù),輸出其中的最大數(shù)。輸入三個(gè)整數(shù),輸出其中的最大數(shù)。問題分析:問題分析:先輸入三個(gè)整數(shù),分別存入整型變量先輸入三個(gè)整數(shù),分別存入整型變量a、b、c。后將后將a、b、c中的最大者存入整型變量中的最大者存入整型變量max并輸出并輸出。求最大值可用條件表達(dá)式,也可用求最大值可用條件表達(dá)式,也可用。知識(shí)聚焦與程序?qū)崿F(xiàn)知識(shí)聚焦與程序?qū)崿F(xiàn)條件語句就是條件語句就是if語句:根據(jù)給定的條件,決定執(zhí)行兩個(gè)分支語句:根據(jù)給定的條件,決定執(zhí)行兩個(gè)分支中的某一個(gè)分支。中的某一個(gè)分支。有三種形式。有三種形式。程序?qū)崿F(xiàn):程序?qū)崿F(xiàn): #include int main(void) int a,b,c
15、,max; printf(輸入三個(gè)整數(shù):); scanf(%d%d%d,&a,&b,&c); max=ab?a:b; max=maxc?max:c; printf(最大數(shù)是:%dn,max); return 0;單分支單分支if語句的語句的格式:格式: if(表達(dá)式表達(dá)式) S表達(dá)式是表達(dá)式是C語言語言的任何表達(dá)式的任何表達(dá)式S是一個(gè)語句是一個(gè)語句執(zhí)行流程:執(zhí)行流程: 程序?qū)崿F(xiàn):程序?qū)崿F(xiàn):#includeint main(void) int a,b,c,max; printf(輸入三個(gè)整數(shù):); scanf(%d%d%d,&a,&b,&c); m
16、ax=a; if(maxb) max=b; if(maxc) max=c; printf(最大數(shù)是:%dn,max); return 0;演示例演示例3.1.1演示例演示例3.1.2演示例演示例3. 2 雙分支雙分支if語句的語句的格式:格式: if(表達(dá)式表達(dá)式) S1 else S2執(zhí)行流程:執(zhí)行流程: 程序?qū)崿F(xiàn):程序?qū)崿F(xiàn):#includeint main(void) int a,b,c,max; printf(輸入三個(gè)整數(shù):); scanf(%d%d%d,&a,&b,&c); if(ab) max=a; else max=b; printf(最大數(shù)是:%dn, m
17、axc?max:c); return 0;演示例演示例3. 3演示例演示例3. 4單行書寫單行書寫多行書寫多行書寫有縮進(jìn)有縮進(jìn)if(ab) max=a; else max=b;if(ab) max=a; else max=b;if(ab) max=a; else max=b;C語言書寫形式比較自由:可寫在一行,也可寫語言書寫形式比較自由:可寫在一行,也可寫在多行。一般為了認(rèn)讀方便,特別是語句較多時(shí),在多行。一般為了認(rèn)讀方便,特別是語句較多時(shí),會(huì)分多行書寫,還會(huì)有縮進(jìn),以體現(xiàn)語句結(jié)構(gòu)。會(huì)分多行書寫,還會(huì)有縮進(jìn),以體現(xiàn)語句結(jié)構(gòu)。如上面的雙分支語句可寫成下面如上面的雙分支語句可寫成下面3種形式:種形
18、式:多分支多分支if語句格式:語句格式: if(表達(dá)式表達(dá)式1) S1 else if(表達(dá)式表達(dá)式2) S2 else if . else Sn 程序?qū)崿F(xiàn):程序?qū)崿F(xiàn):#includeint main(void) int a,b,c,max; printf(輸入三個(gè)整數(shù)輸入三個(gè)整數(shù):); scanf(%d%d%d,&a,&b,&c); if(ab & ac) max=a; else if(ba & bc) max=b; else max=c; printf(最大數(shù)是:最大數(shù)是:%dn,max); return 0;演示例演示例3. 5問題描述:問題描述:
19、將鍵盤輸入的百分制成績轉(zhuǎn)換成五級(jí)計(jì)分制成績輸將鍵盤輸入的百分制成績轉(zhuǎn)換成五級(jí)計(jì)分制成績輸出。五級(jí)計(jì)分制成績用字母出。五級(jí)計(jì)分制成績用字母A、B、C、D和和E分別表示分別表示10090、8980、7970、6960、590。問題分析:問題分析:確定數(shù)據(jù)結(jié)構(gòu)。確定數(shù)據(jù)結(jié)構(gòu)。整型變量整型變量score存輸入的百分制成績存輸入的百分制成績字符變量字符變量grade存五級(jí)計(jì)分制成績存五級(jí)計(jì)分制成績確定數(shù)據(jù)處理流程。先從鍵盤輸入一個(gè)百分制成績,再將確定數(shù)據(jù)處理流程。先從鍵盤輸入一個(gè)百分制成績,再將輸入的百分制成績轉(zhuǎn)換成五級(jí)計(jì)分制成績,最后輸出五級(jí)輸入的百分制成績轉(zhuǎn)換成五級(jí)計(jì)分制成績,最后輸出五級(jí)計(jì)分制成績
20、。計(jì)分制成績。程序?qū)崿F(xiàn):程序?qū)崿F(xiàn):#includeint main(void) int score; /*保存輸入的百分制成績保存輸入的百分制成績*/ char grade; /*保存五級(jí)計(jì)分制成績保存五級(jí)計(jì)分制成績*/ printf(輸入一個(gè)成績:輸入一個(gè)成績:); scanf(%d,&score); if(score100 | score=90) grade=A; /*L1*/ else if(score=80) grade=B; else if(score=70) grade=C; else if(score=60) grade=D; else grade=E; /*L2*/ p
21、rintf(%d分分,等級(jí)等級(jí)為為%cn, score,grade); return 0; 程序說明:程序說明: 程序的程序的L1行行L2行:使用嵌套的行:使用嵌套的if語句對(duì)語句對(duì)所列條件按遞減順序判斷,可以簡化后續(xù)所列條件按遞減順序判斷,可以簡化后續(xù)條件的表達(dá)。條件的表達(dá)。討論參見教材討論參見教材P62。 grade變量:不是必要的,但有了它,可變量:不是必要的,但有了它,可簡化程序,提高程序的可讀性。簡化程序,提高程序的可讀性。演示例演示例3. 6嵌套的條件語句,嵌套的條件語句,else如何與如何與if配對(duì):配對(duì):為避免二義性,為避免二義性,C語言規(guī)定,語言規(guī)定,else總是與其前面最近
22、的還沒有總是與其前面最近的還沒有配對(duì)的配對(duì)的if進(jìn)行配對(duì)進(jìn)行配對(duì)。語句語句 if(e1) if(e2) S1 else S2上述嵌套的條件語句中上述嵌套的條件語句中else與第二個(gè)與第二個(gè)if配對(duì)。配對(duì)??捎靡粚?duì)花括號(hào)改變可用一對(duì)花括號(hào)改變else與第二個(gè)與第二個(gè)if配對(duì):配對(duì): if(e1) if(e2) S1 else S2if語句的嵌套:語句的嵌套:if語句的內(nèi)嵌語句又是語句的內(nèi)嵌語句又是if語句。語句。演示例演示例3. 7問題描述:問題描述:求方程求方程ax2+bx+c=0的根,其中系數(shù)的根,其中系數(shù)a、b、c從鍵盤從鍵盤上輸入,上輸入,a不為不為0。問題分析:問題分析: 定義浮點(diǎn)變量
23、定義浮點(diǎn)變量a、b、c、delta,分別保存一元二次方程的分別保存一元二次方程的系數(shù)和判別式。系數(shù)和判別式。 當(dāng)輸入系數(shù)當(dāng)輸入系數(shù)a、b、c的值后,的值后,若若b2-4ac0,則方程有兩個(gè)不同的實(shí)根;則方程有兩個(gè)不同的實(shí)根;若若b2-4ac=0,則方程有兩個(gè)相等的實(shí)根。則方程有兩個(gè)相等的實(shí)根。程序?qū)崿F(xiàn):程序?qū)崿F(xiàn):#include#includeint main(void) float a,b,c,delta; printf(輸入三個(gè)系數(shù):輸入三個(gè)系數(shù):); scanf(%f%f%f,&a,&b,&c); if(a=0) /*使用復(fù)合語句使用復(fù)合語句*/ printf(這
24、不是一元二次方程這不是一元二次方程!n); return 1; 當(dāng)當(dāng)if語句的條件成立時(shí),若語句的條件成立時(shí),若要執(zhí)行一系列語句,則應(yīng)要執(zhí)行一系列語句,則應(yīng)將這一系列語句用一對(duì)花將這一系列語句用一對(duì)花括號(hào)括起來變成一個(gè)復(fù)合括號(hào)括起來變成一個(gè)復(fù)合語句。語句。 delta=b*b-4*a*c; if(delta=0) /*使用復(fù)合語句使用復(fù)合語句*/ delta=sqrt(delta); if(delta) printf(方程有兩個(gè)不同的實(shí)根:方程有兩個(gè)不同的實(shí)根:%f,%fn, (-b+delta)/2/a,(-b-delta)/2/a); else printf(方程有兩個(gè)相等的實(shí)根:方程有兩
25、個(gè)相等的實(shí)根:%fn, -b/2/a); else printf(方程沒有實(shí)根方程沒有實(shí)根!n); return 0;格式:格式: switch(表達(dá)式表達(dá)式) case 常量表達(dá)式常量表達(dá)式1:語句序列語句序列1; break; case 常量表達(dá)式常量表達(dá)式2:語句序列語句序列2; break; case 常量表達(dá)式常量表達(dá)式n:語句序列語句序列n; break; default:語句序列語句序列 值只能是字符型或整型值只能是字符型或整型可選項(xiàng)可選項(xiàng)default分支可放在開關(guān)語句中分支可放在開關(guān)語句中的任何位置,通常為開關(guān)語句的任何位置,通常為開關(guān)語句的最后一個(gè)分支。的最后一個(gè)分支。應(yīng)加
26、應(yīng)加空格空格,否則被認(rèn)為是語句,否則被認(rèn)為是語句標(biāo)號(hào),如標(biāo)號(hào),如case9,并不出現(xiàn)語并不出現(xiàn)語法錯(cuò),這類錯(cuò)誤較難查找。法錯(cuò),這類錯(cuò)誤較難查找。常量表達(dá)式的值必須互不相同常量表達(dá)式的值必須互不相同先求先求的值,再依次與的值,再依次與case后面的后面的比較,若與某比較,若與某一常量表達(dá)式的值相等,則轉(zhuǎn)去執(zhí)行該一常量表達(dá)式的值相等,則轉(zhuǎn)去執(zhí)行該case后邊的語句序列,一后邊的語句序列,一直執(zhí)行下去,直至遇到直執(zhí)行下去,直至遇到break語句或開關(guān)語句的右花括號(hào)為止。語句或開關(guān)語句的右花括號(hào)為止。否則,若有否則,若有default分支,則執(zhí)行該分支后邊的語句序列,否則什分支,則執(zhí)行該分支后邊的語句
27、序列,否則什么也不執(zhí)行。么也不執(zhí)行。開關(guān)語句結(jié)構(gòu)清晰,易理解。開關(guān)語句結(jié)構(gòu)清晰,易理解。開關(guān)語句可用條件語句實(shí)現(xiàn),但反之不然。開關(guān)語句可用條件語句實(shí)現(xiàn),但反之不然。原因:開關(guān)語句的表達(dá)式取值只能是原因:開關(guān)語句的表達(dá)式取值只能是型或型或,而,而條件語句的表達(dá)式取值不限類型。條件語句的表達(dá)式取值不限類型。演示例演示例3. 8問題描述:問題描述: 輸入一個(gè)字符,判斷它是元音字母、空白字符還是其它符號(hào)。輸入一個(gè)字符,判斷它是元音字母、空白字符還是其它符號(hào)。問題分析:問題分析: 本例完全可以使用本例完全可以使用if來編程,但考慮到枚舉的情形較多,選用來編程,但考慮到枚舉的情形較多,選用另一個(gè)選擇語句另
28、一個(gè)選擇語句開關(guān)語句來編程,可提高程序的可讀性。開關(guān)語句來編程,可提高程序的可讀性。知識(shí)聚焦:知識(shí)聚焦:開關(guān)語句開關(guān)語句#includeint main(void) char c; printf(輸入一個(gè)字符:輸入一個(gè)字符:); scanf(%c,&c); switch(c) case a: case A: case e: case E: case i: case I: case o: case O: case u: case U: printf(這是元音字母這是元音字母n); break; case : case n: case t: printf(這是空白符這是空白符n); bre
29、ak; default: printf(這是其他字符這是其他字符n); return 0;問題:請(qǐng)畫程序流程圖。用問題:請(qǐng)畫程序流程圖。用if語句改寫本例。語句改寫本例。將將default分支及其語句前移到第一個(gè)分支,如分支及其語句前移到第一個(gè)分支,如何修改程序而保持功能不變?何修改程序而保持功能不變?當(dāng)省略當(dāng)省略case后面的語句后面的語句序列時(shí),則可實(shí)現(xiàn)多個(gè)入序列時(shí),則可實(shí)現(xiàn)多個(gè)入口,執(zhí)行同一語句序列??冢瑘?zhí)行同一語句序列。演示例演示例3. 9只只有多編程,多調(diào)試,才能真正提高實(shí)際編程能力:有多編程,多調(diào)試,才能真正提高實(shí)際編程能力:編程出錯(cuò)是普遍現(xiàn)象,即使是經(jīng)驗(yàn)豐富的程序員,也無法避編程
30、出錯(cuò)是普遍現(xiàn)象,即使是經(jīng)驗(yàn)豐富的程序員,也無法避免錯(cuò)誤。免錯(cuò)誤。程序投入使用前,都要經(jīng)過反復(fù)測試,以發(fā)現(xiàn)錯(cuò)誤并糾正錯(cuò)程序投入使用前,都要經(jīng)過反復(fù)測試,以發(fā)現(xiàn)錯(cuò)誤并糾正錯(cuò)誤。誤。程序調(diào)試需要在實(shí)踐中積累經(jīng)驗(yàn),掌握技巧。程序調(diào)試需要在實(shí)踐中積累經(jīng)驗(yàn),掌握技巧。學(xué)會(huì)調(diào)試程序,是提高實(shí)際編程能力的重要保證。學(xué)會(huì)調(diào)試程序,是提高實(shí)際編程能力的重要保證。調(diào)試:調(diào)試:查找并糾正程序錯(cuò)誤的過程。查找并糾正程序錯(cuò)誤的過程。C語言語言程序錯(cuò)誤類型程序錯(cuò)誤類型:3類類5種種。編譯階段:編譯錯(cuò)誤編譯階段:編譯錯(cuò)誤(error)、編譯警告編譯警告(warning)連接階段:鏈接錯(cuò)誤連接階段:鏈接錯(cuò)誤運(yùn)行階段:運(yùn)行錯(cuò)誤和
31、邏輯錯(cuò)誤運(yùn)行階段:運(yùn)行錯(cuò)誤和邏輯錯(cuò)誤編譯錯(cuò)編譯錯(cuò)誤誤(error):編譯時(shí)發(fā)現(xiàn)的錯(cuò)誤,通常屬于語法錯(cuò)誤。即編編譯時(shí)發(fā)現(xiàn)的錯(cuò)誤,通常屬于語法錯(cuò)誤。即編寫的語句不符合寫的語句不符合C+的語法規(guī)則。這類錯(cuò)誤必須修改,否則無的語法規(guī)則。這類錯(cuò)誤必須修改,否則無法產(chǎn)生目標(biāo)程序。法產(chǎn)生目標(biāo)程序。舉例:舉例:用了未定義的標(biāo)識(shí)符用了未定義的標(biāo)識(shí)符(如變量名、函數(shù)名等如變量名、函數(shù)名等);語句后缺少分號(hào)或在不該有分號(hào)的地方加分號(hào);語句后缺少分號(hào)或在不該有分號(hào)的地方加分號(hào);括號(hào)不配對(duì),包括圓括號(hào)、方括號(hào)和花括號(hào);括號(hào)不配對(duì),包括圓括號(hào)、方括號(hào)和花括號(hào);用中文的分號(hào)、逗號(hào)、等號(hào)代替英文的分號(hào)、逗號(hào)、等號(hào)等。用中文的
32、分號(hào)、逗號(hào)、等號(hào)代替英文的分號(hào)、逗號(hào)、等號(hào)等。使用庫函數(shù),卻未包含相應(yīng)的頭文件。使用庫函數(shù),卻未包含相應(yīng)的頭文件。解決辦法:解決辦法:根據(jù)編譯器給出的出錯(cuò)信息根據(jù)編譯器給出的出錯(cuò)信息(出錯(cuò)行號(hào)及出錯(cuò)原因出錯(cuò)行號(hào)及出錯(cuò)原因),較易定,較易定位位(在在VC+中用鼠標(biāo)雙擊出錯(cuò)信息即可定位中用鼠標(biāo)雙擊出錯(cuò)信息即可定位)和解決。和解決。有時(shí)所給行號(hào)并非真正的出錯(cuò)行,需細(xì)看出錯(cuò)行前后的程有時(shí)所給行號(hào)并非真正的出錯(cuò)行,需細(xì)看出錯(cuò)行前后的程序,才能最終確定錯(cuò)誤。序,才能最終確定錯(cuò)誤。調(diào)試策略:調(diào)試策略:每次只修改第一個(gè)錯(cuò)誤,改完后重新編譯,直到?jīng)]有每次只修改第一個(gè)錯(cuò)誤,改完后重新編譯,直到?jīng)]有編譯錯(cuò)誤為止。原
33、因:編譯錯(cuò)誤為止。原因:后面出現(xiàn)的錯(cuò)誤可能是由第一個(gè)錯(cuò)誤引發(fā)的連環(huán)出錯(cuò),實(shí)后面出現(xiàn)的錯(cuò)誤可能是由第一個(gè)錯(cuò)誤引發(fā)的連環(huán)出錯(cuò),實(shí)際并沒有錯(cuò)誤。際并沒有錯(cuò)誤。不會(huì)漏掉任何錯(cuò)誤。不會(huì)漏掉任何錯(cuò)誤。每次只面對(duì)一個(gè)錯(cuò)誤,可以集中精力解決問題。每次只面對(duì)一個(gè)錯(cuò)誤,可以集中精力解決問題。編譯警告編譯警告(warning):編譯時(shí)發(fā)現(xiàn)的、可能存在的潛在錯(cuò)誤,只編譯時(shí)發(fā)現(xiàn)的、可能存在的潛在錯(cuò)誤,只是編譯系統(tǒng)拿不準(zhǔn),是編譯系統(tǒng)拿不準(zhǔn),希望用戶把關(guān)希望用戶把關(guān)。若用戶置之不理,也可產(chǎn)。若用戶置之不理,也可產(chǎn)生目標(biāo)程序,但必然會(huì)將這些潛在錯(cuò)誤延伸到運(yùn)行階段暴露,生目標(biāo)程序,但必然會(huì)將這些潛在錯(cuò)誤延伸到運(yùn)行階段暴露,即轉(zhuǎn)化成運(yùn)行錯(cuò)誤或邏輯錯(cuò)誤。而確定程序的運(yùn)行錯(cuò)誤和邏輯即轉(zhuǎn)化成運(yùn)行錯(cuò)誤或邏輯錯(cuò)誤。而確定程序的運(yùn)行錯(cuò)誤和邏輯錯(cuò)誤的出錯(cuò)位置要比確定編譯警告的出錯(cuò)位置難得多。錯(cuò)誤的出錯(cuò)位置要比確定編譯警告的出錯(cuò)位置難得多。舉例:舉例:變量未初始化就做某種運(yùn)算。變量未初始化就做某種運(yùn)算。調(diào)試策略:調(diào)試策略:將編譯警告看成編譯錯(cuò)誤,認(rèn)真改正,直到警告全部將編譯警告看成編譯錯(cuò)誤,認(rèn)真改正,直到警告全部消除為止。消除為止。鏈接錯(cuò)誤:鏈接錯(cuò)誤:當(dāng)用戶程序的目標(biāo)代碼與用戶程序調(diào)用的庫函數(shù)的目當(dāng)用戶程序的目標(biāo)代碼與用戶程序調(diào)用的庫函數(shù)的目標(biāo)代碼鏈接生成可
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 江西環(huán)境工程職業(yè)學(xué)院《人居環(huán)境概論一》2023-2024學(xué)年第二學(xué)期期末試卷
- 對(duì)外經(jīng)濟(jì)貿(mào)易大學(xué)《專利代理與審查專題》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖北師范大學(xué)文理學(xué)院《國際投資》2023-2024學(xué)年第二學(xué)期期末試卷
- 武漢電力職業(yè)技術(shù)學(xué)院《國際營銷nternatonaMarketng》2023-2024學(xué)年第二學(xué)期期末試卷
- 重慶對(duì)外經(jīng)貿(mào)學(xué)院《現(xiàn)代冶金工程設(shè)計(jì)原理》2023-2024學(xué)年第二學(xué)期期末試卷
- 南京體育學(xué)院《成本管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 武漢輕工大學(xué)《新媒體產(chǎn)品策劃實(shí)訓(xùn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 江西衛(wèi)生職業(yè)學(xué)院《設(shè)計(jì)理論》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海外國語大學(xué)《幼兒園舞蹈創(chuàng)編》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年度個(gè)人車輛抵押貸款購車二手車鑒定評(píng)估報(bào)告審查合同
- 蔚來用戶運(yùn)營分析報(bào)告-數(shù)字化
- 中學(xué)生低碳生活調(diào)查報(bào)告
- 東軟入職合同
- 游泳池經(jīng)營合作方案
- 擘畫未來技術(shù)藍(lán)圖
- 基于情報(bào)基本理論的公安情報(bào)
- 《“白山黑水”-東北三省》示范課課件(第1課時(shí))
- 孔氏家廟的社會(huì)調(diào)查報(bào)告
- 員工節(jié)能環(huán)保培訓(xùn)課件
- 華為公司的內(nèi)部審計(jì)制度
- 腫瘤醫(yī)院病歷書寫培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論