計(jì)算機(jī)基本程序設(shè)計(jì)_第1頁
計(jì)算機(jī)基本程序設(shè)計(jì)_第2頁
計(jì)算機(jī)基本程序設(shè)計(jì)_第3頁
計(jì)算機(jī)基本程序設(shè)計(jì)_第4頁
計(jì)算機(jī)基本程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、精選課件1第三章第三章 基本程序設(shè)計(jì)基本程序設(shè)計(jì) 計(jì)算機(jī)程序設(shè)計(jì)基礎(chǔ)與計(jì)算機(jī)程序設(shè)計(jì)基礎(chǔ)與Visual C+Visual C+ 前一頁 休息精選課件2教學(xué)目標(biāo)教學(xué)目標(biāo) 1掌握順序、選擇、循環(huán)三種基本控制結(jié)掌握順序、選擇、循環(huán)三種基本控制結(jié)構(gòu)的程序?qū)崿F(xiàn)方法;構(gòu)的程序?qū)崿F(xiàn)方法;2了解基本程序調(diào)試技能。了解基本程序調(diào)試技能。 前一頁 休息精選課件3教學(xué)內(nèi)容教學(xué)內(nèi)容 1順序結(jié)構(gòu)的程序?qū)崿F(xiàn)語句; 2一路、兩路、多路分支選擇結(jié)構(gòu)的實(shí)現(xiàn)語句; 3循環(huán)結(jié)構(gòu)的實(shí)現(xiàn)語句;4循環(huán)控制語句的作用;5程序調(diào)試過程。 前一頁 休息精選課件4例 “雞兔同籠問題”:在一個(gè)籠子里養(yǎng)著雞與兔,但不知其中雞有多少只,兔有多少只。只

2、知道雞和兔的總數(shù)是a,雞與兔的總腳數(shù)是b,求雞與兔各有多少只。思路分析:思路分析:假設(shè)有假設(shè)有x只雞和只雞和y只兔,則根據(jù)已知條件可列只兔,則根據(jù)已知條件可列出如下方程組:出如下方程組: x+y=a 2x+4y=b對(duì)該方程組做進(jìn)一步的轉(zhuǎn)換可得:對(duì)該方程組做進(jìn)一步的轉(zhuǎn)換可得:順序結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件5源程序清單:源程序清單:#includeusing namespace std;void main( ) int a,b,x,y;couta;coutb;x=(4*a-b)/2;y=(b-2*a)/2;cout雞的數(shù)量為雞的數(shù)量為:xendl;cout兔的數(shù)量為兔的數(shù)量為:yendl;

3、 順序結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件6編程技巧編程技巧 1在順序結(jié)構(gòu)的程序設(shè)計(jì)中,主函數(shù)在順序結(jié)構(gòu)的程序設(shè)計(jì)中,主函數(shù)main的函數(shù)的函數(shù)體的執(zhí)行順序?yàn)檎Z句的書寫順序。即寫在前面體的執(zhí)行順序?yàn)檎Z句的書寫順序。即寫在前面的語句先執(zhí)行,寫在后面的語句后執(zhí)行,且每的語句先執(zhí)行,寫在后面的語句后執(zhí)行,且每條語句都會(huì)被執(zhí)行一次;條語句都會(huì)被執(zhí)行一次;2組成順序結(jié)構(gòu)的常見語句有:組成順序結(jié)構(gòu)的常見語句有:(1)說明語句,包括變量、常量定義;)說明語句,包括變量、常量定義;(2)表達(dá)式語句,由表達(dá)式(一般為賦值表達(dá))表達(dá)式語句,由表達(dá)式(一般為賦值表達(dá)式)加分號(hào)構(gòu)成;式)加分號(hào)構(gòu)成;(3)輸入)輸入/輸

4、出流語句;輸出流語句;(4)復(fù)合語句,由)復(fù)合語句,由 括起來的多條語句組成;括起來的多條語句組成;(5)空語句,由獨(dú)立的分號(hào)構(gòu)成)空語句,由獨(dú)立的分號(hào)構(gòu)成順序結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件7例例 輸入一位同學(xué)的三門課程考試成輸入一位同學(xué)的三門課程考試成績(jī),計(jì)算該同學(xué)的平均成績(jī),要求輸績(jī),計(jì)算該同學(xué)的平均成績(jī),要求輸出數(shù)據(jù)的形式如下例:出數(shù)據(jù)的形式如下例:科目科目 成績(jī)成績(jī)英語英語 67程序設(shè)計(jì)程序設(shè)計(jì) 78.5大學(xué)物理大學(xué)物理 89該生的平均成績(jī)?yōu)椋涸撋钠骄煽?jī)?yōu)椋?8.17思路分析:思路分析:本程序要求的計(jì)算內(nèi)容很簡(jiǎn)單,重點(diǎn)在輸本程序要求的計(jì)算內(nèi)容很簡(jiǎn)單,重點(diǎn)在輸出數(shù)據(jù)的位置控制上:

5、要求前四行輸出的兩列出數(shù)據(jù)的位置控制上:要求前四行輸出的兩列信息要對(duì)齊,且最后計(jì)算出的平均成績(jī)的小數(shù)信息要對(duì)齊,且最后計(jì)算出的平均成績(jī)的小數(shù)部分只顯示兩位數(shù)字。部分只顯示兩位數(shù)字。順序結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件8源程序清單:源程序清單:#include iostream#include iomanipusing namespace std;void main( )float score1,score2,score3,average; cout請(qǐng)輸入三門課程的考試成績(jī):請(qǐng)輸入三門課程的考試成績(jī):score1score2score3; average=(score1+score2+scor

