第6講程序結(jié)構(gòu)設(shè)計(jì)(下)-848805645_第1頁
第6講程序結(jié)構(gòu)設(shè)計(jì)(下)-848805645_第2頁
第6講程序結(jié)構(gòu)設(shè)計(jì)(下)-848805645_第3頁
第6講程序結(jié)構(gòu)設(shè)計(jì)(下)-848805645_第4頁
第6講程序結(jié)構(gòu)設(shè)計(jì)(下)-848805645_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第6講:程序結(jié)構(gòu)設(shè)計(jì)(下)

(參考教材的第3章)

yfhuang@

2014-10-29主要內(nèi)容循環(huán)程序設(shè)計(jì):3種循環(huán)控制語句綜合程序設(shè)計(jì)舉例3.4循環(huán)程序設(shè)計(jì)

--基本概念用順序結(jié)構(gòu)和分支結(jié)構(gòu)能解決所有問題嗎?計(jì)算機(jī)是一個(gè)“偉大傻瓜”,特征是不厭其煩地做同樣的操作,這是通過循環(huán)語句實(shí)現(xiàn)的對(duì)某些問題,在尋找它的解時(shí)需要檢查所有的可能的方案,從中找出可行解。這種解決問題的方法稱為枚舉法或窮舉法.該方法就是采用循環(huán)來實(shí)現(xiàn)。3.4循環(huán)程序設(shè)計(jì)

--基本概念當(dāng)條件滿足循環(huán)體

當(dāng)型循環(huán)

循環(huán)體

直到條件滿足直到型循環(huán)3.4循環(huán)程序設(shè)計(jì)C++語言提供了3種循環(huán)控制語句:

(1)while語句

(2)do-while語句

(3)for語句循環(huán)條件設(shè)計(jì):循環(huán)次數(shù)有限(計(jì)數(shù)控制)和循環(huán)次數(shù)未知(事件控制)循環(huán)體設(shè)計(jì):循環(huán)體如果包含一條以上語句時(shí),則應(yīng)該用花括號(hào)括起,構(gòu)成復(fù)合語句在循環(huán)體語句中,一定要有改變循環(huán)條件的語句,使循環(huán)能夠終止。否則,將成為死循環(huán)。3.5.1

while語句

while語句的一般格式為:

while(表達(dá)式)循環(huán)體語句while語句的執(zhí)行流程如圖所示:循環(huán)體while語句的下一語句表達(dá)式0圖while語句執(zhí)行流程示意圖非0例:從鍵盤輸入n(n>0)個(gè)數(shù),求其和?算法重點(diǎn)循環(huán)條件(計(jì)數(shù)控制循環(huán))循環(huán)體構(gòu)造計(jì)數(shù)器(i)和累加器(sum)的概念循環(huán)條件循環(huán)體例:從鍵盤連續(xù)輸入字符,直到輸入“回車”符為止,統(tǒng)計(jì)輸入的字符個(gè)數(shù)算法重點(diǎn)未知循環(huán)次數(shù)的循環(huán)條件(事件控制循環(huán))getchar()/getch()函數(shù)使用和區(qū)別charc;c=getchar();或c=getch();c=getch();頭文件是conio.h。而不是stdio.h

windows平臺(tái)下ENTER鍵會(huì)產(chǎn)生兩個(gè)轉(zhuǎn)義字符\r\n,getchar()返回10(即\n),getch返回13(\r)求PI的近似值,見P80-81提問:為什么錯(cuò)?求PI的近似值,見P80-813.5.2do-while語句

do-while語句格式:

do循環(huán)體while(<表達(dá)式>);

do-while語句的執(zhí)行流程如圖所示:循環(huán)語句體do-while語句的下一語句表達(dá)式0do-while語句執(zhí)行流程示意圖非03.5.2do-while語句

