版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)生店用工合同范本
- 物流項(xiàng)目管理培訓(xùn)
- 我國(guó)上市公司財(cái)務(wù)造假的原因及對(duì)策探討學(xué)士學(xué)位論文
- 闌尾炎保守治療護(hù)理查房
- 河南省-2023年-社區(qū)工作者-上半年筆試真題卷
- 前臺(tái)收銀崗位職責(zé)模版(3篇)
- 2024年中秋節(jié)主題活動(dòng)總結(jié)范例(3篇)
- 2024年盡職盡責(zé)愛崗敬業(yè)演講稿范文(2篇)
- 2021年10月廣西柳州市事業(yè)單位公開招聘中高級(jí)(急需緊缺)人才(第四批)強(qiáng)化練習(xí)題(一)
- 2024年勞動(dòng)節(jié)五一致辭模版(4篇)
- 期中 (試題) -2024-2025學(xué)年人教精通版英語六年級(jí)上冊(cè)
- 期刊編輯的學(xué)術(shù)期刊論文寫作指導(dǎo)考核試卷
- 無脊椎動(dòng)物課件-2024-2025學(xué)年(2024)人教版生物七年級(jí)上冊(cè)
- 教科版小學(xué)科學(xué)五年級(jí)上冊(cè)教案(全冊(cè))
- 戶外廣告牌施工方案
- 泵站運(yùn)行管理手冊(cè)
- 九年級(jí)化學(xué)上冊(cè)(滬教版2024)新教材解讀課件
- JGT503-2016承插型盤扣式鋼管支架構(gòu)件
- SH∕T 3097-2017 石油化工靜電接地設(shè)計(jì)規(guī)范
- 五年級(jí)上冊(cè)道德與法治第6課《我們神圣的國(guó)土》第1課時(shí)說課稿
- 《詩經(jīng)》與楚辭導(dǎo)讀智慧樹知到期末考試答案章節(jié)答案2024年??诮?jīng)濟(jì)學(xué)院
評(píng)論
0/150
提交評(píng)論