6、e3)/3;coutsetw(10)科目科目setw(12)成績(jī)成績(jī)endl;coutsetw(10)英語英語setw(12)score1endl;coutsetw(10)程序設(shè)計(jì)程序設(shè)計(jì)setw(12)score2endl;coutsetw(10)大學(xué)物理大學(xué)物理setw(12)score3endl;coutfixed; cout.precision(2);cout該生的平均成績(jī)?yōu)椋涸撋钠骄煽?jī)?yōu)椋篴verageendl; 順序結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件9編程技巧編程技巧1 1對(duì)于輸出的多列信息對(duì)齊的問題可以通過控制輸出的對(duì)于輸出的多列信息對(duì)齊的問題可以通過控制輸出的數(shù)據(jù)所占的位置

7、寬度來實(shí)現(xiàn)。實(shí)現(xiàn)方法為:在輸出該數(shù)數(shù)據(jù)所占的位置寬度來實(shí)現(xiàn)。實(shí)現(xiàn)方法為:在輸出該數(shù)據(jù)前先通過據(jù)前先通過setw(n)setw(n)來設(shè)置該數(shù)據(jù)輸出時(shí)所占的最少位置來設(shè)置該數(shù)據(jù)輸出時(shí)所占的最少位置寬度寬度n n。使用時(shí)需注意;。使用時(shí)需注意; (1 1)setw(n)setw(n)所設(shè)置的位置寬度只對(duì)其后輸出的一所設(shè)置的位置寬度只對(duì)其后輸出的一個(gè)數(shù)據(jù)生效;個(gè)數(shù)據(jù)生效; (2 2)使用)使用setw(n)setw(n)時(shí)需包含頭文件時(shí)需包含頭文件iomanipiomanip;2 2該設(shè)置也可以通過該設(shè)置也可以通過cout.width(n);cout.width(n);來實(shí)現(xiàn)。即語句來實(shí)現(xiàn)。即語句c

8、outsetw(10)coutsetw(10)科目科目setw(12)setw(12)成績(jī)成績(jī)endl;endl;可更換為:可更換為:cout.width(10);cout.width(10);coutcout科目科目;cout.width(12);cout.width(12);coutcout成績(jī)成績(jī);注意:此方法不再需要文件包含注意:此方法不再需要文件包含#include iomanip#include iomanip。順序結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件10編程技巧編程技巧3在輸出一個(gè)浮點(diǎn)數(shù)時(shí),系統(tǒng)會(huì)在科學(xué)記數(shù)法在輸出一個(gè)浮點(diǎn)數(shù)時(shí),系統(tǒng)會(huì)在科學(xué)記數(shù)法和小數(shù)點(diǎn)法兩種形式里按照一定的規(guī)則(

9、通常在整和小數(shù)點(diǎn)法兩種形式里按照一定的規(guī)則(通常在整數(shù)部分超過數(shù)部分超過6位時(shí)采用科學(xué)記數(shù)法)自動(dòng)選擇采用哪位時(shí)采用科學(xué)記數(shù)法)自動(dòng)選擇采用哪種形式輸出。若想規(guī)定不管什么樣的浮點(diǎn)數(shù)均使用種形式輸出。若想規(guī)定不管什么樣的浮點(diǎn)數(shù)均使用小數(shù)點(diǎn)形式輸出,可采用小數(shù)點(diǎn)形式輸出,可采用coutfixed;語句來實(shí)現(xiàn)語句來實(shí)現(xiàn)4以小數(shù)點(diǎn)形式輸出浮點(diǎn)數(shù)時(shí),系統(tǒng)默認(rèn)輸出以小數(shù)點(diǎn)形式輸出浮點(diǎn)數(shù)時(shí),系統(tǒng)默認(rèn)輸出的浮點(diǎn)數(shù)的整數(shù)和小數(shù)部分的總位數(shù)最多只有的浮點(diǎn)數(shù)的整數(shù)和小數(shù)部分的總位數(shù)最多只有6位數(shù)位數(shù)字。若想規(guī)定輸出的浮點(diǎn)數(shù)的小數(shù)部分的位數(shù)可通字。若想規(guī)定輸出的浮點(diǎn)數(shù)的小數(shù)部分的位數(shù)可通過過cout.precisio

10、n(n);語句來實(shí)現(xiàn)。其中語句來實(shí)現(xiàn)。其中n代表小數(shù)部代表小數(shù)部分的位數(shù)(若數(shù)據(jù)的實(shí)際位數(shù)超過分的位數(shù)(若數(shù)據(jù)的實(shí)際位數(shù)超過n,則按,則按4舍舍5入規(guī)入規(guī)則處理后輸出;若數(shù)據(jù)的實(shí)際位數(shù)少于則處理后輸出;若數(shù)據(jù)的實(shí)際位數(shù)少于n,則其余位,則其余位數(shù)用數(shù)用0補(bǔ)齊)。補(bǔ)齊)。順序結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件11例例 從鍵盤輸入一個(gè)數(shù),計(jì)算并從鍵盤輸入一個(gè)數(shù),計(jì)算并輸出該數(shù)的絕對(duì)值輸出該數(shù)的絕對(duì)值思路分析:思路分析:對(duì)于對(duì)于0和正數(shù)而言,其絕對(duì)值就是該數(shù)和正數(shù)而言,其絕對(duì)值就是該數(shù)本身;對(duì)于負(fù)數(shù)而言,其絕對(duì)值為該數(shù)與本身;對(duì)于負(fù)數(shù)而言,其絕對(duì)值為該數(shù)與-1相乘的結(jié)果。相乘的結(jié)果。本題算法的實(shí)質(zhì)就