do-while語句與while語句的區(qū)別:do-while語句是在判斷條件是否成立之前,先執(zhí)行循環(huán)體語句一次;while語句則是先判斷條件是否成立,如果條件成立才執(zhí)行循環(huán)體;while語句的循環(huán)體可能一次都不執(zhí)行;而do-while語句的循環(huán)體至少被執(zhí)行一次,這是while語句和do-while語句的根本區(qū)別還不明白?例:從鍵盤輸入n(n>0)個(gè)數(shù),求其和?循環(huán)條件循環(huán)體循環(huán)條件循環(huán)體3.4.2do-while語句3.5.3for語句

for循環(huán)格式:

for(<表達(dá)式1>;<表達(dá)式2>;<表達(dá)式3>)

{循環(huán)體語句}for循環(huán)的執(zhí)行流程如圖所示:計(jì)算表達(dá)式1循環(huán)語句體計(jì)算表達(dá)式3for語句的下一語句表達(dá)式20用for循環(huán)語句編寫計(jì)算100個(gè)6相加的程序3.5.3for語句for語句的功能可用while語句描述如下:表達(dá)式1;例如:i=1;while(表達(dá)式2)while(i<=50){語句;{sum=sum+i;

表達(dá)式3;i++;}}for語句最簡(jiǎn)單的應(yīng)用形式:

for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值){語句}

例如,for(i=1;i<=50;i++)sum=sum+i;

3.5.3for語句1.缺省<表達(dá)式1>的情況;inti=1,sum=0;for(;i<=100;i++)sum=sum+6;2.缺省<表達(dá)式2>的情況;for(i=1,sum=0;;i++)sum=sum+6;此時(shí)循環(huán)條件為真,相當(dāng)while(1)3.缺省<表達(dá)式3>的情況;

inti=1,sum=0;for(;i<=100;){sum=sum+6;i++;}缺省也很美生活中的死循環(huán)我要回老家,但是我身份證丟了,我買不到票,于是我回不去了。但補(bǔ)辦身份證必須回老家補(bǔ)辦—于是,我死循環(huán)了。委托家人找關(guān)系補(bǔ)辦了身份證,家人快遞給我,收件人是我。結(jié)果需要憑身份證取件—于是我又死循環(huán)了……

3.5.3循環(huán)編程實(shí)例輸入任意1個(gè)大于2的整數(shù),判斷該數(shù)是否是素?cái)?shù),并輸出相應(yīng)結(jié)果分析:根據(jù)定義,一個(gè)>2的整數(shù)n,如果除1和n外不能被任何數(shù)整除,則是素?cái)?shù);并規(guī)定2是最小素?cái)?shù)。為了確定n是否含有因子,只需用2到n(也可用2至sqrt(n))作除數(shù),如均不能整除n,則n是素?cái)?shù),否則,n不是素?cái)?shù)算法(1)輸入n(2)如果n等于2,則輸出“2是一個(gè)素?cái)?shù)”;否則,如果n>2則找n是否有因子

i從2開始,用i除n,若余數(shù)非0且i≤n,則用下一個(gè)i重復(fù)該過程。當(dāng)余數(shù)為0或i大于等于n時(shí),結(jié)束找因子的過程(3)如果結(jié)束循環(huán)時(shí)余數(shù)為0,則輸出n“不是一個(gè)素?cái)?shù)“,否則,輸出n“是一個(gè)素?cái)?shù)”算法重點(diǎn):循環(huán)條件和程序效率//妙!妙!輸入一批整數(shù),以0為結(jié)束,輸出其中最大的一個(gè)分析:從若干數(shù)中找出最大的一個(gè)數(shù),最基本算法是“打擂臺(tái)”。即兩兩相比,大者留下,小者下臺(tái)。當(dāng)所有數(shù)比完時(shí),臺(tái)上留下的數(shù)為最大。程序中用一個(gè)變量max作為擂臺(tái),保存每?jī)蓚€(gè)數(shù)相比中大的一個(gè)數(shù)算法:

(1)輸入一個(gè)數(shù)x(2)置最大數(shù)max初值為x。

(3)檢查x是否等于0,如果x不等于0,則

(3)-1輸入下一個(gè)數(shù)x(3)-2如果max<x,則將max=x(3)-3轉(zhuǎn)步驟(3)(循環(huán));如果x等于0,則結(jié)束循環(huán),轉(zhuǎn)步驟(4)(4)輸出max算法重點(diǎn):打擂臺(tái)算法-求序列數(shù)中最大值//max是擂臺(tái)3.5.4循環(huán)嵌套犀利哥故事7—亦喜亦憂話說天仙妹妹來犀利哥家吃晚飯,飯飽回家。月朦朧,夜朦朧,兩人依依惜別。分別不久,犀利哥接到電話:天仙妹妹給車撞傷了。犀利哥急忙趕到現(xiàn)場(chǎng),肇事車輛跑了。幸好有3個(gè)目擊著。他們向犀利哥描述了車號(hào)的一些特征?甲說:牌照的前兩位數(shù)字是相同的;?乙說:牌照的后兩位數(shù)字是相同的,但與前兩位不同;?丙說:四位的車號(hào)剛好是一個(gè)整數(shù)的平方;請(qǐng)同學(xué)們根據(jù)以上線索編程找出車號(hào)。問題分析:這個(gè)故事,抽象為找出一個(gè)四位數(shù),滿足

(1)前兩位數(shù)相同;(2)后兩位數(shù)同,且與前兩位不同;(3)該整數(shù)是另一個(gè)整數(shù)的平方;3.5.4循環(huán)嵌套3.5.4循環(huán)嵌套

在循環(huán)體中又包含另一個(gè)循環(huán)語句,

稱為循環(huán)嵌套在多重循環(huán)中,處于內(nèi)部的循環(huán)稱為內(nèi)循環(huán),處于外部的循環(huán)稱為外循環(huán)C++規(guī)定,內(nèi)循環(huán)必須完全嵌套于外循環(huán)中,內(nèi)、外循環(huán)不能交叉;且內(nèi)、外循環(huán)的循環(huán)控制變量不能重名3.5.4循環(huán)嵌套

計(jì)算sin(x)=x-x3/3!+x5/5!-x7/7!+……直到最后一項(xiàng)的絕對(duì)值小于10-7時(shí),停止計(jì)算。x由鍵盤輸入

基本思想:設(shè)自變量為x,和為sum,每一項(xiàng)為temp定義常量為eps,其值為:10-7由計(jì)算公式可知,第N項(xiàng)為(-1)N+1*x2N-1/2N-1)!第N-1項(xiàng)為(-1)N*x2N-3/(2N-3)!兩相之間相差一個(gè)因子:-x2/((2N-2)*(2N-3))算法重點(diǎn):內(nèi)、外循環(huán)條件和循環(huán)體的設(shè)計(jì)3.5.4循環(huán)嵌套3.5.4循環(huán)嵌套【例】利用多重循環(huán)打印九九乘法表。程序如下:

3.5.4continue語句

如在程序中需要提前結(jié)束本次循環(huán),進(jìn)入下一次循環(huán),這就要使用continue

語句continue語句的一般格式是:continue;其作用是結(jié)束本次循環(huán),執(zhí)行下一次循環(huán)

