




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第三章第三章 程序的控制結(jié)構(gòu)程序的控制結(jié)構(gòu)w第一節(jié)第一節(jié) 概述概述w第二節(jié)第二節(jié) if選擇結(jié)構(gòu)選擇結(jié)構(gòu)w第三節(jié)第三節(jié) switch語(yǔ)句語(yǔ)句第一節(jié)第一節(jié) 概述概述w 程序由若干條語(yǔ)句組成,各語(yǔ)句按照順序一條一條地執(zhí)行,這種順序結(jié)構(gòu)是簡(jiǎn)潔的。但在現(xiàn)實(shí)世界中,在解決問(wèn)題的過(guò)程中,不可避免地遇到需要進(jìn)行選擇、或需要循環(huán)工作的情況。這時(shí),程序執(zhí)行的順序需要發(fā)生變化,而非從前向后逐一執(zhí)行。因此,程序中除了順序結(jié)構(gòu)以外,通常還有選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)以及轉(zhuǎn)移機(jī)制。w C+為了支持這些控制結(jié)構(gòu),提供了豐富、靈活的控制語(yǔ)句。從結(jié)構(gòu)化程序設(shè)計(jì)的觀點(diǎn)看,所有程序都可用3種控制結(jié)構(gòu)即順序結(jié)構(gòu)、選擇結(jié)構(gòu)、和循環(huán)結(jié)構(gòu)實(shí)現(xiàn)。C
2、+在默認(rèn)的情況下采取順序結(jié)構(gòu),除非特別指明,計(jì)算機(jī)總是按語(yǔ)句順序一條一條地執(zhí)行。為使程序更清晰、更易調(diào)試與修改,并且不容易出錯(cuò),結(jié)構(gòu)化編程要盡量少用或不用goto等跳轉(zhuǎn)語(yǔ)句。w 選擇類語(yǔ)句包括if語(yǔ)句和switch語(yǔ)句,用它們來(lái)解決實(shí)際應(yīng)用中按不同的情況進(jìn)行不同處理的問(wèn)題。如根據(jù)學(xué)生的成績(jī),對(duì)學(xué)生做出不同的等第評(píng)價(jià)。if選擇結(jié)構(gòu)稱為單分支選擇結(jié)構(gòu),選擇或忽略一個(gè)分支的操作。if/else選擇結(jié)構(gòu)稱為雙分支選擇結(jié)構(gòu),在兩個(gè)不同分支中選擇。switch選擇結(jié)構(gòu)稱為多分支(或多項(xiàng))選擇結(jié)構(gòu),以多種不同的情況選擇多個(gè)不同的操作。w 循環(huán)類語(yǔ)句包括for循環(huán)語(yǔ)句、while循環(huán)語(yǔ)句和do循環(huán)語(yǔ)句三種,用
3、它們來(lái)解決實(shí)際應(yīng)用中需要重復(fù)處理的問(wèn)題。如當(dāng)統(tǒng)計(jì)全班同學(xué)總分時(shí),就需要重復(fù)地做加法,依次把每個(gè)人的分?jǐn)?shù)累加起來(lái)。w if、else、switch、while、do和for等都是C+關(guān)鍵字。這些關(guān)鍵字是該語(yǔ)言保留的,用于實(shí)現(xiàn)C+控制結(jié)構(gòu)的不同特性。關(guān)鍵字不能作為變量名等一些標(biāo)識(shí)符。注意,將關(guān)鍵字while的拼寫變?yōu)椤癢hile”是個(gè)語(yǔ)法錯(cuò)誤,因?yàn)镃+是區(qū)分大小寫的語(yǔ)言。while、if和else等所有C+保留關(guān)鍵字只能包含小寫字母。第二節(jié)第二節(jié) if選擇結(jié)構(gòu)選擇結(jié)構(gòu)條件表達(dá)式條件表達(dá)式 語(yǔ)句語(yǔ)句1 1falsetrue圖3-1 程序設(shè)計(jì)風(fēng)格提示程序設(shè)計(jì)風(fēng)格提示:從語(yǔ)法上來(lái)講,整個(gè)從語(yǔ)法上來(lái)講,整
4、個(gè)if語(yǔ)句可以寫語(yǔ)句可以寫在一行。如果條件表達(dá)式和語(yǔ)句都非常簡(jiǎn)單,那么整個(gè)語(yǔ)句在一行。如果條件表達(dá)式和語(yǔ)句都非常簡(jiǎn)單,那么整個(gè)語(yǔ)句可以寫在一行;否則,最好在條件表達(dá)式后換行,而且語(yǔ)句可以寫在一行;否則,最好在條件表達(dá)式后換行,而且語(yǔ)句部分要相對(duì)部分要相對(duì)if縮進(jìn)兩格??s進(jìn)兩格。例例3.1 讀入一個(gè)整數(shù)讀入一個(gè)整數(shù)a,如果,如果a為偶數(shù)在屏幕上輸出為偶數(shù)在屏幕上輸出yes#includeusing namespace std;int main( ) int a; cina; if (a%2=0) coutyes; return 0; 注意:關(guān)系運(yùn)算符=用來(lái)表達(dá)該符號(hào)的左右兩邊是否相等,不要寫成賦
5、值號(hào)=。試一試試一試 若題目改為“讀入一個(gè)整數(shù)a,如果a為奇數(shù)在屏幕上輸出no”該如何修改程序?例例3.2 讀入一個(gè)數(shù),若這個(gè)數(shù)大于讀入一個(gè)數(shù),若這個(gè)數(shù)大于1并且小于并且小于100,則輸出,則輸出yes# includeusing namespace std;int main ( ) int a; cina; if (a1)&(a100) cout1)&(ab則交換則交換a,b的值的值#includeusing namespace std;int main ( ) float a,b,c; cinab; if (ab) c=a; a=b; b=c; couta=a b=b; r
6、eturn 0;二、二、if-else語(yǔ)句(雙分支結(jié)構(gòu))語(yǔ)句(雙分支結(jié)構(gòu)) if單分支選擇結(jié)構(gòu)只在條件為true時(shí)采取操作,條件為false時(shí)則忽略這個(gè)操作。利用if-else雙分支選擇結(jié)構(gòu)則可以在條件為true時(shí)和條件為false時(shí)采取不同操作。格式格式1: 功能:功能:如果(條件表達(dá)式)的值為“真” ,即條件成立,則執(zhí)行語(yǔ)句1,執(zhí)行完“語(yǔ)句1”后繼續(xù)執(zhí)行整個(gè)ifelse語(yǔ)句的后繼語(yǔ)句;如果(條件表達(dá)式)的值為“假” ,即條件不成立,那么跳過(guò)語(yǔ)句1選擇執(zhí)行“語(yǔ)句2” ,執(zhí)行完語(yǔ)句2后繼續(xù)執(zhí)行整個(gè)ifelse語(yǔ)句的后繼語(yǔ)句;也就是說(shuō)ifelse語(yǔ)句總是根據(jù)(條件表達(dá)式)的結(jié)果,選擇“語(yǔ)句1”和
7、“語(yǔ)句2”中的一個(gè)執(zhí)行,執(zhí)行完以后,整個(gè)ifelse就算執(zhí)行完了。執(zhí)行流程如圖4-2所示if (條件表達(dá)式條件表達(dá)式) 語(yǔ)句語(yǔ)句1; else 語(yǔ)句語(yǔ)句2; 程序設(shè)計(jì)風(fēng)格提示:書程序設(shè)計(jì)風(fēng)格提示:書寫寫ifelse語(yǔ)句時(shí),語(yǔ)句時(shí),if和和else要對(duì)齊,而分支的語(yǔ)句部分要對(duì)齊,而分支的語(yǔ)句部分要縮進(jìn)兩格。要縮進(jìn)兩格。條件表達(dá)式條件表達(dá)式語(yǔ)句塊語(yǔ)句塊2 2flasetrue語(yǔ)句塊語(yǔ)句塊1 1圖圖3-23-2例例3.4 根據(jù)用戶輸入的成績(jī),判斷是否通過(guò)了考試。根據(jù)用戶輸入的成績(jī),判斷是否通過(guò)了考試。#includeusing namespace std;int main() int c; cin
8、c; if (c=60) coutpass! n; else coutsorry!n; return 0; 例例3.5 輸入溫度輸入溫度t的值,判斷是否適合晨練。的值,判斷是否適合晨練。(25=t=30,則適合晨練則適合晨練ok,否則不適合,否則不適合no)#includeusing namespace std;int main() int t; cin t; if (t=25) &(t=30) coutok!n; else coutno!n; return 0; 格式格式2 :if (條件表達(dá)式條件表達(dá)式) 語(yǔ)句語(yǔ)句1; 語(yǔ)句語(yǔ)句2; else 語(yǔ)句語(yǔ)句1;語(yǔ)句語(yǔ)句2; 若分支語(yǔ)句由
9、多個(gè)句子構(gòu)成,我們必須把這些句子括在一對(duì)花括號(hào) 內(nèi)。 例例3.6 乘坐飛機(jī)時(shí),當(dāng)乘客行李小于等于乘坐飛機(jī)時(shí),當(dāng)乘客行李小于等于20公斤時(shí),按每公公斤時(shí),按每公斤斤1.68元收費(fèi),大于元收費(fèi),大于20公斤時(shí),按每公斤公斤時(shí),按每公斤1.98元收費(fèi),編程元收費(fèi),編程計(jì)算收費(fèi)計(jì)算收費(fèi)(保留保留2位小數(shù)位小數(shù))。#include using namespace std;int main( ) float w, p; scanf(%f,&w); if (wb) if (bc) y=a; else y=c; else部分否定的是條件bc,即它與第二個(gè)if語(yǔ)句配對(duì);若想讓else部分與第一個(gè)if語(yǔ)句
10、配對(duì),則要引入一個(gè)復(fù)合語(yǔ)句,將上述語(yǔ)句寫成如下形式:if (ab) if (bc) y=a; else y=c;【上機(jī)練習(xí)】w1.判斷數(shù)正負(fù)【判斷數(shù)正負(fù)【1.4編程基礎(chǔ)之邏輯表達(dá)式與條件分支編程基礎(chǔ)之邏輯表達(dá)式與條件分支01】w 給定一個(gè)整數(shù)給定一個(gè)整數(shù)N,判斷其正負(fù)。如果,判斷其正負(fù)。如果N0,輸出,輸出positive;如果;如果N=0,輸出,輸出zero;如果;如果N0,輸出,輸出negative。w輸入輸入:w 一個(gè)整數(shù)一個(gè)整數(shù)N(-109 = N 0, 輸出輸出positive;w 如果如果N = 0, 輸出輸出zero;w 如果如果N y,輸出,輸出;若;若x=y,輸出,輸出=;若
11、;若xy,輸出輸出。w輸入輸入:w 一行,包含兩個(gè)整數(shù)一行,包含兩個(gè)整數(shù)x和和y,中間用單個(gè)空格隔開(kāi)。,中間用單個(gè)空格隔開(kāi)。0=x232, -231=y y,輸出,輸出 ;若;若x = y,輸出,輸出 = ;若;若x y,輸出,輸出 【上機(jī)練習(xí)】w6.判斷是否為兩位數(shù)【判斷是否為兩位數(shù)【1.4編程基礎(chǔ)之邏輯表達(dá)式與條件分支編程基礎(chǔ)之邏輯表達(dá)式與條件分支06】w 判斷一個(gè)正整數(shù)是否是兩位數(shù)判斷一個(gè)正整數(shù)是否是兩位數(shù)(即大于等于即大于等于10且小于等于且小于等于99)。若該正整數(shù)是。若該正整數(shù)是兩位數(shù),輸出兩位數(shù),輸出1,否則輸出,否則輸出0。w輸入輸入:w 一個(gè)正整數(shù),不超過(guò)一個(gè)正整數(shù),不超過(guò)1
12、000。w輸出輸出:w 一行。若該正整數(shù)是兩位數(shù),輸出一行。若該正整數(shù)是兩位數(shù),輸出1,否則輸出,否則輸出0。w樣例輸入樣例輸入:w 54w樣例輸出樣例輸出:w 1【上機(jī)練習(xí)】w7.收集瓶蓋贏大獎(jiǎng)【收集瓶蓋贏大獎(jiǎng)【1.4編程基礎(chǔ)之邏輯表達(dá)式與條件分支編程基礎(chǔ)之邏輯表達(dá)式與條件分支07】w 某飲料公司最近推出了一個(gè)某飲料公司最近推出了一個(gè)“收集瓶蓋贏大獎(jiǎng)收集瓶蓋贏大獎(jiǎng)”的活動(dòng):如果你擁有的活動(dòng):如果你擁有10個(gè)印個(gè)印有有“幸運(yùn)幸運(yùn)”、或、或20個(gè)印有個(gè)印有“鼓勵(lì)鼓勵(lì)”的瓶蓋,就可以兌換一個(gè)神秘大獎(jiǎng)?,F(xiàn)分別的瓶蓋,就可以兌換一個(gè)神秘大獎(jiǎng)?,F(xiàn)分別給出你擁有的印有給出你擁有的印有“幸運(yùn)幸運(yùn)”和和“鼓勵(lì)
13、鼓勵(lì)”的瓶蓋數(shù),判斷是否可以去兌換大獎(jiǎng)。若的瓶蓋數(shù),判斷是否可以去兌換大獎(jiǎng)。若可以兌換大獎(jiǎng),輸出可以兌換大獎(jiǎng),輸出1,否則輸出,否則輸出0。w輸入輸入:w 一行,包含兩個(gè)整數(shù),分別是印有一行,包含兩個(gè)整數(shù),分別是印有“幸運(yùn)幸運(yùn)”和和“鼓勵(lì)鼓勵(lì)”的瓶蓋數(shù),用一個(gè)空的瓶蓋數(shù),用一個(gè)空格隔開(kāi)。格隔開(kāi)。w輸出輸出:w 一行。若可以兌換大獎(jiǎng),輸出一行。若可以兌換大獎(jiǎng),輸出1,否則輸出,否則輸出0。w樣例輸入樣例輸入:w 11 19w樣例輸出樣例輸出:w 1【上機(jī)練習(xí)】w8.判斷一個(gè)數(shù)能否同時(shí)被判斷一個(gè)數(shù)能否同時(shí)被3和和5整除【整除【1.4編程基礎(chǔ)之邏輯表達(dá)式與條件分支編程基礎(chǔ)之邏輯表達(dá)式與條件分支08】
14、w 判斷一個(gè)數(shù)判斷一個(gè)數(shù)n 能否同時(shí)被能否同時(shí)被3和和5整除,如果能同時(shí)被整除,如果能同時(shí)被3和和5整除輸出整除輸出YES,否則,否則輸出輸出NO。w輸入輸入:w 輸入一行,包含一個(gè)整數(shù)輸入一行,包含一個(gè)整數(shù)n。(。( -1,000,000 n 1,000,000)w輸出輸出:w 輸出一行,如果能同時(shí)被輸出一行,如果能同時(shí)被3和和5整除輸出整除輸出YES,否則輸出,否則輸出NO。w樣例輸入樣例輸入:w 15w樣例輸出樣例輸出:w YES【上機(jī)練習(xí)】w9.判斷能否被判斷能否被3,5,7整除【整除【1.4編程基礎(chǔ)之邏輯表達(dá)式與條件分支編程基礎(chǔ)之邏輯表達(dá)式與條件分支09】w 給定一個(gè)整數(shù),判斷它能否
15、被給定一個(gè)整數(shù),判斷它能否被3,5,7整除,并輸出以下信息:整除,并輸出以下信息:w 1、能同時(shí)被、能同時(shí)被3,5,7整除(直接輸出整除(直接輸出3 5 7,每個(gè)數(shù)中間一個(gè)空格);,每個(gè)數(shù)中間一個(gè)空格);w 2、只能被其中兩個(gè)數(shù)整除(輸出兩個(gè)數(shù),小的在前,大的在后。例如:、只能被其中兩個(gè)數(shù)整除(輸出兩個(gè)數(shù),小的在前,大的在后。例如:3 5或者或者 3 7或或者者5 7,中間用空格分隔);,中間用空格分隔);w 3、只能被其中一個(gè)數(shù)整除(輸出這個(gè)除數(shù));、只能被其中一個(gè)數(shù)整除(輸出這個(gè)除數(shù));w 4、不能被任何數(shù)整除,輸出小寫字符、不能被任何數(shù)整除,輸出小寫字符n,不包括單引號(hào)。,不包括單引號(hào)。
16、w輸入輸入:w 輸入一行,包括一個(gè)整數(shù)。輸入一行,包括一個(gè)整數(shù)。w輸出輸出:w 輸出一行,按照描述要求給出整數(shù)被輸出一行,按照描述要求給出整數(shù)被3,5,7整除的情況。整除的情況。w樣例輸入樣例輸入:w 105w樣例輸出樣例輸出:w 3 5 7【上機(jī)練習(xí)】w10有一門課不及格的學(xué)生【有一門課不及格的學(xué)生【1.4編程基礎(chǔ)之邏輯表達(dá)式與條件分支編程基礎(chǔ)之邏輯表達(dá)式與條件分支10】w 給出一名學(xué)生的語(yǔ)文和數(shù)學(xué)成績(jī),判斷他是否恰好有一門課不及格給出一名學(xué)生的語(yǔ)文和數(shù)學(xué)成績(jī),判斷他是否恰好有一門課不及格(成績(jī)小于成績(jī)小于60分分)。若該生恰好有一門課不及格,輸出。若該生恰好有一門課不及格,輸出1;否則輸出
17、;否則輸出0。 w輸入輸入:w 一行,包含兩個(gè)在一行,包含兩個(gè)在0到到100之間的整數(shù),分別是該生的語(yǔ)文成績(jī)和數(shù)學(xué)成績(jī)。之間的整數(shù),分別是該生的語(yǔ)文成績(jī)和數(shù)學(xué)成績(jī)。w輸出輸出:w 若該生恰好有一門課不及格,輸出若該生恰好有一門課不及格,輸出1;否則輸出;否則輸出0。w樣例輸入樣例輸入:w 50 80w樣例輸出樣例輸出:w 1第三節(jié)第三節(jié) switch語(yǔ)句語(yǔ)句 應(yīng)用條件語(yǔ)句可以很方便地使程序?qū)崿F(xiàn)分支,但是出現(xiàn)應(yīng)用條件語(yǔ)句可以很方便地使程序?qū)崿F(xiàn)分支,但是出現(xiàn)分支比較多的時(shí)候,雖然可以用嵌套的分支比較多的時(shí)候,雖然可以用嵌套的if語(yǔ)句來(lái)解決,但是程語(yǔ)句來(lái)解決,但是程序結(jié)構(gòu)會(huì)顯得復(fù)雜,其至凌亂。為方便
18、實(shí)現(xiàn)多情況選擇,序結(jié)構(gòu)會(huì)顯得復(fù)雜,其至凌亂。為方便實(shí)現(xiàn)多情況選擇,C+提供了一種提供了一種switch開(kāi)關(guān)語(yǔ)句。開(kāi)關(guān)語(yǔ)句。 1.語(yǔ)句格式:語(yǔ)句格式: switch(表達(dá)式)(表達(dá)式) case 常量表達(dá)式常量表達(dá)式1: 語(yǔ)句序列語(yǔ)句序列1; break;case 常量表達(dá)式常量表達(dá)式2: 語(yǔ)句序列語(yǔ)句序列2; break; case 常量表達(dá)式常量表達(dá)式n: 語(yǔ)句序列語(yǔ)句序列n; break;default: 語(yǔ)句序列語(yǔ)句序列n+1; 該語(yǔ)句中可以使用一次或多次case標(biāo)號(hào),但只能使用一次default標(biāo)號(hào),或者省略整個(gè)default部分;多個(gè)case標(biāo)號(hào)也允許使用在同一個(gè)語(yǔ)句序列的前面;每個(gè)
19、語(yǔ)句標(biāo)號(hào)有保留字case和后面的常量表達(dá)式及冒號(hào)組成,每個(gè)常量表達(dá)式通常為字面常量,如常數(shù)或字符。 2.語(yǔ)句執(zhí)行過(guò)程語(yǔ)句執(zhí)行過(guò)程 switch語(yǔ)句執(zhí)行過(guò)程分為以下3步描述。 (1)計(jì)算出switch后面圓括號(hào)內(nèi)表達(dá)式的值,假定為M,若它不是整型,系統(tǒng)將自動(dòng)舍去其小數(shù)部分,只取其整數(shù)部分作為結(jié)果值。 (2)依次計(jì)算出每個(gè)case后常量表達(dá)式的值,假定它們?yōu)镸1、M2、,同樣若它們的值不是整型,則自動(dòng)轉(zhuǎn)換為整型。 (3)讓M依次同M1、M2、進(jìn)行比較,一旦遇到M與某個(gè)值相等,則就從對(duì)應(yīng)標(biāo)號(hào)的語(yǔ)句開(kāi)始執(zhí)行;在碰不到相等的情況下,若存在default子句,則就執(zhí)行其冒號(hào)后面的語(yǔ)句序列,否則不執(zhí)行任何操
20、作;當(dāng)執(zhí)行到復(fù)合語(yǔ)句最后的右花括號(hào)時(shí)就結(jié)束整個(gè)switch語(yǔ)句的執(zhí)行。 在實(shí)際使用switch語(yǔ)句時(shí),通常要求當(dāng)執(zhí)行完某個(gè)case后的一組語(yǔ)句序列后,就結(jié)束整個(gè)語(yǔ)句的執(zhí)行,而不讓它繼續(xù)執(zhí)行下一個(gè)case語(yǔ)句后面的語(yǔ)句序列,為此,可通過(guò)使用break語(yǔ)句來(lái)實(shí)現(xiàn)。該語(yǔ)句只有保留字break,而沒(méi)有其它任何成分。它是一條跳轉(zhuǎn)語(yǔ)句,在switch中執(zhí)行到它時(shí),將結(jié)束該switch語(yǔ)句,系統(tǒng)接著向下執(zhí)行其它語(yǔ)句。在使用在使用switch語(yǔ)句時(shí),還應(yīng)注意以下幾點(diǎn):語(yǔ)句時(shí),還應(yīng)注意以下幾點(diǎn):case語(yǔ)句后的各常量表達(dá)式的值不能相同,否則會(huì)出現(xiàn)錯(cuò)誤碼。2.每個(gè)case或default后,可以包含多條語(yǔ)句,不需
21、要使用“”和“”括起來(lái)。3.各case和default子句的先后順序可以變動(dòng),這不會(huì)影響程序執(zhí)行結(jié)果。4. default子句可以省略,default后面的語(yǔ)句末尾可以不必寫break。 程序設(shè)計(jì)風(fēng)格提示:寫程序設(shè)計(jì)風(fēng)格提示:寫switch語(yǔ)句時(shí),語(yǔ)句時(shí),switch(表達(dá)(表達(dá)式)單獨(dú)一行,各式)單獨(dú)一行,各case分支和分支和default分支要縮進(jìn)兩格并分支要縮進(jìn)兩格并對(duì)齊,分支處理語(yǔ)句要相對(duì)再縮進(jìn)兩格,以體現(xiàn)不同層次對(duì)齊,分支處理語(yǔ)句要相對(duì)再縮進(jìn)兩格,以體現(xiàn)不同層次的結(jié)構(gòu)。的結(jié)構(gòu)。3.語(yǔ)句格式舉例語(yǔ)句格式舉例(1)左右兩邊的書寫格式是等價(jià)左右兩邊的書寫格式是等價(jià)的switch(a) c
22、ase 1:x+;break; case 2:y+;break; case 3:z+;break; default:couterror; switch(a) case 1: x+; break; case 2: y+; break; case 3: z+; break; default: couterror; (2)switch(ch) case a: case A: d1=(x+y)/2; d2=x*y-2; break; case b: case B: d1=(a+b)/2; d2=a*b-2; break; default: coutinput error!; 說(shuō)明:說(shuō)明: 1.每個(gè)ca
23、se后面的語(yǔ)句可以寫在冒號(hào)后的同一行或換到新行寫。 2.都是一組語(yǔ)句,有時(shí)可為空,如(2)。例例3.8 根據(jù)從鍵盤上輸入的表示星期幾的數(shù)字,對(duì)應(yīng)輸出它的英文名稱。根據(jù)從鍵盤上輸入的表示星期幾的數(shù)字,對(duì)應(yīng)輸出它的英文名稱。#includeusing namespace std;int main() int weekday; cinweekday; switch(weekday) case 1:coutMondayendl; break; case 2: coutTuesdayendl; break; case 3: coutWednesdayendl; break; case 4: coutTh
24、ursdayendl; break; case 5: coutFridayendl; break; case 6: coutSaturdayendl; break; case 7: coutSundayendl; break; default:coutinput error!; return 0;例例3.9 判斷判斷2006年每個(gè)月份的天數(shù)。年每個(gè)月份的天數(shù)?!痉治觥俊痉治觥?程序分為:輸入月份,計(jì)算該月的天數(shù),輸出天數(shù)。 程序如下:#includeusing namespace std;int main() int month,day; cinmonth; switch(month) cas
25、e 2:day=28;break; case 4:day=30;break; case 6:day=30;break; case 9:day=30;break; case 11:day=30;break; default:day=31; coutdayendl; return 0; 例例3.10 期末來(lái)臨了,班長(zhǎng)小期末來(lái)臨了,班長(zhǎng)小Q決定將剩余班費(fèi)決定將剩余班費(fèi)X元錢,元錢,用于購(gòu)買若干支鋼筆獎(jiǎng)勵(lì)給一些學(xué)習(xí)好、表現(xiàn)好的同學(xué)。已用于購(gòu)買若干支鋼筆獎(jiǎng)勵(lì)給一些學(xué)習(xí)好、表現(xiàn)好的同學(xué)。已知商店里有三種鋼筆,它們的單價(jià)為知商店里有三種鋼筆,它們的單價(jià)為6元、元、5元和元和4元。小元。小Q想買盡量多的筆(鼓
26、勵(lì)盡量多的同學(xué)),同時(shí)他又不想有剩想買盡量多的筆(鼓勵(lì)盡量多的同學(xué)),同時(shí)他又不想有剩余錢。請(qǐng)您編一程序,幫小余錢。請(qǐng)您編一程序,幫小Q制訂出一種買筆的方案。制訂出一種買筆的方案。 【分析】【分析】對(duì)于以上的實(shí)際問(wèn)題,要買盡量多的筆,易知都買4元的筆肯定可以買最多支筆。因此最多可買的筆為x div 4支。由于小q要把錢用完,故我們可以按以下方法將錢用完: 若買完x div 4支4元錢的筆,還剩1元,則4元錢的筆少買1支,換成一支5元筆即可;若買完x div 4支4元錢的筆,還剩2元,則4元錢的筆少買1支,換成一支6元筆即可;若買完x div 4支4元錢的筆,還剩3元,則4元錢的筆少買2支,換成
27、一支5元筆和一支6元筆即可。 從以上對(duì)買筆方案的調(diào)整,可以看出筆的數(shù)目都是x div 4,因此該方案的確為最優(yōu)方案。w程序如下:w#includewusing namespace std;wint main()ww int a,b,c,x,y; w /a,b,c分別表示在買筆方案中,6元、5元和4元錢筆的數(shù)目w /x,y分別表示剩余班費(fèi)和買完最多的4元筆后剩的錢w cinx; /輸入xw c=x/4; /4元筆最多買的數(shù)目w y=x%4; /求買完c支4元筆后剩余的錢數(shù)yw switch (y) /判斷購(gòu)買方案w w case 0: a=0; b=0; break;w case 1: a=0;
28、 b=1; c-; break;w case 2: a=1; b=0; c-; break;w case 3: a=1; b=1; c-=2; break; w w couta b cendl; /三個(gè)數(shù)間以空格隔開(kāi)w return 0;w【上機(jī)練習(xí)】w1.晶晶赴約會(huì)【1.4編程基礎(chǔ)之邏輯表達(dá)式與條件分支11】w 晶晶的朋友貝貝約晶晶下周一起去看展覽,但晶晶每周的1、3、5有課必須上課,請(qǐng)幫晶晶判斷她能否接受貝貝的邀請(qǐng),如果能輸出YES;如果不能則輸出NO。注意YES和NO都是大寫字母!w輸入:w 輸入有一行,貝貝邀請(qǐng)晶晶去看展覽的日期,用數(shù)字1到7表示從星期一到星期日。w輸出:w 輸出有一行
29、,如果晶晶可以接受貝貝的邀請(qǐng),輸出YES,否則,輸出NO。注意YES和NO都是大寫字母!w樣例輸入:w 2w樣例輸出:w YES【上機(jī)練習(xí)】w2.騎車與走路【1.4編程基礎(chǔ)之邏輯表達(dá)式與條件分支12】w 在清華校園里,沒(méi)有自行車,上課辦事會(huì)很不方便。但實(shí)際上。并非去辦任何事情都是騎車快,因?yàn)轵T車總要找車、開(kāi)鎖、停車、鎖車等,這要耽誤一些時(shí)間。假設(shè)找到自行車,開(kāi)鎖并車上自行車的時(shí)間為27秒;停車鎖車的時(shí)間為23秒;步行每秒行走1.2米,騎車每秒行走3.0米。請(qǐng)判斷走不同的距離去辦事,是騎車快還是走路快。如果騎車快,輸出一行Bike;如果走路快,輸出一行Walk;如果一樣快,輸出一行All。w輸入
30、:w 輸入一行,包含一個(gè)整數(shù),表示一次辦事要行走的距離,單位為米。w輸出:w 輸出一行,如果騎車快,輸出一行Bike;如果走路快,輸出一行Walk;如果一樣快,輸出一行All。w樣例輸入:w 120w樣例輸出:w Bike【上機(jī)練習(xí)】w3.分段函數(shù)【1.4編程基礎(chǔ)之邏輯表達(dá)式與條件分支13】w 編寫程序,計(jì)算下列分段函數(shù)y=f(x)的值。結(jié)果保留到小數(shù)點(diǎn)后三位。w y=-x+2.5; 0=x5w y=2-1.5(x-3)(x-3); 5=x10w y=x/2-1.5; 10=x20w輸入:w 一個(gè)浮點(diǎn)數(shù)N,0 = N 20。w輸出:w 輸出N對(duì)應(yīng)的分段函數(shù)值:f(N)。結(jié)果保留到小數(shù)點(diǎn)后三位。
31、w樣例輸入:w 1.0w樣例輸出:w 1.500【上機(jī)練習(xí)】w4.計(jì)算郵資【1.4編程基礎(chǔ)之邏輯表達(dá)式與條件分支14】w 根據(jù)郵件的重量和用戶是否選擇加急計(jì)算郵費(fèi)。計(jì)算規(guī)則:重量在1000克以內(nèi)(包括1000克), 基本費(fèi)8元。超過(guò)1000克的部分,每500克加收超重費(fèi)4元,不足500克部分按500克計(jì)算;如果用戶選擇加急,多收5元。w輸入:w 輸入一行,包含整數(shù)和一個(gè)字符,以一個(gè)空格分開(kāi),分別表示重量(單位為克)和是否加急。如果字符是y,說(shuō)明選擇加急;如果字符是n,說(shuō)明不加急。w輸出:w 輸出一行,包含一個(gè)整數(shù),表示郵費(fèi)。w樣例輸入:w 1200 yw樣例輸出:w 17【上機(jī)練習(xí)】w5.最大
32、數(shù)輸出【1.4編程基礎(chǔ)之邏輯表達(dá)式與條件分支15】w 輸入三個(gè)整數(shù),數(shù)與數(shù)之間以一個(gè)空格分開(kāi)。 輸出一個(gè)整數(shù),即最大的整數(shù)。w輸入:w 輸入為一行,包含三個(gè)整數(shù),數(shù)與數(shù)之間以一個(gè)空格分開(kāi)。w輸出:w 輸出一行,包含一個(gè)整數(shù),即最大的整數(shù)。w樣例輸入:w 10 20 56w樣例輸出:w 56【上機(jī)練習(xí)】w6.三角形判斷【1.4編程基礎(chǔ)之邏輯表達(dá)式與條件分支16】w 給定三個(gè)正整數(shù),分別表示三條線段的長(zhǎng)度,判斷這三條線段能否構(gòu)成一個(gè)三角形。如果能構(gòu)成三角形,則輸出“yes”,否則輸出“no”。w輸入:w 輸入共一行,包含三個(gè)正整數(shù),分別表示三條線段的長(zhǎng)度,數(shù)與數(shù)之間以一個(gè)空格分開(kāi)。w輸出:w 如果能構(gòu)成三角形,則輸出“yes” ,否則輸出“no”。w樣例輸入:w 3 4 5w樣例輸出:w yes【上機(jī)練習(xí)】w7.判斷閏年【1.4編程基礎(chǔ)之邏輯表達(dá)式與條件分支17】w 判斷某年是否是閏年。如果公元a年是閏年輸出Y,否則輸出N。w輸入:w 輸入只有一行,包含一個(gè)整數(shù)a(0 a 3000)。w輸出:w 一行,如果公元a年是閏年輸出Y,否則輸出N。w樣例輸入:w 2006w樣例輸出:w N【上機(jī)練習(xí)】w8.點(diǎn)和正方形的關(guān)系【1.4編程基礎(chǔ)之邏輯表達(dá)式與條件分支18】w 有
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年CPMM考試備考方法及試題答案
- 2025年安陽(yáng)幼兒師范高等??茖W(xué)校單招職業(yè)適應(yīng)性考試題庫(kù)參考答案
- 2025-2030中國(guó)汗蒸行業(yè)競(jìng)爭(zhēng)戰(zhàn)略規(guī)劃及發(fā)展前景趨勢(shì)調(diào)研報(bào)告
- CPMM團(tuán)隊(duì)協(xié)作試題及答案探討
- 2025-2030中國(guó)水泵行業(yè)市場(chǎng)發(fā)展分析及前景趨勢(shì)與投資研究報(bào)告
- 2025-2030中國(guó)水果和蔬菜成分行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略研究報(bào)告
- 大學(xué)語(yǔ)文思想解讀試題及答案
- 2025-2030中國(guó)水分析儀器行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略研究報(bào)告
- 2025-2030中國(guó)氮生成行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略研究報(bào)告
- 2025-2030中國(guó)氨甲基丙醇市場(chǎng)現(xiàn)狀觀察及未來(lái)經(jīng)營(yíng)風(fēng)險(xiǎn)預(yù)警研究報(bào)告
- 中藥學(xué)總結(jié)(表格)
- 卒中相關(guān)性肺炎的護(hù)理課件
- 軍屬法律援助申請(qǐng)書
- 無(wú)人機(jī)操控培訓(xùn)合作
- 《列控系統(tǒng)裝備自主可控度評(píng)估指南》
- 2018容器支座第1部分:鞍式支座
- 機(jī)械制圖與CAD (第3版) 課件 任務(wù)4.3 減速器從動(dòng)軸零件圖的識(shí)讀與繪制
- 中等職業(yè)學(xué)校公共基礎(chǔ)課程 數(shù)學(xué)《對(duì)數(shù)》教學(xué)課件
- DL-T5161.10-2018電氣裝置安裝工程質(zhì)量檢驗(yàn)及評(píng)定規(guī)程第10部分:66kV及以下架空電力線路施工質(zhì)量檢驗(yàn)
- 2024年江西工業(yè)貿(mào)易職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)附答案
- 2024九年級(jí)化學(xué)下學(xué)期期末學(xué)情評(píng)估人教版
評(píng)論
0/150
提交評(píng)論