11、是判斷什么情況下需本題算法的實(shí)質(zhì)就是判斷什么情況下需要執(zhí)行要執(zhí)行“該數(shù)與該數(shù)與-1相乘相乘”這個(gè)操作,同時(shí)意這個(gè)操作,同時(shí)意味者該操作對(duì)應(yīng)的語句雖然書寫在了程序中,味者該操作對(duì)應(yīng)的語句雖然書寫在了程序中,但在某種情況下是可能不會(huì)被執(zhí)行的。但在某種情況下是可能不會(huì)被執(zhí)行的。選擇結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件12源程序清單源程序清單#includeusing namespace std;void main( ) float m;coutm;if(m0)m=-1*m;cout你輸入數(shù)據(jù)的絕對(duì)值為你輸入數(shù)據(jù)的絕對(duì)值為:mendl;選擇結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件13編程技巧編程技巧1在程序中

12、,如果書寫的某些語句只有在程序中,如果書寫的某些語句只有在特定的條件成立的情況下才會(huì)被執(zhí)行時(shí),需在特定的條件成立的情況下才會(huì)被執(zhí)行時(shí),需要用到要用到“一路分支選擇結(jié)構(gòu)一路分支選擇結(jié)構(gòu)”來實(shí)現(xiàn),相應(yīng)的來實(shí)現(xiàn),相應(yīng)的語句為語句為“if語句語句”,其格式如下:,其格式如下: if(條件條件)語句;語句;(1)簡(jiǎn)單的條件通過包含關(guān)系運(yùn)算符的)簡(jiǎn)單的條件通過包含關(guān)系運(yùn)算符的關(guān)系表達(dá)式來表示,關(guān)系表達(dá)式來表示,C+語言的關(guān)系運(yùn)算符見語言的關(guān)系運(yùn)算符見表表3.1。選擇結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件14關(guān)系運(yùn)算符關(guān)系運(yùn)算符運(yùn)算符運(yùn)算優(yōu)先級(jí)=小于小于等于大于大于等于1111= =!=等于不等于22選擇結(jié)構(gòu)程

13、序設(shè)計(jì) 前一頁 休息精選課件15編程技巧編程技巧 若滿足條件,關(guān)系表達(dá)式的值為布爾值若滿足條件,關(guān)系表達(dá)式的值為布爾值true;若不滿足條件,關(guān)系表達(dá)式的值為布爾;若不滿足條件,關(guān)系表達(dá)式的值為布爾值值false ; 關(guān)系運(yùn)算符若為兩字符,在書寫時(shí)兩字符關(guān)系運(yùn)算符若為兩字符,在書寫時(shí)兩字符間不能加空格;間不能加空格; =與與=的區(qū)別:如的區(qū)別:如x=1為條件表達(dá)式,判為條件表達(dá)式,判斷斷x是否等于是否等于1。x=1為賦值表達(dá)式,將數(shù)值為賦值表達(dá)式,將數(shù)值1存存入變量入變量x中;中; 兩個(gè)浮點(diǎn)數(shù)之間一般不用兩個(gè)浮點(diǎn)數(shù)之間一般不用=來判斷是否相來判斷是否相等;等; 關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符

14、,高關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符,高于賦值運(yùn)算符。于賦值運(yùn)算符。選擇結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件16編程技巧編程技巧(2 2)ifif語句的內(nèi)嵌語句只能是一條,即該語句的內(nèi)嵌語句只能是一條,即該處語句多于一條時(shí),需要將這些語句用處語句多于一條時(shí),需要將這些語句用 括括起來構(gòu)成復(fù)合語句;起來構(gòu)成復(fù)合語句;(3 3)ifif語句的執(zhí)行過程:首先測(cè)試條件是語句的執(zhí)行過程:首先測(cè)試條件是否成立,成立則執(zhí)行條件后的內(nèi)嵌語句,否則否成立,成立則執(zhí)行條件后的內(nèi)嵌語句,否則結(jié)束結(jié)束ifif語句,執(zhí)行其后續(xù)語句。語句,執(zhí)行其后續(xù)語句。練習(xí):將鍵盤輸入的兩個(gè)數(shù)按從大到小的練習(xí):將鍵盤輸入的兩個(gè)數(shù)按從大到

15、小的順序存儲(chǔ)并輸出。(兩種交換數(shù)據(jù)的方法)順序存儲(chǔ)并輸出。(兩種交換數(shù)據(jù)的方法)選擇結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件17例例輸入一個(gè)年份,判斷該年是否輸入一個(gè)年份,判斷該年是否為閏年,并輸出判斷結(jié)果為閏年,并輸出判斷結(jié)果 源程序清單:#include using namespace std;void main( ) int year;coutyear;if(year%4=0&year%100!=0|year%400=0)coutyear is a leap yearendl;elsecoutyear“ is not a leap year”endl;選擇結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選

16、課件18 選擇結(jié)構(gòu)程序設(shè)計(jì)(1)在程序中,如果在特定的條件成立的情況下執(zhí)行一種操作,不成立的情況下執(zhí)行另一種操作,則需要用到“兩路分支選擇結(jié)構(gòu)”來實(shí)現(xiàn),相應(yīng)的C+語句是“ifelse語句”,其具體格式為:if(if(條件條件) )語句語句1 1;elseelse語句語句2 2; 內(nèi)嵌語句1、2都只能是一條語句; 條件成立時(shí)執(zhí)行內(nèi)嵌語句1,否則執(zhí)行內(nèi)嵌語句2 前一頁 休息精選課件19運(yùn)算符運(yùn)算優(yōu)先級(jí)!邏輯非1&邏輯與2|邏輯或3(2)如果條件比較復(fù)雜,需要由多個(gè)關(guān)系表達(dá)式按照一定的邏輯關(guān)系共同構(gòu)成,則需要使用邏輯運(yùn)算符,C+語言的邏輯運(yùn)算符見表3.2選擇結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件

