![第05章--選擇結構程序設計_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/21/f5cfbaea-af56-41f8-ab8d-79cbcd21d2a6/f5cfbaea-af56-41f8-ab8d-79cbcd21d2a61.gif)
![第05章--選擇結構程序設計_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/21/f5cfbaea-af56-41f8-ab8d-79cbcd21d2a6/f5cfbaea-af56-41f8-ab8d-79cbcd21d2a62.gif)
![第05章--選擇結構程序設計_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/21/f5cfbaea-af56-41f8-ab8d-79cbcd21d2a6/f5cfbaea-af56-41f8-ab8d-79cbcd21d2a63.gif)
![第05章--選擇結構程序設計_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/21/f5cfbaea-af56-41f8-ab8d-79cbcd21d2a6/f5cfbaea-af56-41f8-ab8d-79cbcd21d2a64.gif)
![第05章--選擇結構程序設計_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/21/f5cfbaea-af56-41f8-ab8d-79cbcd21d2a6/f5cfbaea-af56-41f8-ab8d-79cbcd21d2a65.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、C語言教學組語言教學組E-mail:Tel: 回顧一下上一章編寫的體質指數(shù)計算程序,代碼如下:需求補充:根據(jù)計算結果輸出對應的評價BMI值值評價評價25過重任務分析:根據(jù)計算結果輸出不同的選擇,就需要用到選擇結構算法設計:程序實現(xiàn):方法一:程序實現(xiàn):方法二:1. 關系運算關系運算實際上是兩個量的比較,比較的結果只有兩種可能:成立(真)、不成立(假) 例如 a 3 ? l 當a的值為5時,比較的結果為真l 當a的值為1時,比較的結果為假關系運算的結果是一個邏輯值,非真(1)即假(0)關系運算符關系運算符含義含義 優(yōu)先級優(yōu)先級結合性結合性 = =小于小于小于或等于小于或等于大于大于大于或等于大于或
2、等于6 6 左左 右右=!=!=等于等于 不等于不等于7 7左左 右右算術運算符關系運算符賦值運算符高低2.關系運算符及其優(yōu)先級3.關系表達式例:a=3,b=2,c=1,則: (ab) = c 值為真(即1) b+cbc f的值為假(即0)!4. 邏輯運算邏輯運算:產(chǎn)生真假值的運算 邏輯運算符l & 邏輯與l | 邏輯或l !邏輯非 “&”和“|”是雙目運算符,要求兩個運算量。 如:(ab) & (xy), (ab)|(xy) “!”是一元運算符,要求一個運算量。 如:!(ab)5. 邏輯運算符的優(yōu)先級 ! & |! ! 算術算術 關系關系 邏輯邏輯 賦值賦值
3、ab & xy ab & xy 相當于相當于: : (ab) & (xy)(ab) & (xy)n a=b|x=y a=b|x=y 相當于相當于: : (a=b) | (x=y) (a=b) | (x=y)n !a | ab !a | ab 相當于相當于: : (!a ) | (ab)(!a ) | (ab)6. 邏輯表達式用邏輯運算符將關系表達式或邏輯量連接起來就是邏輯表達式。在C語言中,當判斷一個量的真假時,一切非數(shù)均被當成“真 ”來處理;而0為“假” 。例如: 若a=4,!a的值為? !a為 若a=4, b=5, 則a & b的值為? a&
4、b為if用來判斷給定條件的真假,并決定執(zhí)行哪一種操作。 if語句的三種形式 1. if(表達式) 語句A 表達式為真時,執(zhí)行語句A; 表達式為假時,越過語句A,往下執(zhí)行。例如:如果輸入的是正數(shù),則打印出來。if(x0) printf(“%d”,x);PYNA 2. if (表達式) 語句A else 語句BPYNAB例如:輸出兩個數(shù)中較大的一個if ( x y ) printf( “%d” , x );else printf( “%d” , y ); 3. if (表達式1) 語句1 else if (表達式2) 語句2 else if (表達式3) 語句3 else if (表達式4) 語句
5、4 else 語句5P1語句語句5P2P3P4P5語語句句1語句語句2語句語句4語句語句3YYYYYNNNN例如:編寫程序找出3個整數(shù)中的最大值并輸出方法一:例如:編寫程序找出3個整數(shù)中的最大值并輸出方法一:例如:編寫程序找出3個整數(shù)中的最大值并輸出方法二:例如:編寫程序找出3個整數(shù)中的最大值并輸出方法三:1.2.說明:1. 條件設定中的表達式通常是關系表達式或邏輯表達式,條件滿足指的是表達式的值為真,即表達式的值是一個非值。2. 例如:if(3) printf(“OK”); if(a) printf(“%d”,a); if(0) printf(“false”); 3. if的條件滿足后執(zhí)行的
6、語句并非指單一的一條語句,可以是多個語句,只要用 括起即可。輸出輸出OK OK ( (永真永真) )輸出輸出97 97 ( (永真永真) )無輸出無輸出( (永假永假) )if 語句的嵌套if ( ) if ( ) 語句1 else 語句2 else if ( ) 語句3 else 語句4內嵌內嵌ifif內嵌內嵌ififelse總是從最內層開始結合if ( a ) if ( b ) 語句1 else 語句2 內嵌內嵌ififelse else 總是與最總是與最近的一近的一個沒有個沒有配對的配對的ifif配對配對ifif的三種語句可以的三種語句可以任意嵌套任意嵌套例如:把引例部分的體質指數(shù)計算的
7、任務加上出錯處理條件運算符是三目運算符 格式:表達式1 ? 表達式2 : 表達式 3 功能:表達式1成立則表達式2的值為最終結果否則表達式3的值作為最終結果例如:max=(ab)?a:b; 當(ab)為真時,表達式取a的值 當(ab)為假時,表達式取b的值條件運算符的結合方向為“從右向左”例如: ab?a:cd?c:d相當于 ab?a:(cd?c:d)如果 a=1,b=2,c=3,d=4,則條件表達式的值為4例輸入一個字符,判斷大小寫,如是大寫,則轉換成小寫,輸出。#include int main(void) char ch; scanf(“%c”,&ch); ch=(ch= A &
8、amp; ch=A & ch=Z) ch=ch+32; else ch=ch;一般形式: switch (表達式) case 常量表達式1:語句序列1 case 常量表達式2:語句序列2 case 常量表達式n:語句序列n default :語句序列n+1 表達式值表達式值=時時該開關合該開關合上上計算表達式值計算表達式值.語系語系1語系語系2語系語系n 語系語系n+1表達式值與某常表達式值與某常量表達式值相匹量表達式值相匹配配,則對應開關合則對應開關合上上,執(zhí)行對應語句執(zhí)行對應語句系列系列注: 功能: (條件: 語句系列1-語句系列n 后均有 break 語句 )n例如:編寫一個簡單
9、的點菜程序。根據(jù)用戶選擇的菜單項,輸出對應菜譜的價格??梢园讯鄠€case分支合并。例如:編寫程序查詢北京市某時間段車輛的限行時間關于關于switchswitch: switchswitch后面的表達式通常應該是后面的表達式通常應該是有序型有序型的量,的量,目前學到的目前學到的有序型有序型是是整型整型、字符型字符型。常量表達式常量表達式的值的值必須必須互不相同互不相同??梢允褂每梢允褂胋reakbreak語句以終止語句以終止多個多個casecase連續(xù)執(zhí)行連續(xù)執(zhí)行, ,否則只要有一個否則只要有一個casecase滿足后滿足后, ,以下的語句全以下的語句全部無條件執(zhí)行。部無條件執(zhí)行?!纠纠?.1
10、】編程設計一個簡單的猜數(shù)游戲:先由】編程設計一個簡單的猜數(shù)游戲:先由計算機計算機“想想”一個一個1100之間的整數(shù)請玩家之間的整數(shù)請玩家猜,如果玩家猜對了,則計算機給出提示猜,如果玩家猜對了,則計算機給出提示“恭喜您!猜對了!恭喜您!猜對了!”,否則提示,否則提示“錯!錯!”,并告訴玩家所猜的數(shù)相比計算機并告訴玩家所猜的數(shù)相比計算機“想想”的數(shù),的數(shù),是大了還是小了。是大了還是小了。1.分析問題分析問題:本本例中的難點是如何讓計算機例中的難點是如何讓計算機“想想”一個數(shù)。一個數(shù)?!跋胂搿狈从沉艘环N隨機性,可以用反映了一種隨機性,可以用C的的標準庫函數(shù)標準庫函數(shù)rand()產(chǎn)生計算機產(chǎn)生計算機“
11、想想”的數(shù)。的數(shù)。函數(shù)函數(shù)rand()產(chǎn)生一個產(chǎn)生一個0,RAND_MAX之間的之間的隨機數(shù),隨機數(shù),RAND_MAX是在頭文件是在頭文件stdlib.h中定義的中定義的符號符號常量常量。2. 程序設計程序設計 數(shù)據(jù)描述數(shù)據(jù)描述int magic;/存儲計算機存儲計算機“想想”的數(shù)的數(shù)int guess;/存儲玩家輸入的存儲玩家輸入的數(shù)數(shù) 算法設計算法設計3. 程序實現(xiàn)程序實現(xiàn)4. 完善設計完善設計 其實其實函數(shù)函數(shù)rand()生成的隨機數(shù)只是個偽隨機生成的隨機數(shù)只是個偽隨機數(shù),默認情況下,連續(xù)調用數(shù),默認情況下,連續(xù)調用rand()函數(shù)所產(chǎn)生的函數(shù)所產(chǎn)生的一系列數(shù)都是相同的。那么如何使程序每
12、次執(zhí)行一系列數(shù)都是相同的。那么如何使程序每次執(zhí)行產(chǎn)生不同的隨機數(shù)呢?可以通過調用標準庫函數(shù)產(chǎn)生不同的隨機數(shù)呢?可以通過調用標準庫函數(shù)srand()為函數(shù)為函數(shù)rand()設置隨機數(shù)種子來實現(xiàn)。設置隨機數(shù)種子來實現(xiàn)。4. 完善設計完善設計 【例【例5.2】從鍵盤輸入三個整數(shù)】從鍵盤輸入三個整數(shù)a、b、c,按從小到按從小到大的順序排序后輸出。大的順序排序后輸出。1. 分析分析問題問題:將將用戶按任意順序輸入的三個數(shù)用戶按任意順序輸入的三個數(shù)排序,可以通過將所有的數(shù)兩兩比較,將最排序,可以通過將所有的數(shù)兩兩比較,將最小的數(shù)放在小的數(shù)放在a中,次小的數(shù)放在中,次小的數(shù)放在b中,最大的中,最大的數(shù)放在數(shù)
13、放在c中,然后按中,然后按“a、b、c”的順序輸出,的順序輸出,即可實現(xiàn)既定的目標。即可實現(xiàn)既定的目標。2. 程序設計程序設計 數(shù)據(jù)描述數(shù)據(jù)描述int a,b,c; /要排序的三個對象要排序的三個對象int temp; /用于交換兩變量值的第三方用于交換兩變量值的第三方變量變量 算法設計算法設計3. 程序實現(xiàn)程序實現(xiàn)【例5.3】編寫一個運算器程序,輸入x Operator y,輸出運算結果。1. 分析問題 首先需要考慮要處理的對象有哪些?表達式如“10+20”中的運算對象和符號都是要在程序中處理的對象,其中符號“+”應該存儲在字符型的變量中。除此之外,可以定義一個存放結果的對象。 其次,需要考
14、慮“10+20”這樣的表達式應該如何輸入?由于符號是存儲在字符型變量中,因此,輸入格式字符串應該是“%lf%c%lf”(運算對象定義成double類型)。輸入完成后,應根據(jù)符號的情況,做相應的計算,如符號是“+”,則計算兩數(shù)之和。關于多種符號的判斷,既可以用if語句實現(xiàn),也可以用switch 語句實現(xiàn)。2.程序設計程序設計 數(shù)據(jù)描述。數(shù)據(jù)描述。double number1,number2,result; /number1和和number2存放兩個運算的存放兩個運算的數(shù),數(shù),result存放結果存放結果char operator;/operator用于存放運算符用于存放運算符 算法設計。根據(jù)前面
15、的分析,算法步驟如下:算法設計。根據(jù)前面的分析,算法步驟如下:步驟步驟1:以:以“%lf%c%lf”的格式輸入的格式輸入number1、operator、number2的的值。值。步驟步驟2:判斷符號:判斷符號operator如果是如果是“+”,執(zhí)行加法運算,執(zhí)行加法運算如果是如果是“-”,執(zhí)行減法運算,執(zhí)行減法運算如果是如果是“*”,執(zhí)行乘法運算,執(zhí)行乘法運算如果是如果是“/”,判斷,判斷number2是否是零是否是零如果如果number2等于零,輸出等于零,輸出“除數(shù)不為零!除數(shù)不為零!”,并結束程序的執(zhí),并結束程序的執(zhí)行行否則,執(zhí)行除法運算否則,執(zhí)行除法運算否則,輸出否則,輸出“運算符超
16、出可計算的范圍運算符超出可計算的范圍”,并結束程序的執(zhí)行,并結束程序的執(zhí)行步驟步驟3:輸出運算結果:輸出運算結果3. 程序實現(xiàn)一:3. 程序實現(xiàn)二:if-elseif-else比比switchswitch的條件控制更強大一些的條件控制更強大一些 if-elseif-else可以依照各種邏輯進行流程控制可以依照各種邏輯進行流程控制 switchswitch只能進行只能進行=判斷,并且只能是判斷,并且只能是整數(shù)整數(shù)判等判等switchswitch比比if-elseif-else更更清晰清晰兩者都要盡量避免用得兩者都要盡量避免用得過多過多、過長過長,尤其不要,尤其不要嵌套得太多嵌套得太多 它們大大增
17、加程序的分支,使邏輯關系顯得混它們大大增加程序的分支,使邏輯關系顯得混亂,不易維護,易出錯亂,不易維護,易出錯1.任務描述任務描述本章本章繼續(xù)實現(xiàn)繼續(xù)實現(xiàn)“學生成績管理系統(tǒng)學生成績管理系統(tǒng)”的框架結構的框架結構。上一章完成了上一章完成了“主菜單的顯示主菜單的顯示”功能功能,本章實現(xiàn)用戶選,本章實現(xiàn)用戶選擇菜單的功能:擇菜單的功能:如如用戶輸入用戶輸入“1”字符,則程序輸出:字符,則程序輸出:您選擇了您選擇了“1創(chuàng)建成績單創(chuàng)建成績單”。2.數(shù)據(jù)描述數(shù)據(jù)描述由于程序要讀入并處理用戶輸入的菜單選項,因此由于程序要讀入并處理用戶輸入的菜單選項,因此需要定義一個存放菜單項的變量。菜單項變量的取值是需要定義一個存放菜單項的變量。菜單項變量的取值是08的數(shù)字,因
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 散裝行業(yè)話務員工作總結
- 2025-2030全球IP66工業(yè)平板電腦行業(yè)調研及趨勢分析報告
- 2025年全球及中國1,1,1,2,3,3,3-七氟丙烷行業(yè)頭部企業(yè)市場占有率及排名調研報告
- 2025年全球及中國可移動游泳池地板行業(yè)頭部企業(yè)市場占有率及排名調研報告
- 2025-2030全球噴丸研磨石行業(yè)調研及趨勢分析報告
- 2025年全球及中國超聲波和熱熔嵌件行業(yè)頭部企業(yè)市場占有率及排名調研報告
- 2025-2030全球振動供料系統(tǒng)行業(yè)調研及趨勢分析報告
- 2025年全球及中國晶圓旋轉清洗機行業(yè)頭部企業(yè)市場占有率及排名調研報告
- 2025年全球及中國振動脫油機行業(yè)頭部企業(yè)市場占有率及排名調研報告
- 2025年全球及中國藝術品和古董搬運服務行業(yè)頭部企業(yè)市場占有率及排名調研報告
- 人教版2024-2025學年八年級上學期數(shù)學期末壓軸題練習
- 【人教版化學】必修1 知識點默寫小紙條(答案背誦版)
- 江蘇省無錫市2023-2024學年八年級上學期期末數(shù)學試題(原卷版)
- 全國第三屆職業(yè)技能大賽(無人機駕駛(植保)項目)選拔賽理論考試題庫(含答案)
- 對口升學語文模擬試卷(10)-江西?。ń馕霭妫?/a>
- 《奧特萊斯業(yè)態(tài)淺析》課件
- 2022年湖南省公務員錄用考試《申論》真題(縣鄉(xiāng)卷)及答案解析
- 國家安全教育課程教學大綱分享
- 養(yǎng)殖場獸醫(yī)服務合同
- 電氣工程及其自動化基礎知識單選題100道及答案解析
- HR六大板塊+三支柱體系
評論
0/150
提交評論