continue語句要與循環(huán)語句連用,通常不單獨(dú)使用條件循環(huán)語句….Continue…循環(huán)語句3.5.5break語句的進(jìn)一步說明break語句也可用于循環(huán)語句。用于強(qiáng)制性中斷循環(huán),從循環(huán)語句結(jié)束循環(huán),轉(zhuǎn)移到循環(huán)語句后面的語句去執(zhí)行例:求100~200間的全部素?cái)?shù),見P82-833.6綜合程序設(shè)計(jì)//IO格式控制頭文件3.6綜合程序設(shè)計(jì)例:求Fibonacci數(shù)列,1,1,2,3,5,8,....的前40個(gè)數(shù),即:F1=1(n=1)F2=1(n=2)..Fn=Fn-1+Fn-2(n≥3)算法:算法重點(diǎn):遞推法,注意變量f1、f2的重用和更新3.6綜合程序設(shè)計(jì)參考課后22題.遞推算法:已知第10天為X2=1,則第9天為X1,X1/2-1=X2,即X1=(X2+1)*2。已知了第8天,同理可算出第7天…直到第1天參考課后25題算法重點(diǎn):窮舉法,通過循環(huán)列舉變量所有取值,打印符合條件的取值情況參考課后20題算法重點(diǎn):窮舉法,中間變量保存和條件輸出本講重點(diǎn)內(nèi)容1.掌握循環(huán)3種控制語句.計(jì)數(shù)控制和事件控制循環(huán)分別更適合使用哪種控制語句2.理解continue和break的區(qū)別3.學(xué)習(xí)采用窮舉法來解題4.學(xué)習(xí)采用遞推法來解題6.通過打擂臺(tái)法來找最大數(shù)算法6.如何判斷素?cái)?shù)的算法,標(biāo)記變量使用技巧下次課內(nèi)容:函數(shù)參考教材第4章4.1-4.10節(jié),帶星號(hào)章節(jié)不看第5次實(shí)驗(yàn)練習(xí)本次實(shí)驗(yàn)練習(xí)必做題2道如下。另有選作題1道。要求在第9周之前提交。提交源代碼和運(yùn)行結(jié)果【1】求10到200之間的孿生素?cái)?shù)對(duì)。孿生素?cái)?shù)對(duì)指兩個(gè)素?cái)?shù)的值相差2的一對(duì)素?cái)?shù),如11與13,17與19,…,等等。【2】犀利哥故事8-籌備彩禮,在第1次實(shí)驗(yàn)練習(xí)時(shí),我們給犀利哥計(jì)算出:養(yǎng)6個(gè)月羊無法湊齊彩禮。犀利哥很著急,需要到底多個(gè)月能湊齊彩禮?請(qǐng)幫忙編程給出答案。要求在該程序中,必需使用Break語句。選作題(1)某幼兒園按如下方法依次給A、B、C、D、E五個(gè)小孩發(fā)蘋果。將全部蘋果的一半再加二分之一個(gè)蘋果發(fā)給第一個(gè)小孩;將剩下蘋果的三分之一再加三分之一個(gè)蘋果發(fā)給第二個(gè)小孩;將剩下蘋果的四分之一再加四分之一個(gè)蘋果發(fā)給第三個(gè)小孩;將剩下蘋果的五分之一再加五分之一個(gè)蘋果發(fā)給第四個(gè)小孩;將最后剩下的11個(gè)蘋果發(fā)給第五個(gè)小孩。每個(gè)小孩得到的蘋果數(shù)均為整數(shù)。編制程序,確定原來共有多少個(gè)蘋果?每個(gè)小孩各得到多少個(gè)蘋果?(2)定義k(n)=n!(n>=1,n為整數(shù)),S(n)=k(1)+k(2)+…+k(n)(n>=1,n為整數(shù)),輸入n(1<=n<=10),輸出相應(yīng)的S(n)。輸入數(shù)據(jù)不需要考慮判錯(cuò)。測(cè)試數(shù)據(jù):n=1 答案:1n=4 答案:33n=10 答案:4037913(3)找出1~1000中僅僅包含5個(gè)因子(包括1和自身)的所有自然數(shù),輸出這些自然數(shù)的所有因子。要求:輸出要有提示(4)有A,B,C,D,E,F六個(gè)小朋友,現(xiàn)將三頂相同的白帽子,三頂相同的黑帽子分給他們,每人一頂。請(qǐng)編寫程序計(jì)算不同分配方案的個(gè)

溫馨提示

  • 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)論