17、20由邏輯運(yùn)算符構(gòu)成的邏輯表達(dá)式的運(yùn)算結(jié)果也是布爾值; 邏輯非(?。┓旁谝粋€(gè)條件表達(dá)式的前面,用于表示該條件的相反條件;邏輯與(&)運(yùn)算符的前后各書寫一個(gè)條件,只有前后的兩個(gè)條件都成立時(shí),由邏輯與表示的條件才成立;邏輯或(|)運(yùn)算符的前后同樣需要各書寫一個(gè)條件,但它只要求這兩個(gè)條件中有任何一個(gè)條件成立就可以了;邏輯非運(yùn)算符的優(yōu)先級(jí)與算術(shù)運(yùn)算的+和-平級(jí),邏輯與和邏輯或運(yùn)算符的優(yōu)先級(jí)低于關(guān)系運(yùn)算符,高于賦值運(yùn)算符。選擇結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件21思路分析一:假設(shè)用a,b,c分別表示輸入的三個(gè)數(shù),則三個(gè)數(shù)中的最大值必然是兩個(gè)數(shù)中的較大值。因此可以先在a和b中找出一個(gè)較大值出來;然

18、后再用這個(gè)較大值與剩下的那個(gè)數(shù)c進(jìn)行比較,其中的較大者即為三個(gè)數(shù)中的最大者。在本算法中,首先要判斷a和b誰大:在a大的情況下,又要判斷a和c誰大;在a小的情況下,又要判斷b和c誰大。因此在實(shí)現(xiàn)“判斷a和b誰大”的兩路分支選擇結(jié)構(gòu)的執(zhí)行部分將包含另外一個(gè)選擇結(jié)構(gòu)。選擇結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件22源程序清單一源程序清單一 #includeusing namespace std;void main( ) double a,b,c,max;coutabc;if(a=b)if(ac)max=a;elsemax=c;elseif(b=c)max=b;elsemax=c;cout“max=”max

19、endl;選擇結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件23編程技巧編程技巧 (1)在)在ifelse語句中,如果在條件成立時(shí)語句中,如果在條件成立時(shí)和(或)條件不成立時(shí)需要根據(jù)另一個(gè)條件的和(或)條件不成立時(shí)需要根據(jù)另一個(gè)條件的成立情況來進(jìn)一步?jīng)Q定該執(zhí)行什么操作,則需成立情況來進(jìn)一步?jīng)Q定該執(zhí)行什么操作,則需要用到嵌套的選擇結(jié)構(gòu)。即在條件成立時(shí)執(zhí)行要用到嵌套的選擇結(jié)構(gòu)。即在條件成立時(shí)執(zhí)行的語句部分和(或)條件不成立時(shí)執(zhí)行的語的語句部分和(或)條件不成立時(shí)執(zhí)行的語句部分中書寫另一個(gè)選擇結(jié)構(gòu)的實(shí)現(xiàn)語句;句部分中書寫另一個(gè)選擇結(jié)構(gòu)的實(shí)現(xiàn)語句;(2)如果被嵌套的內(nèi)層選擇結(jié)構(gòu)是一路分)如果被嵌套的內(nèi)層選擇結(jié)構(gòu)是

20、一路分支選擇結(jié)構(gòu)的實(shí)現(xiàn)語句(支選擇結(jié)構(gòu)的實(shí)現(xiàn)語句(if語句),此時(shí)即使語句),此時(shí)即使該部分只有這一條語句,也需要將其用該部分只有這一條語句,也需要將其用 括起括起來,以隔離內(nèi)外層選擇結(jié)構(gòu)。來,以隔離內(nèi)外層選擇結(jié)構(gòu)。選擇結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件24思路分析二:思路分析二:假設(shè)用假設(shè)用a,b,c分別表示輸入的三個(gè)分別表示輸入的三個(gè)數(shù)。首先判斷數(shù)。首先判斷a是否為最大值:如果是,是否為最大值:如果是,就直接輸出判斷結(jié)果;如果不是,則最就直接輸出判斷結(jié)果;如果不是,則最大值必然在大值必然在b和和c中,此時(shí)再判斷中,此時(shí)再判斷b和和c的的大小關(guān)系就可以得出整個(gè)判斷結(jié)果。大小關(guān)系就可以得出整個(gè)

21、判斷結(jié)果。選擇結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件25源程序清單二源程序清單二 #includeusing namespace std;void main( ) double a,b,c,max;coutabc;if(a=b&a=c)max=a;else if(b=c)max=b; else max=c;coutmax=maxb?c:de?f:g后后m變量中的值為變量中的值為7。 前一頁 休息精選課件28源程序清單三源程序清單三 #includeusing namespace std;void main( )double a,b,c,max;coutabc;if(ab)max=(ac)?

22、a:c;elsemax=(bc)?b:c;coutmax=maxendl;練習(xí):習(xí)題練習(xí):習(xí)題10 前一頁 休息精選課件29例例由鍵盤輸入一個(gè)四則運(yùn)算式子,由鍵盤輸入一個(gè)四則運(yùn)算式子,輸出該運(yùn)算式子和運(yùn)算結(jié)果輸出該運(yùn)算式子和運(yùn)算結(jié)果思路分析:假設(shè)輸入的數(shù)據(jù)分別為x、y,運(yùn)算符號(hào)為op,本題要解決的問題實(shí)質(zhì)上就是根據(jù)運(yùn)算符號(hào)op是什么,來決定對(duì)x、y兩個(gè)數(shù)據(jù)采用什么運(yùn)算。源程序清單一:選擇結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件30#includeusing namespace std;void main( )double x,y;char op;cout請(qǐng)輸入算式:請(qǐng)輸入算式:xopy;if(op=

