




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
4單元選擇結(jié)構(gòu)程序設(shè)計(jì)C語(yǔ)言程序設(shè)計(jì)任務(wù)驅(qū)動(dòng)式就像程序中的每一步操作都必須精確無(wú)誤,生活中的每一個(gè)選擇和行為也都應(yīng)該遵循法律法規(guī)和道德規(guī)范。程序中的錯(cuò)誤可能導(dǎo)致程序崩潰或者運(yùn)行異常,而生活中的錯(cuò)誤選擇則可能引發(fā)嚴(yán)重的后果。因此,在編寫(xiě)程序時(shí),我們需要細(xì)心、嚴(yán)謹(jǐn),確保每一步的正確性;同樣,在生活中,當(dāng)遇到人生的十字路口時(shí),我們也需要樹(shù)立正確的價(jià)值觀和道德觀,根據(jù)自己的目標(biāo)和理想做出正確的選擇和決策。在C語(yǔ)言中,有一種程序結(jié)構(gòu)稱作選擇結(jié)構(gòu)或分支結(jié)構(gòu),它是結(jié)構(gòu)化程序設(shè)計(jì)的3種基本結(jié)構(gòu)之一。選擇結(jié)構(gòu)使程序具備根據(jù)不同的邏輯條件進(jìn)行不同處理的功能,可以對(duì)給定的條件進(jìn)行判斷,并根據(jù)判斷結(jié)果執(zhí)行不同的語(yǔ)句序列。在大多數(shù)結(jié)構(gòu)化程序設(shè)計(jì)問(wèn)題中讀者都將遇到選擇問(wèn)題,因此熟練掌握使用選擇結(jié)構(gòu)進(jìn)行程序設(shè)計(jì)是我們必須具備的能力。本單元的5個(gè)典型任務(wù)講解和分析了在C語(yǔ)言程序中選擇結(jié)構(gòu)程序設(shè)計(jì)的方法。問(wèn)題引入QuestionIntroduction目錄導(dǎo)航任務(wù)1身高預(yù)測(cè)—簡(jiǎn)單if語(yǔ)句的運(yùn)用任務(wù)2閏年判斷—if-else語(yǔ)句的運(yùn)用思考與訓(xùn)練單元小結(jié)任務(wù)3劃分考試成績(jī)等級(jí)—多重if語(yǔ)句的運(yùn)用任務(wù)4旅游景點(diǎn)門(mén)票打折問(wèn)題—嵌套if語(yǔ)句的運(yùn)用任務(wù)5設(shè)計(jì)一個(gè)小型計(jì)算器——switch語(yǔ)句的運(yùn)用任務(wù)1身高預(yù)測(cè)—簡(jiǎn)單if語(yǔ)句的運(yùn)用每個(gè)父母都關(guān)心自己孩子成年后的身高,據(jù)有關(guān)生理衛(wèi)生知識(shí)與數(shù)理統(tǒng)計(jì)分析可知,小孩成年后的身高與其父母的身高、自身的性別、飲食習(xí)慣與體育鍛煉情況等密切相關(guān)。設(shè)faheight為其父身高,moheight為其母身高,身高預(yù)測(cè)公式為男性成年后的身高=(faheight+moheight)*0.54(cm)女性成年后的身高=(faheight*0.923+moheight)/2(cm)此外,如果喜愛(ài)體育鍛煉,那么可增加身高2.3%;如果有良好的衛(wèi)生飲食習(xí)慣,那么可增加身高1.5%。工作任務(wù)任務(wù)1身高預(yù)測(cè)—簡(jiǎn)單if語(yǔ)句的運(yùn)用思路指導(dǎo)輸入:性別(用字符型變量sex存儲(chǔ),輸入字母g表示女性,輸入字符b表示男性)、父母身高(用實(shí)型變量存儲(chǔ),faheight為其父身高,moheight為其母身高)、是否喜愛(ài)體育鍛煉(用字符型變量sports存儲(chǔ),輸入字符y(或Y)表示喜愛(ài),輸入字符n(或N)表示不喜愛(ài))、是否有良好的飲食習(xí)慣(用字符型變量diet存儲(chǔ),輸入字符y(或Y)表示喜愛(ài),輸入字符n(或N)表示不喜愛(ài))。輸出:身高。處理:利用給定公式和身高預(yù)測(cè)方法對(duì)身高進(jìn)行預(yù)測(cè)。判斷條件:性別是男還是女、是否喜愛(ài)體育鍛煉、是否有良好的飲食習(xí)慣。(一)選擇結(jié)構(gòu)概述相關(guān)知識(shí)選擇結(jié)構(gòu)一般有以下3種。圖4-1單分支結(jié)構(gòu)圖4-2雙分支結(jié)構(gòu)圖4-3多分支結(jié)構(gòu)(二)解決選擇問(wèn)題的基本步驟和方法選擇結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)的3種結(jié)構(gòu)之一,也是常用的一種結(jié)構(gòu),在大多數(shù)的程序中都包含有選擇結(jié)構(gòu),一般來(lái)說(shuō)解決這樣的問(wèn)題用以下的方法和步驟。(1)判斷解決的問(wèn)題是否是選擇問(wèn)題。(4)用C語(yǔ)言描述。(2)若是選擇問(wèn)題,則判斷是哪種選擇結(jié)構(gòu)類型,是單分支、雙分支還是多分支結(jié)構(gòu)。(3)若是選擇問(wèn)題,則確定選擇結(jié)構(gòu)、選擇條件、執(zhí)行過(guò)程與結(jié)束過(guò)程。(三)條件的描述在程序中經(jīng)常需要比較兩個(gè)數(shù)據(jù)的大小,以決定程序下一步的工作,比較兩個(gè)數(shù)據(jù)大小的運(yùn)算符稱為關(guān)系運(yùn)算符。在C語(yǔ)言中,有以下關(guān)系運(yùn)算符。<小于<=小于或等于>大于>=大于或等于==等于!=不等于1.關(guān)系運(yùn)算符和關(guān)系表達(dá)式(三)條件的描述關(guān)系運(yùn)算符都是雙目運(yùn)算符,其結(jié)合性都是左結(jié)合。關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符,高于賦值運(yùn)算符,在6個(gè)關(guān)系運(yùn)算符中<、<=、>、>=優(yōu)先級(jí)相同,并高于==和!=,而==和!=的優(yōu)先級(jí)相同。關(guān)系表達(dá)式的一般形式為:表達(dá)式關(guān)系運(yùn)算符表達(dá)式例如,a+b>d+e、x<8/9、'a'+5>97都是合法的關(guān)系表達(dá)式。由于表達(dá)式也可以是關(guān)系表達(dá)式,因此也允許出現(xiàn)嵌套的情況。例如,a>(b>c)、a!=(c==d)。關(guān)系表達(dá)式的值為“真”或“假”,當(dāng)關(guān)系表達(dá)式成立時(shí),其值為1,當(dāng)關(guān)系表達(dá)式不成立時(shí),其值為0。(三)條件的描述C語(yǔ)言提供了3種邏輯運(yùn)算符。2.邏輯運(yùn)算符和邏輯表達(dá)式&&與運(yùn)算!非運(yùn)算與運(yùn)算“&&”是雙目運(yùn)算符,具有左結(jié)合性或運(yùn)算“||”
是雙目運(yùn)算符,具有左結(jié)合性非運(yùn)算符“!”是單目運(yùn)算符,具有右結(jié)合性。||或運(yùn)算條件的描述“&&”和“||”的優(yōu)先級(jí)低于算術(shù)運(yùn)算符和關(guān)系運(yùn)算符,而“!”的優(yōu)先級(jí)則高于算術(shù)運(yùn)算符和關(guān)系運(yùn)算符,按照運(yùn)算符的優(yōu)先級(jí)別可以得出a>b&&c>d 等價(jià)于
(a>b)&&(c>d)!b==c||d<a 等價(jià)于
((!b)==c)||(d<a)a+b>c&&x+y>b 等價(jià)于
(a+b>c)&&(x+y>b)ab!aa&&ba||b真真假真真真假假假真假真真假真假假真假假表4-1邏輯運(yùn)算值表邏輯表達(dá)式的一般形式為表達(dá)式邏輯運(yùn)算符表達(dá)式其中的表達(dá)式又可以是邏輯表達(dá)式,從而組成嵌套的情形。(四)簡(jiǎn)單if語(yǔ)句(單分支if語(yǔ)句)1.簡(jiǎn)單if語(yǔ)句(單分支if語(yǔ)句)的語(yǔ)法格式if(表達(dá)式)//條件判斷{語(yǔ)句組}//執(zhí)行的操作2.簡(jiǎn)單if語(yǔ)句的執(zhí)行過(guò)程簡(jiǎn)單if語(yǔ)句的流程圖如圖4-4所示,當(dāng)條件成立時(shí),執(zhí)行語(yǔ)句序列,條件不成立時(shí),跳過(guò)語(yǔ)句序列,執(zhí)行后續(xù)語(yǔ)句。圖4-4簡(jiǎn)單if語(yǔ)句流程圖任務(wù)1身高預(yù)測(cè)—簡(jiǎn)單if語(yǔ)句的運(yùn)用任務(wù)實(shí)施1.流程圖程序流程圖如圖4-5所示。#include<stdio.h>voidmain(){charsex;/*孩子性別*/charsports;/*是否喜歡體育運(yùn)動(dòng)*/chardiet;/*是否有良好的飲食習(xí)慣*/floatmyheight;/*孩子身高*/floatfaheight;/*父親身高*/floatmoheight;/*母親身高*/
圖4-5任務(wù)1流程圖任務(wù)1身高預(yù)測(cè)—簡(jiǎn)單if語(yǔ)句的運(yùn)用任務(wù)實(shí)施printf("你是男孩(b)還是女孩(g)?");scanf("%1s",&sex);printf("輸入你爸爸的身高(cm):");scanf("%f",&faheight);printf("輸入你媽媽的身高(cm):");
scanf("%f",&moheight);printf("你是否喜歡體育鍛煉(Y/N)?");scanf("%1s",&sports);printf("是否有良好的飲食習(xí)慣等條件(Y/N)?");
scanf("%1s",&diet);
if(sex=='b'||sex=='B')myheight=(faheight+moheight)*0.54;if(sex=='g'||sex=='G')myheight=(faheight*0.923+moheight)/2.0;if(sports=='Y'||sports=='y')myheight=myheight*(1+0.023);if(diet=='Y'||diet=='y')myheight=myheight*(1+0.015);printf("Yourfutureheightwillbe%6.2f(cm)\n",myheight);}任務(wù)1身高預(yù)測(cè)—簡(jiǎn)單if語(yǔ)句的運(yùn)用特別提示(1)if后面的表達(dá)式一定要有圓括號(hào)(2)表達(dá)式一般情況下是關(guān)系表達(dá)式和邏輯表達(dá)式,也可以是任意類型的合法C語(yǔ)言表達(dá)式,但計(jì)算結(jié)果必須為整型、字符型或浮點(diǎn)型之一。(3)語(yǔ)句序列如果為單條語(yǔ)句,可以不加大括號(hào),如果是多條語(yǔ)句,則一定要加大括號(hào),構(gòu)成復(fù)合語(yǔ)句。目錄導(dǎo)航任務(wù)1身高預(yù)測(cè)—簡(jiǎn)單if語(yǔ)句的運(yùn)用任務(wù)2閏年判斷—if-else語(yǔ)句的運(yùn)用思考與訓(xùn)練單元小結(jié)任務(wù)3劃分考試成績(jī)等級(jí)—多重if語(yǔ)句的運(yùn)用任務(wù)4旅游景點(diǎn)門(mén)票打折問(wèn)題—嵌套if語(yǔ)句的運(yùn)用任務(wù)5設(shè)計(jì)一個(gè)小型計(jì)算器——switch語(yǔ)句的運(yùn)用任務(wù)2閏年判斷—if-else語(yǔ)句的運(yùn)用閏年和閏月的故事是歷法制定和文化習(xí)俗交織而成的。它們不僅體現(xiàn)了人類對(duì)于時(shí)間和季節(jié)的深刻理解和智慧,也在某種程度上影響了我們的日常生活和文化傳承。在一次聯(lián)歡晚會(huì)上,為了活躍氣氛,主持人隨機(jī)說(shuō)出一個(gè)年份,讓在場(chǎng)的觀眾說(shuō)出是否為閏年,說(shuō)對(duì)的發(fā)給一些小獎(jiǎng)品。你能設(shè)計(jì)一個(gè)應(yīng)用程序,判斷某一年是否為閏年嗎?工作任務(wù)任務(wù)2閏年判斷—if-else語(yǔ)句的運(yùn)用思路指導(dǎo)輸入:輸入的年份存儲(chǔ)到變量y中。輸出:是或者否。判斷條件:閏年的條件—年份能被4整除并且不能被100整除或者能被400整除。處理:根據(jù)不同的條件給變量leap賦予不同的值1或0,再根據(jù)變量leap值的不同分別進(jìn)行不同的處理。任務(wù)2閏年判斷—if-else語(yǔ)句的運(yùn)用相關(guān)知識(shí)1.if-else語(yǔ)句(雙分支if語(yǔ)句)的語(yǔ)法格式if(表達(dá)式){語(yǔ)句序列1}else{語(yǔ)句序列2}2.if-else語(yǔ)句的執(zhí)行過(guò)程if-else語(yǔ)句執(zhí)行過(guò)程如圖4-7所示,當(dāng)條件為真時(shí),執(zhí)行語(yǔ)句序列1,當(dāng)條件為假時(shí),執(zhí)行語(yǔ)句序列2。圖4-7
if-else語(yǔ)句的執(zhí)行過(guò)程任務(wù)2閏年判斷—if-else語(yǔ)句的運(yùn)用任務(wù)實(shí)施1.流程圖程序流程圖如圖4-8所示。2.程序代碼#include<stdio.h>voidmain(){inty,leap;printf("請(qǐng)輸入一個(gè)年份:");scanf("%d",&y);圖4-8任務(wù)2流程圖任務(wù)2閏年判斷—if-else語(yǔ)句的運(yùn)用任務(wù)實(shí)施if((y%4==0)&&(y%100!=0)||(y%400==0))//判斷閏年的條件
leap=1;elseleap=0;if(leap==1)printf("%d年是一個(gè)閏年",y);elseprintf("%d年不是一個(gè)閏年",y);}程序運(yùn)行結(jié)果如圖4-9所示。圖4-9任務(wù)2運(yùn)行結(jié)果任務(wù)2閏年判斷—if-else語(yǔ)句的運(yùn)用特別提示(1)if和else同屬于一個(gè)if語(yǔ)句,else不能作為語(yǔ)句單獨(dú)使用,它只是if語(yǔ)句的一部分,與if配對(duì)使用,因此程序中不可以沒(méi)有if而只有else。(2)只能執(zhí)行與if有關(guān)的語(yǔ)句或者執(zhí)行與else有關(guān)的語(yǔ)句,而不可能同時(shí)執(zhí)行兩者。(3)如果<語(yǔ)句1>和<語(yǔ)句2>是非復(fù)合語(yǔ)句,那么該語(yǔ)句一定要以分號(hào)結(jié)束。目錄導(dǎo)航任務(wù)1身高預(yù)測(cè)—簡(jiǎn)單if語(yǔ)句的運(yùn)用任務(wù)2閏年判斷—if-else語(yǔ)句的運(yùn)用思考與訓(xùn)練單元小結(jié)任務(wù)3劃分考試成績(jī)等級(jí)—多重if語(yǔ)句的運(yùn)用任務(wù)4旅游景點(diǎn)門(mén)票打折問(wèn)題—嵌套if語(yǔ)句的運(yùn)用任務(wù)5設(shè)計(jì)一個(gè)小型計(jì)算器——switch語(yǔ)句的運(yùn)用任務(wù)3劃分考試成績(jī)等級(jí)—多重if語(yǔ)句的運(yùn)用在大學(xué)的課程成績(jī)?cè)u(píng)定中,經(jīng)常把學(xué)生的成績(jī)分成優(yōu)秀、良好、中等、及格和不及格5個(gè)等級(jí)。其中小于60分的為不及格;60~70分的為及格;70~80分的為中等;80~90分的為良好;90分以上的為優(yōu)秀。編寫(xiě)一個(gè)程序,要求輸入一個(gè)學(xué)生的考試成績(jī),輸出其與分?jǐn)?shù)對(duì)應(yīng)的等級(jí)。工作任務(wù)任務(wù)3劃分考試成績(jī)等級(jí)—多重if語(yǔ)句的運(yùn)用思路指導(dǎo)輸入:輸入學(xué)生的成績(jī)存儲(chǔ)到變量score中。輸出:根據(jù)學(xué)生的成績(jī)輸出學(xué)生的等級(jí)。條件判斷:判斷學(xué)生成績(jī)符合哪個(gè)范圍。處理:根據(jù)判斷,輸出學(xué)生的等級(jí)。任務(wù)3劃分考試成績(jī)等級(jí)—多重if語(yǔ)句的運(yùn)用相關(guān)知識(shí)1.多重if語(yǔ)句(多分支if語(yǔ)句)的語(yǔ)法格式if(表達(dá)式1){語(yǔ)句體1}elseif(表達(dá)式2){語(yǔ)句體2}elseif(表達(dá)式3){語(yǔ)句體3}…elseif(表達(dá)式n){語(yǔ)句體n}else{語(yǔ)句體n+1}2.執(zhí)行過(guò)程先判斷表達(dá)式1的值,若表達(dá)式1的值為真,則執(zhí)行語(yǔ)句體1,然后跳出選擇結(jié)構(gòu),繼續(xù)執(zhí)行選擇結(jié)構(gòu)下邊的語(yǔ)句;若表達(dá)式1的值為假,則不執(zhí)行語(yǔ)句體1,再來(lái)判斷表達(dá)式2的值是否為真,如果表達(dá)式2為真,則執(zhí)行語(yǔ)句體2,然后跳出選擇語(yǔ)句結(jié)構(gòu),若為假,則繼續(xù)判斷表達(dá)式3是否為真……以此類推,如果所有的條件都不成立,則執(zhí)行最后一個(gè)else下面的語(yǔ)句體n+1,然后繼續(xù)執(zhí)行選擇結(jié)構(gòu)下面的語(yǔ)句。任務(wù)3劃分考試成績(jī)等級(jí)—多重if語(yǔ)句的運(yùn)用任務(wù)實(shí)施1.流程圖程序流程圖如圖4-10所示。2.程序代碼#include<stdio.h>voidmain(){intscore;printf("請(qǐng)輸入一個(gè)學(xué)生的成績(jī):");scanf("%d",&score);if(score<60)printf("不及格");圖4-8任務(wù)2流程圖任務(wù)3劃分考試成績(jī)等級(jí)—多重if語(yǔ)句的運(yùn)用任務(wù)實(shí)施elseif(score<70)printf("及格");elseif(score<80)printf("中等");elseif(score<90)printf("良好");elseif(score<=100)printf("優(yōu)秀");}程序運(yùn)行結(jié)果如圖4-11所示。圖4-11任務(wù)3運(yùn)行結(jié)果任務(wù)3劃分考試成績(jī)等級(jí)—多重if語(yǔ)句的運(yùn)用特別提示多重if語(yǔ)句更適用于區(qū)間判斷。如果if后的表達(dá)式只寫(xiě)了半幅,如score<80,而不是score>=70&&score<80,那么if后的表達(dá)式順序不能顛倒,否則得不到希望的結(jié)果。目錄導(dǎo)航任務(wù)1身高預(yù)測(cè)—簡(jiǎn)單if語(yǔ)句的運(yùn)用任務(wù)2閏年判斷—if-else語(yǔ)句的運(yùn)用思考與訓(xùn)練單元小結(jié)任務(wù)3劃分考試成績(jī)等級(jí)—多重if語(yǔ)句的運(yùn)用任務(wù)4旅游景點(diǎn)門(mén)票打折問(wèn)題—嵌套if語(yǔ)句的運(yùn)用任務(wù)5設(shè)計(jì)一個(gè)小型計(jì)算器——switch語(yǔ)句的運(yùn)用任務(wù)4旅游景點(diǎn)門(mén)票打折問(wèn)題—嵌套if語(yǔ)句的運(yùn)用旅游景點(diǎn)為吸引游客,旺季和淡季門(mén)票價(jià)格不同,旺季為每年5—10月份,門(mén)票價(jià)格為200元,淡季門(mén)票價(jià)格是旺季的八折。不論是旺季還是淡季,65歲以上老人免票,14歲以下兒童半價(jià),其余游客全價(jià)。請(qǐng)編寫(xiě)一個(gè)景點(diǎn)門(mén)票計(jì)費(fèi)程序。工作任務(wù)任務(wù)4旅游景點(diǎn)門(mén)票打折問(wèn)題—嵌套if語(yǔ)句的運(yùn)用思路指導(dǎo)輸入:輸入游覽月份存儲(chǔ)到變量month中,輸入游客年齡存儲(chǔ)到變量age中,景點(diǎn)門(mén)票單價(jià)存儲(chǔ)到變量price中。輸出:游客應(yīng)付門(mén)票金額money。判斷條件:先判斷是淡季還是旺季,再在淡季或旺季條件內(nèi)判斷游客年齡。處理:根據(jù)淡季或旺季、游客年齡計(jì)算票價(jià)并輸出。任務(wù)4旅游景點(diǎn)門(mén)票打折問(wèn)題—嵌套if語(yǔ)句的運(yùn)用相關(guān)知識(shí)嵌套if語(yǔ)句基本概念:if語(yǔ)句體中又出現(xiàn)了if語(yǔ)句,或else子句中又出現(xiàn)了if語(yǔ)句,稱為if語(yǔ)句的嵌套。任務(wù)4旅游景點(diǎn)門(mén)票打折問(wèn)題—嵌套if語(yǔ)句的運(yùn)用任務(wù)實(shí)施1.流程圖程序流程圖如圖4-12所示。2.程序代碼#include<stdio.h>voidmain(){intmonth,age;floatprice=200,money;printf("請(qǐng)輸入游覽月份:");scanf("%d",&month);//輸入月份printf("請(qǐng)輸入游客年齡:");圖4-8任務(wù)2流程圖任務(wù)4旅游景點(diǎn)門(mén)票打折問(wèn)題—嵌套if語(yǔ)句的運(yùn)用任務(wù)實(shí)施scanf("%d",&age);//輸入游客的年齡if(month>=5&&month<=10)//是旅游旺季嗎
if(age>=65)money=0;//年齡是65歲以上嗎
elseif(age<14)money=price/2;//年齡是14歲以下嗎
elsemoney=price;elseif(age>=65)money=0;elseif(age<14)money=price*0.8/2;elsemoney=price*0.8;printf("該游客應(yīng)購(gòu)買門(mén)票價(jià)格為%.2f元",money);}程序運(yùn)行結(jié)果如圖4-13所示。圖4-13任務(wù)4運(yùn)行結(jié)果任務(wù)4旅游景點(diǎn)門(mén)票打折問(wèn)題—嵌套if語(yǔ)句的運(yùn)用特別提示(1)嵌套if語(yǔ)句的使用非常靈活,不僅單分支的if可以嵌套,其他形式的if語(yǔ)句也可以嵌套。被嵌套的if語(yǔ)句本身又可以是一個(gè)嵌套的if語(yǔ)句,稱為if語(yǔ)句的多重嵌套。(2)在多重嵌套的if語(yǔ)句中,else總是與離它最近并且沒(méi)有與其他else配對(duì)的if語(yǔ)句配對(duì)。目錄導(dǎo)航任務(wù)1身高預(yù)測(cè)—簡(jiǎn)單if語(yǔ)句的運(yùn)用任務(wù)2閏年判斷—if-else語(yǔ)句的運(yùn)用思考與訓(xùn)練單元小結(jié)任務(wù)3劃分考試成績(jī)等級(jí)—多重if語(yǔ)句的運(yùn)用任務(wù)4旅游景點(diǎn)門(mén)票打折問(wèn)題—嵌套if語(yǔ)句的運(yùn)用任務(wù)5設(shè)計(jì)一個(gè)小型計(jì)算器——switch語(yǔ)句的運(yùn)用任務(wù)5設(shè)計(jì)一個(gè)小型計(jì)算器——switch語(yǔ)句的運(yùn)用編寫(xiě)一個(gè)小型計(jì)算器程序,該程序應(yīng)能夠接受用戶輸入的兩個(gè)數(shù)字,并根據(jù)所選的功能項(xiàng)執(zhí)行相應(yīng)的數(shù)學(xué)運(yùn)算(加、減、乘、除)。在程序設(shè)計(jì)和實(shí)現(xiàn)過(guò)程中,應(yīng)體現(xiàn)科學(xué)精神、邏輯思維、嚴(yán)謹(jǐn)態(tài)度等,通過(guò)編寫(xiě)和使用計(jì)算器程序,旨在提升學(xué)生的編程技能,同時(shí)培養(yǎng)學(xué)生的理性思維、解決問(wèn)題的能力以及正確的價(jià)值觀。工作任務(wù)任務(wù)5設(shè)計(jì)一個(gè)小型計(jì)算器——switch語(yǔ)句的運(yùn)用思路指導(dǎo)輸入:輸入的計(jì)算類型存儲(chǔ)到變量n中,輸入的兩個(gè)數(shù)據(jù)分別存儲(chǔ)到a和b兩個(gè)變量中。輸出:根據(jù)不同的計(jì)算得出計(jì)算結(jié)果。條件判斷:根據(jù)輸入的n值的不同進(jìn)行判斷。處理:根據(jù)不同的n值進(jìn)行不同的運(yùn)算。任務(wù)5設(shè)計(jì)一個(gè)小型計(jì)算器——switch語(yǔ)句的運(yùn)用相關(guān)知識(shí)1.switch語(yǔ)句switch語(yǔ)句屬于多分支選擇結(jié)構(gòu),和多分支if語(yǔ)句的功能基本相同,也用來(lái)處理程序中出現(xiàn)的多分支情況。switch語(yǔ)句通常適用于條件表達(dá)式的取值為多個(gè)離散而不連續(xù)的整型值(或字符型值)的情況,用來(lái)實(shí)現(xiàn)多分支選擇結(jié)構(gòu)。2.switch語(yǔ)句語(yǔ)法格式switch(<表達(dá)式>){case<常量表達(dá)式1>:<語(yǔ)句序列1>[break];case<常量表達(dá)式2>:<語(yǔ)句序列2>[break];……case<常量表達(dá)式n>:<語(yǔ)句序列n>[break];[default:<語(yǔ)句序列n+1>]}任務(wù)5設(shè)計(jì)一個(gè)小型計(jì)算器——switch語(yǔ)句的運(yùn)用3.執(zhí)行過(guò)程圖4-14多分支結(jié)構(gòu)執(zhí)行過(guò)程switch結(jié)構(gòu)中沒(méi)有break的執(zhí)行過(guò)程:首先計(jì)算<表達(dá)式>的值,當(dāng)表達(dá)式的值與某一個(gè)case后面的常量表達(dá)式的值相等(匹配)時(shí),執(zhí)行此case后的語(yǔ)句序列;執(zhí)行完后,轉(zhuǎn)到下一個(gè)case繼續(xù)執(zhí)行,直到switch語(yǔ)句體結(jié)束。如果表達(dá)式的值與case后面的常量表達(dá)式的值都不匹配,并且存在default標(biāo)號(hào),則執(zhí)行default后的語(yǔ)句,直到switch語(yǔ)句體結(jié)束。任務(wù)5設(shè)計(jì)一個(gè)小型計(jì)算器——switch語(yǔ)句的運(yùn)用任務(wù)實(shí)施小型計(jì)算器的程序設(shè)計(jì)使用了多路分支語(yǔ)句(switch語(yǔ)句),軟件界面友好,操作簡(jiǎn)單,易于使用。1.流程圖程序流程圖如圖4-15所示。2.程序代碼#include<stdio.h>voidmain(){inta,b,n;printf("********************************************\n");printf("歡迎使用小型計(jì)算器\n");圖4-15任務(wù)5流程圖任務(wù)5設(shè)計(jì)一個(gè)小型計(jì)算器——switch語(yǔ)句的運(yùn)用任務(wù)實(shí)施printf("設(shè)計(jì)人:李麗紅\n");printf("********************************************\n");printf("1.加法運(yùn)算\n");printf("2.減法運(yùn)算\n");printf("3.乘法運(yùn)算\n");printf("4.除法運(yùn)算\n");printf("5.退出\n");printf("********************************************\n");printf("\n");printf("請(qǐng)選擇:");scanf("%d",&n);任務(wù)5設(shè)計(jì)一個(gè)小型計(jì)算器——switch語(yǔ)句的運(yùn)用任務(wù)實(shí)施switch(n){case1:printf("請(qǐng)輸入兩個(gè)數(shù):");scanf("%d%d",&a,&b);printf("兩數(shù)相加是:%d",a+b);break;case2:printf("請(qǐng)輸入兩個(gè)數(shù):");scanf("%d%d",&a,&b);printf("兩數(shù)相減是:%d",a-b);break;case3:printf("請(qǐng)輸入兩個(gè)數(shù):");scanf("%d%d",&a,&b);printf("兩數(shù)相乘是:%d",a*b);break;case4:printf("請(qǐng)輸入兩個(gè)數(shù):");scanf("%d%d",&a,&b);
printf("兩數(shù)相除是:%6.2f",(float)a/b);
break;case5:exit(0);}}程序運(yùn)行結(jié)果如圖4-16所示。圖4-16任務(wù)5運(yùn)行結(jié)果任務(wù)5設(shè)計(jì)一個(gè)小型計(jì)算器——switch語(yǔ)句的運(yùn)用特別提示(1)switch語(yǔ)句是關(guān)鍵字,其后面大括號(hào)中括起來(lái)的部分稱為switch語(yǔ)句體。要特別注意必須寫(xiě)這一對(duì)大括號(hào)。(2)switch后表達(dá)式的運(yùn)算結(jié)果可以是整型、字符型和枚舉型表達(dá)式等,<表達(dá)式>兩邊的括號(hào)不能省略。(3)每一個(gè)case后的常量表達(dá)式的值不能相同。(4)default部分是可選的,且可以寫(xiě)在switch語(yǔ)句體中的任意位置,但可能會(huì)影響程序的運(yùn)行結(jié)果。任務(wù)5設(shè)計(jì)一個(gè)小型計(jì)算器——switch語(yǔ)句的運(yùn)用例4.1通過(guò)鍵盤(pán)輸入一個(gè)年份和月份,判斷該月份為多少天(用switch語(yǔ)句完成,體會(huì)break的用法)#include"stdio.h"voidmain(){intyear,month,leap;printf("請(qǐng)輸入一個(gè)年份");scanf("%d",&year);printf("請(qǐng)輸入一個(gè)月份");scanf("%d",&month);switch(month){case1:case3:case5:case7:case8:case10:case12:printf("該月為31天");break;case4:case6:case9:case11:printf("該月為30天");break;case2:if((year%4==0)&&(year%100!=0)||(year%400==0))printf("該月為29天");elseprintf("該月為28天");break;}}任務(wù)5設(shè)計(jì)一個(gè)小型計(jì)算器——switch語(yǔ)句的運(yùn)用例4.2編寫(xiě)一個(gè)程序,要求輸入一個(gè)學(xué)生的考試成績(jī),輸出其分?jǐn)?shù)和對(duì)應(yīng)的等級(jí)學(xué)生成績(jī)分為5個(gè)等級(jí):小于60分的為不及格;60~70分的為及格;70~80分的為中等;80~90分的為良好;90分以上的為優(yōu)秀(用switch語(yǔ)句完成)。#include<stdio.h>voidmain(){intscore;printf("請(qǐng)輸入一個(gè)學(xué)生的成績(jī):");scanf("%d",&score);switch(score/10){case10:case9:printf("優(yōu)秀");break;case8:printf("良好");break;case7:printf("中等");break;case6:printf("及格");break;default:printf("不及格");break;}}拓展與提高任務(wù)5設(shè)計(jì)一個(gè)小型計(jì)算器——switch語(yǔ)句的運(yùn)用1.條件運(yùn)算符和條件表達(dá)式條件運(yùn)算符用“?:”來(lái)表示,它是C語(yǔ)言中唯一的一個(gè)三目運(yùn)算符。條件表達(dá)式的一般形式為表達(dá)式1?表達(dá)式2:表達(dá)式3運(yùn)算過(guò)程是:先計(jì)算表達(dá)式1的值,若為非零(真),則計(jì)算表達(dá)式2的值,此時(shí)表達(dá)式2的值就是整個(gè)條件表達(dá)式的值;若表達(dá)式1的值為零(假),則計(jì)算表達(dá)式3的值,此時(shí)表達(dá)式3的值就是整個(gè)條件表達(dá)式的值。任務(wù)5設(shè)計(jì)一個(gè)小型計(jì)算器——switch語(yǔ)句的運(yùn)用(2)條件運(yùn)算符的優(yōu)先級(jí)高于賦值運(yùn)算符,但低于算術(shù)運(yùn)算符、關(guān)系運(yùn)算符和邏輯運(yùn)算符。例如,max=x>y?x:y,其中x=4,y=3,運(yùn)算后,整個(gè)條件表達(dá)式的值為4,最后賦值給變量max。(1)表達(dá)式2和表達(dá)式3中只能有一個(gè)被求解,不可能兩個(gè)同時(shí)被求解,例如,a>b?a++:++b,其中a=2,b=5,運(yùn)算后,整個(gè)條件表達(dá)式的值是6,而a的值還是2,b的值變成6。(3)條件運(yùn)算符的結(jié)合性為右結(jié)合,例如,a>b?a:c>d?c:d相當(dāng)于a>b?a:(c>d?c:d),其中a=1,b=2,c=3,d=4,則整個(gè)條件表達(dá)式的值是4。任務(wù)5設(shè)計(jì)一個(gè)小型計(jì)算器——switch語(yǔ)句的運(yùn)用2.運(yùn)算符的優(yōu)先級(jí)和短路運(yùn)算符在C語(yǔ)言中,&&、||也稱作短路與、短路或,即在一個(gè)或多個(gè)&&相連的表達(dá)式中,只要第一個(gè)操作數(shù)為假,就不再運(yùn)算其他操作數(shù),整個(gè)表達(dá)式的結(jié)果為0;而在一個(gè)或多個(gè)||相連的表達(dá)式中,只要第一個(gè)操作數(shù)為真,就不再運(yùn)算其他操作數(shù),整個(gè)表達(dá)式的結(jié)果為1。例4.3邏輯與和邏輯或運(yùn)算的短路運(yùn)算#include<stdio.h>voidmain(){intx,y,z;x=y=z=-1;++x&&++y||++z;//邏輯與操作有短路運(yùn)算
printf("x=%d\ty=%d\tz=%d\n",x,y,z);x=y=z=-1;x++||++y||++z;//邏輯或操作有短路運(yùn)算printf("x=%d\ty=%d\tz=%d\n",x,y,z);x=y=z=-1;++x&&++y&&++z;//注意短路運(yùn)算
printf("x=%d\ty=%d\tz=%d\n",x,y,z);}程序運(yùn)行結(jié)果為x=0y=-1z=0x=0y=-1z=-1x=0y=-1z=-1目錄導(dǎo)航任務(wù)1身高預(yù)測(cè)—簡(jiǎn)單if語(yǔ)句的運(yùn)用任務(wù)2閏年判斷—if-else語(yǔ)句的運(yùn)用思考與訓(xùn)練單元小結(jié)任務(wù)3劃分考試成績(jī)等級(jí)—多重if語(yǔ)句的運(yùn)用任務(wù)4旅游景點(diǎn)門(mén)票打折問(wèn)題—嵌套if語(yǔ)句的運(yùn)用任務(wù)5設(shè)計(jì)一個(gè)小型計(jì)算器——switch語(yǔ)句的運(yùn)用單元小結(jié)Summary本單元重點(diǎn)討論了選擇結(jié)構(gòu)程序?qū)崿F(xiàn)的用法,選擇結(jié)構(gòu)用于實(shí)現(xiàn)條件判斷,在兩個(gè)或多個(gè)情況中做出選擇。簡(jiǎn)單if結(jié)構(gòu)、if-else結(jié)構(gòu)、多重if結(jié)構(gòu)、嵌套if結(jié)構(gòu)以及switch結(jié)構(gòu)是C語(yǔ)言的選擇結(jié)構(gòu)語(yǔ)句,本單元結(jié)合有代表性的實(shí)例介紹,分析了選擇結(jié)構(gòu)語(yǔ)句的用法。通過(guò)本單元的學(xué)習(xí),讀者能夠了解選擇結(jié)構(gòu)程序設(shè)計(jì)的特點(diǎn)和一般規(guī)律,編寫(xiě)程序時(shí)應(yīng)從可讀性、健壯性和程序效率等多方面進(jìn)行綜合考慮,使用合適的語(yǔ)句結(jié)構(gòu),以提高代碼質(zhì)量。目錄導(dǎo)航任務(wù)1身高預(yù)測(cè)—簡(jiǎn)單if語(yǔ)句的運(yùn)用任務(wù)2閏年判斷—if-else語(yǔ)句的運(yùn)用思考與訓(xùn)練單元小結(jié)任務(wù)3劃分考試成績(jī)等級(jí)—多重if語(yǔ)句的運(yùn)用任務(wù)4旅游景點(diǎn)門(mén)票打折問(wèn)題—嵌套if語(yǔ)句的運(yùn)用任務(wù)5設(shè)計(jì)一個(gè)小型計(jì)算器——switch語(yǔ)句的運(yùn)用思考與訓(xùn)練1.討論題(1)嵌套if語(yǔ)句和多重if語(yǔ)句有何區(qū)別?舉例說(shuō)明在實(shí)際編程過(guò)程中,這兩種選擇依據(jù)能否用來(lái)解決相同的問(wèn)題?(2)多重if語(yǔ)句與switch語(yǔ)句能否相互替換?考慮其分別適用的場(chǎng)合。Thinkingandpracticing2.選擇題(1)邏輯運(yùn)算符兩側(cè)運(yùn)算對(duì)象的數(shù)據(jù)類型()。A.只能是0或1 B.只能是0或非0正數(shù)C.只能是整型或字符型數(shù)據(jù) D.可以是任意類型的數(shù)據(jù)(2)判斷char型變量ch是否為大寫(xiě)字母的正確表達(dá)式是()。A.'A'<=ch<='Z' B.(ch>='A')&(ch<='Z')C.(ch>='A')&&(ch<='Z') D.(ch>='A')AND(ch<='Z')思考與訓(xùn)練(3)已知intx=10,y=20,z=30;,以下語(yǔ)句執(zhí)行后,x、y、z的值是()。if(x>y)z=x;x=y;y=z;A.x=10,y=20,z=30 B.x=20,y=30,z=30C.x=20,y=30,z=10 D.x=20,y=30,z=20(4)當(dāng)a=1,b=3,c=5,d=4時(shí),執(zhí)行完下面的程序段后,x的值是()。if(a<b)if(c<d)elseif(a<c)
if(b<d)x=2;
elsex=3;
elsex=6;
elsex=7;A.1 B.2 C.3 D.6Thinkingandpracticing思考與訓(xùn)練Thinkingandpractic
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 房產(chǎn)買賣合同指南
- 輕鋼別墅銷售合同范本
- 遼寧省葫蘆島市興城市2020-2021學(xué)年八年級(jí)上學(xué)期期末考試物理試題【含答案】
- 駕校教練車租賃合同
- 鋼筋工程分包合同協(xié)議書(shū)
- 中介銷售合作合同范本2025
- 初中英語(yǔ)教科版(五四學(xué)制)九年級(jí)上冊(cè)Unit 4 Growing Good Corn一等獎(jiǎng)教案
- 腸梗阻患者護(hù)理查房
- 11變廢為寶有妙招 公開(kāi)課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì) (表格式)
- 2《共建美好集體》表格式公開(kāi)課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì)
- 高考英語(yǔ)核心詞匯1000個(gè)
- 美術(shù)四年級(jí)國(guó)測(cè)模擬題(滿分50分)附有答案
- 2024年度保密教育線上培訓(xùn)考試題庫(kù)新版
- 快遞驛站承包協(xié)議書(shū)
- 人教版語(yǔ)文七年級(jí)下生字詞練習(xí)看拼音寫(xiě)詞語(yǔ)
- 地坪漆專項(xiàng)施工方案及流程
- 病原微生物實(shí)驗(yàn)活動(dòng)風(fēng)險(xiǎn)評(píng)估表
- 水工藝與工程新技術(shù)智慧樹(shù)知到期末考試答案章節(jié)答案2024年西安建筑科技大學(xué)
- 小學(xué)三年級(jí)下冊(cè) 譯林版英語(yǔ):期中復(fù)習(xí)重點(diǎn)整合
- 2024年輔警招聘考試試題庫(kù)含完整答案(各地真題)
- 電纜敷設(shè)施工技術(shù)經(jīng)驗(yàn)分享與案例分析重難點(diǎn)施工技術(shù)分享與討論
評(píng)論
0/150
提交評(píng)論