23、+)coutx+y=x+yendl; else if(op=-)coutx-y=x-yendl;else if(op=*)coutx*y=x*yendl;else if(op=/)if(y=0.0)cout除式的分母為零除式的分母為零!endl;elsecoutx/y=x/yendl;elsecout“非四則運(yùn)算非四則運(yùn)算!”endl;選擇結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件31#includeusing namespace std;void main( ) double x,y;char op;cout請(qǐng)輸入算式:xopy;switch(op)case +:coutx+y=x+yendl; b

24、reak; case -:coutx-y=x-yendl; break; case *:coutx*y=x*yendl; break; case /:if(y=0.0)cout除式的分母為零!endl;elsecoutx/y=x/yendl;break;default:cout“非四則運(yùn)算!”endl;選擇結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件32 選擇結(jié)構(gòu)程序設(shè)計(jì)本題是典型的“多路分支選擇結(jié)構(gòu)”,程序清單一采用嵌套的ifelse語句來實(shí)現(xiàn),程序清單二采用C+的switch開關(guān)分支語句來實(shí)現(xiàn),該語句的格式為: switch(switch(條件條件) )casecase常量表達(dá)式常量表達(dá)式1 1:語

25、句序列語句序列1 1break;break;casecase常量表達(dá)式常量表達(dá)式2 2:語句序列語句序列2 2break;break;defaultdefault:語句序列:語句序列n n 前一頁 休息精選課件33(1 1)switchswitch后的(后的( )中書寫的是需要進(jìn)行比較的運(yùn))中書寫的是需要進(jìn)行比較的運(yùn)算式子,該式子的計(jì)算結(jié)果必須是整型或字符型數(shù)據(jù);算式子,該式子的計(jì)算結(jié)果必須是整型或字符型數(shù)據(jù);(2 2)switchswitch語句的語句的 中主要由若干個(gè)中主要由若干個(gè)casecase分句構(gòu)成,分句構(gòu)成,每個(gè)每個(gè)casecase關(guān)鍵字后面書寫一個(gè)整型或字符型常量。如果關(guān)鍵字后面

26、書寫一個(gè)整型或字符型常量。如果switchswitch后的(后的( )中的計(jì)算式子的計(jì)算結(jié)果等于該常量,)中的計(jì)算式子的計(jì)算結(jié)果等于該常量,則從該則從該casecase分句開始執(zhí)行,故分句開始執(zhí)行,故switchswitch語句也稱為開關(guān)語語句也稱為開關(guān)語句;句;(3 3)switchswitch語句找到執(zhí)行起始點(diǎn)后,將一直執(zhí)行到語句找到執(zhí)行起始點(diǎn)后,將一直執(zhí)行到 為止。若想提前結(jié)束運(yùn)行,可在需要執(zhí)行的最后一條語為止。若想提前結(jié)束運(yùn)行,可在需要執(zhí)行的最后一條語句后加上句后加上breakbreak語句;語句;(4 4)如果)如果switchswitch后的(后的( )中的計(jì)算式子的計(jì)算結(jié)果)中的

27、計(jì)算式子的計(jì)算結(jié)果與所有與所有casecase分句后的常量都不相等,則語句的執(zhí)行起始分句后的常量都不相等,則語句的執(zhí)行起始點(diǎn)為點(diǎn)為defaultdefault。若沒有。若沒有defaultdefault分句,則不執(zhí)行任何操作分句,則不執(zhí)行任何操作選擇結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件34算法描述:算法描述: 例例 計(jì)算計(jì)算0n之間所有整數(shù)之和,之間所有整數(shù)之和,其中其中n為正整數(shù),由鍵盤輸入為正整數(shù),由鍵盤輸入 循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件35源程序清單源程序清單 #includeusing namespace std;void main( ) int n,i,sum;coutn;i

28、=1; sum=0;while(i=n)sum=sum+i;i=i+1; cout1與與n之間所有整數(shù)之和為:之間所有整數(shù)之和為:sumendl;循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件36 (1)在程序中,如果書寫的某些語句可)在程序中,如果書寫的某些語句可能需要被重復(fù)執(zhí)行,就要用到循環(huán)結(jié)構(gòu)。這些能需要被重復(fù)執(zhí)行,就要用到循環(huán)結(jié)構(gòu)。這些可能被重復(fù)執(zhí)行的語句稱為該循環(huán)結(jié)構(gòu)的循環(huán)可能被重復(fù)執(zhí)行的語句稱為該循環(huán)結(jié)構(gòu)的循環(huán)體。循環(huán)體是否被重復(fù)執(zhí)行以及循環(huán)體被重復(fù)體。循環(huán)體是否被重復(fù)執(zhí)行以及循環(huán)體被重復(fù)執(zhí)行的次數(shù)取決于一個(gè)條件,該條件稱為循環(huán)執(zhí)行的次數(shù)取決于一個(gè)條件,該條件稱為循環(huán)結(jié)構(gòu)的循環(huán)條件;結(jié)構(gòu)的

29、循環(huán)條件;(2)當(dāng)型循環(huán)結(jié)構(gòu)的實(shí)現(xiàn)語句之一為)當(dāng)型循環(huán)結(jié)構(gòu)的實(shí)現(xiàn)語句之一為“while語句語句”,其語句格式為:,其語句格式為:while(條件條件)語句語句Page 36循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件37循環(huán)結(jié)構(gòu)中條件的表示方法與選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)中條件的表示方法與選擇結(jié)構(gòu)相同;相同;循環(huán)體超過一條時(shí),應(yīng)寫成復(fù)合語句;循環(huán)體超過一條時(shí),應(yīng)寫成復(fù)合語句;while語句的執(zhí)行過程:首先判斷循環(huán)條語句的執(zhí)行過程:首先判斷循環(huán)條件:若條件成立,則執(zhí)行一次循環(huán)體,然后重件:若條件成立,則執(zhí)行一次循環(huán)體,然后重復(fù)復(fù)“判斷判斷執(zhí)行執(zhí)行”的過程。直到該循環(huán)條件不的過程。直到該循環(huán)條件不再成立時(shí)退出循環(huán)

30、結(jié)構(gòu);再成立時(shí)退出循環(huán)結(jié)構(gòu);為避免為避免“死循環(huán)死循環(huán)”,循環(huán)體中應(yīng)含有修,循環(huán)體中應(yīng)含有修正與循環(huán)條件相關(guān)數(shù)據(jù)的語句。正與循環(huán)條件相關(guān)數(shù)據(jù)的語句。練習(xí):計(jì)算練習(xí):計(jì)算n之間所有奇數(shù)之和(兩方法)之間所有奇數(shù)之和(兩方法)計(jì)算并輸出一個(gè)正整數(shù)的反序數(shù)計(jì)算并輸出一個(gè)正整數(shù)的反序數(shù)Page 37循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件38例例 計(jì)算計(jì)算n!,其中!,其中n為正整數(shù),為正整數(shù),由鍵盤輸入由鍵盤輸入 源程序清單:源程序清單:#include using namespace std;void main( )int mul=1,j,n;coutn;for(j=1;j=n;j+)mul*=j;

31、coutmul=mulendl;循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件39編程技巧編程技巧(1)當(dāng)型循環(huán)也可用)當(dāng)型循環(huán)也可用for語句來實(shí)現(xiàn),語法格式為:語句來實(shí)現(xiàn),語法格式為:for(表達(dá)式表達(dá)式1;表達(dá)式表達(dá)式2;表達(dá)式表達(dá)式3)語句語句表達(dá)式表達(dá)式1:進(jìn)入循環(huán)前執(zhí)行一次,作用是為有關(guān):進(jìn)入循環(huán)前執(zhí)行一次,作用是為有關(guān)變量賦初值;表達(dá)式變量賦初值;表達(dá)式2:用于控制循環(huán)的條件;表達(dá):用于控制循環(huán)的條件;表達(dá)式式3:用于修正有關(guān)變量的值;表達(dá)式:用于修正有關(guān)變量的值;表達(dá)式1和表達(dá)式和表達(dá)式3可可以是逗號(hào)表達(dá)式以是逗號(hào)表達(dá)式表達(dá)式表達(dá)式1、2、3都可以省略,但分號(hào)不能省略。都可以省略,但分

32、號(hào)不能省略。省略表達(dá)式省略表達(dá)式1表示不需要賦初值(該任務(wù)可在表示不需要賦初值(該任務(wù)可在for語句語句前完成);省略表達(dá)式前完成);省略表達(dá)式2表示循環(huán)條件永遠(yuǎn)為真;省表示循環(huán)條件永遠(yuǎn)為真;省略表達(dá)式略表達(dá)式3表示沒有修正部分(循環(huán)體內(nèi)應(yīng)有相關(guān)修表示沒有修正部分(循環(huán)體內(nèi)應(yīng)有相關(guān)修正);省略表達(dá)式正);省略表達(dá)式1和和3的的for語句等效于語句等效于while語句。語句。循環(huán)體仍只能是一條語句;循環(huán)體仍只能是一條語句;循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件40編程技巧編程技巧 forfor語句的執(zhí)行過程:首先求解表達(dá)式語句的執(zhí)行過程:首先求解表達(dá)式1 1,然,然后判斷表達(dá)式后判斷表達(dá)式2 2

33、是否成立,如果成立,則執(zhí)行循環(huán)是否成立,如果成立,則執(zhí)行循環(huán)體,并求解表達(dá)式體,并求解表達(dá)式3 3 ,之后重復(fù),之后重復(fù)“判斷判斷執(zhí)行執(zhí)行求求解解”的過程,直到循環(huán)條件不成立時(shí)退出循環(huán)。的過程,直到循環(huán)條件不成立時(shí)退出循環(huán)。(2 2)whilewhile和和forfor語句實(shí)現(xiàn)的都是當(dāng)型循環(huán)結(jié)構(gòu),語句實(shí)現(xiàn)的都是當(dāng)型循環(huán)結(jié)構(gòu),因此可以相互轉(zhuǎn)換,如本例中的因此可以相互轉(zhuǎn)換,如本例中的forfor語句可以用語句可以用whilewhile語句改寫成如下形式:語句改寫成如下形式:j=1;while(j=n) mul*=j; j+;循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件41編程技巧編程技巧(3)通過對(duì)比可

34、以發(fā)現(xiàn),)通過對(duì)比可以發(fā)現(xiàn),for語句在實(shí)現(xiàn)結(jié)語句在實(shí)現(xiàn)結(jié)果上比果上比while語句更簡(jiǎn)潔,因此使用更普遍。語句更簡(jiǎn)潔,因此使用更普遍。而且通過而且通過for語句(語句( )中的三個(gè)表達(dá)式很容易)中的三個(gè)表達(dá)式很容易計(jì)算出循環(huán)的執(zhí)行次數(shù)(如通過本例中的計(jì)算出循環(huán)的執(zhí)行次數(shù)(如通過本例中的j=1;j=n;j+部分可以直接推算出循環(huán)的次數(shù)部分可以直接推算出循環(huán)的次數(shù)為為n次),使得次),使得for語句在已知循環(huán)次數(shù)的場(chǎng)景語句在已知循環(huán)次數(shù)的場(chǎng)景下應(yīng)用尤為突出。下應(yīng)用尤為突出。練習(xí):計(jì)算練習(xí):計(jì)算1!+2!+3!+n!Page 41循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件42寫出程序運(yùn)行結(jié)果寫出程序運(yùn)

35、行結(jié)果#includeusing namespace std;void main( )int i,a(0);for(i=1;i=6;i+)switch(i%3) case 0: i-;case 1: a-=2; break;case 2: i+=1;default: +a;couta“,”iendl;運(yùn)行結(jié)果:運(yùn)行結(jié)果:-2,7 前一頁 休息精選課件43例例計(jì)算計(jì)算e= 1+(1/1!)+(1/2!)+ (1/n!) + 的近似值,的近似值,1/n!10-7時(shí)停止計(jì)算時(shí)停止計(jì)算 算法描述:算法描述:循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件44源程序清單源程序清單 #includeusing na

36、mespace std;void main( ) double e=1.0, u=1.0;int n=1;doe=e+u;n=n+1;u=u/n;while(u=1.0e-7);coute=e,(n=n)endl;循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件45編程技巧編程技巧(1 1)本例采用直到型循環(huán)結(jié)構(gòu)。注意:直)本例采用直到型循環(huán)結(jié)構(gòu)。注意:直到型循環(huán)必須保證循環(huán)體至少執(zhí)行一次。其實(shí)到型循環(huán)必須保證循環(huán)體至少執(zhí)行一次。其實(shí)現(xiàn)語句格式為:現(xiàn)語句格式為:dodo語句語句whilewhile(條件)(條件); ; do-while do-while語句實(shí)現(xiàn)的是直到型循環(huán)結(jié)構(gòu),語句實(shí)現(xiàn)的是直到型循環(huán)

37、結(jié)構(gòu),但其判斷條件有所改變:循環(huán)條件成立時(shí)繼續(xù)但其判斷條件有所改變:循環(huán)條件成立時(shí)繼續(xù)執(zhí)行下次循環(huán)體;執(zhí)行下次循環(huán)體; 循環(huán)體仍為一條語句;循環(huán)體仍為一條語句;循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件46 do-while語句的執(zhí)行過程:首先執(zhí)行一次循環(huán)體,然后重復(fù)“判斷執(zhí)行”的過程,直到循環(huán)條件不成立時(shí)退出循環(huán);注意:循環(huán)條件位于while關(guān)鍵字后的圓括號(hào)( )中,且圓括號(hào)后面需要加分號(hào)。練習(xí):計(jì)算兩個(gè)正整數(shù)計(jì)算兩個(gè)正整數(shù)m m和和n n的最大公約數(shù)的最大公約數(shù)(用當(dāng)型和直到型循環(huán)結(jié)構(gòu)分別實(shí)現(xiàn))(用當(dāng)型和直到型循環(huán)結(jié)構(gòu)分別實(shí)現(xiàn))編程技巧編程技巧循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 前一頁 休息精選課件47例例 判

38、斷正整數(shù)判斷正整數(shù)m是否為素?cái)?shù)是否為素?cái)?shù) 算法描述:算法描述: Page 47循環(huán)控制語句 前一頁 休息精選課件48源程序清單源程序清單#includeusing namespace std;void main( ) int m,j;cout請(qǐng)輸入一整數(shù):請(qǐng)輸入一整數(shù):m;for(j=2;jm;j+)if(m%j=0)break;if(jm) coutm不是素?cái)?shù)。不是素?cái)?shù)。 endl;else coutm是素?cái)?shù)。是素?cái)?shù)。 endl;循環(huán)控制語句 前一頁 休息精選課件49編程技巧編程技巧 (1)如果在循環(huán)體中根據(jù)需要想退出循環(huán),)如果在循環(huán)體中根據(jù)需要想退出循環(huán),可以使用可以使用break語句。

39、其作用是只要程序執(zhí)行該語句。其作用是只要程序執(zhí)行該語句,則結(jié)束整個(gè)循環(huán)結(jié)構(gòu);語句,則結(jié)束整個(gè)循環(huán)結(jié)構(gòu);(2)退出循環(huán)結(jié)構(gòu)后,如何知道在執(zhí)行循環(huán))退出循環(huán)結(jié)構(gòu)后,如何知道在執(zhí)行循環(huán)結(jié)構(gòu)時(shí)是否執(zhí)行過結(jié)構(gòu)時(shí)是否執(zhí)行過break語句呢?那就是判斷循語句呢?那就是判斷循環(huán)條件是否依然成立:若循環(huán)條件依然成立,說環(huán)條件是否依然成立:若循環(huán)條件依然成立,說明循環(huán)結(jié)構(gòu)是在執(zhí)行循環(huán)體的過程中執(zhí)行了明循環(huán)結(jié)構(gòu)是在執(zhí)行循環(huán)體的過程中執(zhí)行了break語句而被提前終止退出的。相反,如果循語句而被提前終止退出的。相反,如果循環(huán)條件不成立,說明循環(huán)結(jié)構(gòu)是在通過循環(huán)條件環(huán)條件不成立,說明循環(huán)結(jié)構(gòu)是在通過循環(huán)條件不成立而退出的

40、,同時(shí)意味著在執(zhí)行循環(huán)體的過不成立而退出的,同時(shí)意味著在執(zhí)行循環(huán)體的過程中一直沒有執(zhí)行程中一直沒有執(zhí)行break語句。語句。循環(huán)控制語句 前一頁 休息精選課件50例例找出并輸出找出并輸出100150之間和之間和400450之間能被之間能被9整除的數(shù)整除的數(shù) 源程序清單:源程序清單:#includeusing namespace std;void main( ) int n;for(n=100;n150&n400)continue;if(n%9=0) coutn ;cout150&n400成立時(shí)將執(zhí)行continue語句,這就表示其后的循環(huán)體部分if(n%9=0)在本次循環(huán)時(shí)不會(huì)

41、執(zhí)行。 循環(huán)控制語句 前一頁 休息精選課件52例例編程求編程求100到到999之間的回文數(shù),之間的回文數(shù),回文數(shù)是指正讀與反讀都一樣的數(shù)回文數(shù)是指正讀與反讀都一樣的數(shù)算法分析:算法分析:本題實(shí)質(zhì)是要找出所有的三位回文數(shù)。對(duì)于本題實(shí)質(zhì)是要找出所有的三位回文數(shù)。對(duì)于一個(gè)三位數(shù)而言,如果它是回文數(shù),則其百位數(shù)一個(gè)三位數(shù)而言,如果它是回文數(shù),則其百位數(shù)與個(gè)位數(shù)必然相同(取值范圍為與個(gè)位數(shù)必然相同(取值范圍為19),而此時(shí)),而此時(shí)對(duì)應(yīng)的十位數(shù)可以是對(duì)應(yīng)的十位數(shù)可以是09中的任意一個(gè)數(shù)。如果中的任意一個(gè)數(shù)。如果用變量用變量i表示其個(gè)位數(shù),則該變量需要在表示其個(gè)位數(shù),則該變量需要在19之之間進(jìn)行循環(huán)。同時(shí)

42、,如果用變量間進(jìn)行循環(huán)。同時(shí),如果用變量j表示該數(shù)的十表示該數(shù)的十位數(shù),則對(duì)于任何一個(gè)個(gè)位數(shù)位數(shù),則對(duì)于任何一個(gè)個(gè)位數(shù)i而言,變量而言,變量j都需都需要在要在09之間進(jìn)行變化。這就意味著在一個(gè)循環(huán)之間進(jìn)行變化。這就意味著在一個(gè)循環(huán)的循環(huán)體中需要包含另外一個(gè)循環(huán)。的循環(huán)體中需要包含另外一個(gè)循環(huán)。循環(huán)的嵌套 前一頁 休息精選課件53算法描述算法描述 Page 53循環(huán)的嵌套 前一頁 休息精選課件54源程序清單源程序清單 #includeusing namespace std;void main( )int n,i,j;for(i=1;i=9;i+)for(j=0;j=9;j+)n=i*100+j*

43、10+i;coutnendl;循環(huán)的嵌套 前一頁 休息精選課件55編程技巧編程技巧 (1)一個(gè)循環(huán)結(jié)構(gòu)的循環(huán)體中包含另一個(gè)循環(huán)結(jié))一個(gè)循環(huán)結(jié)構(gòu)的循環(huán)體中包含另一個(gè)循環(huán)結(jié)構(gòu),稱為循環(huán)結(jié)構(gòu)的嵌套;構(gòu),稱為循環(huán)結(jié)構(gòu)的嵌套;(2)在嵌套的循環(huán)結(jié)構(gòu)中,內(nèi)外層循環(huán)可以使用)在嵌套的循環(huán)結(jié)構(gòu)中,內(nèi)外層循環(huán)可以使用相同的循環(huán)語句來實(shí)現(xiàn)(如本例都采用相同的循環(huán)語句來實(shí)現(xiàn)(如本例都采用for語句來實(shí)語句來實(shí)現(xiàn)),也可以使用不同的循環(huán)語句來實(shí)現(xiàn);現(xiàn)),也可以使用不同的循環(huán)語句來實(shí)現(xiàn);(3)在嵌套的循環(huán)結(jié)構(gòu)中,外層循環(huán)結(jié)構(gòu)每執(zhí)行)在嵌套的循環(huán)結(jié)構(gòu)中,外層循環(huán)結(jié)構(gòu)每執(zhí)行一次,內(nèi)層循環(huán)結(jié)構(gòu)將執(zhí)行整輪循環(huán)(如本例中,一次,

44、內(nèi)層循環(huán)結(jié)構(gòu)將執(zhí)行整輪循環(huán)(如本例中,當(dāng)外層循環(huán)變量當(dāng)外層循環(huán)變量i為為1時(shí),內(nèi)層循環(huán)將循環(huán)一輪,即變時(shí),內(nèi)層循環(huán)將循環(huán)一輪,即變量量j將依次取值將依次取值09;當(dāng)外層循環(huán)的變量;當(dāng)外層循環(huán)的變量i變化為變化為2后,后,內(nèi)層循環(huán)又將循環(huán)一輪);內(nèi)層循環(huán)又將循環(huán)一輪);()內(nèi)外層循環(huán)的循環(huán)控制變量不能同名。()內(nèi)外層循環(huán)的循環(huán)控制變量不能同名。練習(xí):找出練習(xí):找出m、n之間所有的回文數(shù)之間所有的回文數(shù)計(jì)算計(jì)算m、n之間所有素?cái)?shù)之和之間所有素?cái)?shù)之和循環(huán)的嵌套 前一頁 休息精選課件56閱讀程序閱讀程序#include using namespace std;void main()int j=1,sum=0;loop:sum+=j;j+;if(j=100)goto loop;coutsum=sumendl; 前一頁 休息精選課件57編程技巧編程技巧(1)goto語句的功能是控制程序語句的功能是控制程序的流程無條件轉(zhuǎn)移到標(biāo)號(hào)指定的語句處的流程無條件轉(zhuǎn)移到標(biāo)號(hào)指定的語句處繼續(xù)執(zhí)行。由于繼續(xù)執(zhí)行。由于goto語句常常會(huì)破壞程語句常常會(huì)破壞程序的結(jié)構(gòu)性,除非某些特殊情況,一般序的結(jié)構(gòu)性,除非某些特殊情況,一般不用不用goto語句。語句。(2)goto語句的使用范圍僅局限語句的使用范

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論