版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
C++程序設(shè)計(jì)及項(xiàng)目實(shí)踐第5章 循環(huán)結(jié)構(gòu)
15.1while5.2do-while5.3for5.4嵌套5.5break5.6continue5.7應(yīng)用5.8本章小結(jié)C++程序設(shè)計(jì)及項(xiàng)目實(shí)踐2第5章 循環(huán)結(jié)構(gòu)
順序結(jié)構(gòu)和選擇結(jié)構(gòu)的程序執(zhí)行時(shí)候的特點(diǎn)是從從前向后執(zhí)行,可以選擇不執(zhí)行某些語句,或者從多個(gè)可執(zhí)行路徑中選擇一個(gè)執(zhí)行,但它們均不會回頭執(zhí)行之前已經(jīng)執(zhí)行過的語句。在某些情況下,程序可能會需要重復(fù)執(zhí)行以前執(zhí)行過的語句,這就需要循環(huán)結(jié)構(gòu)的程序了。C++程序設(shè)計(jì)及項(xiàng)目實(shí)踐35.1whilewhile語句的語法如下:while(表達(dá)式){
語句序列;}
程序執(zhí)行while語句時(shí),首先判斷while(布爾表達(dá)式)中布爾表達(dá)式值的真假,若為假(false),則跳過while語句,執(zhí)行while語句的下一條語句;布爾表達(dá)式若為真(true),則進(jìn)入while語句內(nèi)部,執(zhí)行其中的語句序列,執(zhí)行完后,再回到while(布爾表達(dá)式)的布爾表達(dá)式的判斷,然后重復(fù)該流程。
一般來說,循環(huán)結(jié)構(gòu)的程序都蘊(yùn)涵內(nèi)在的重復(fù)執(zhí)行的操作,因此,再設(shè)計(jì)循環(huán)結(jié)構(gòu)程序時(shí),首先需要回答兩個(gè)問題:(1)重復(fù)的操作是什么?(2)控制重復(fù)的因素是什么?
通過這兩個(gè)要點(diǎn)可以提煉出循環(huán)的三個(gè)要素:(1)循環(huán)重復(fù)執(zhí)行的動(dòng)作;(2)循環(huán)的起止條件;(3)循環(huán)條件的改變規(guī)則。當(dāng)找到了這三個(gè)要素之后,就比較容易編寫循環(huán)結(jié)構(gòu)的程序了。表達(dá)式假真語句塊C++程序設(shè)計(jì)及項(xiàng)目實(shí)踐4例
輸出5遍“HelloC++”(只用while循環(huán)書寫)思路:通過分析這個(gè)問題,可以發(fā)現(xiàn):(1)重復(fù)的操作是輸出”HelloC++”;(2)控制重復(fù)的因素是輸出次數(shù),只要次數(shù)不超過5次就重復(fù)執(zhí)行輸出,否則就不再操作。因此,可以提煉出循環(huán)的三個(gè)要素:(1)循環(huán)重復(fù)執(zhí)行的操作為輸出”HelloC++”;(2)循環(huán)次數(shù)從第1次開始,到第5次完成結(jié)束;(3)循環(huán)計(jì)次每完成1次輸出增加1次。由此,可以順利地寫出正確的程序。C++程序設(shè)計(jì)及項(xiàng)目實(shí)踐5例
輸出5遍“HelloC++”(只用while循環(huán)書寫)01#include<iostream>02usingnamespacestd;03intmain()04{05introw=1;06while(row<=5)07{08cout<<"HelloC++"<<endl;09row++;10}11cout<<"row="<<row<<endl;12return0;13}C++程序設(shè)計(jì)及項(xiàng)目實(shí)踐6例5.3從1到100求和思路:通過分析這個(gè)問題,可以發(fā)現(xiàn):(1)重復(fù)的操作是求和,求和必須是將值要保存到唯一的變量空間。(2)控制重復(fù)的因素是求和數(shù)值范圍:從1到100,若該數(shù)不在該范圍內(nèi),則不能再重復(fù)操作。處理的一些求和技術(shù)的小技巧:sum=0;//開始時(shí)初始化sumsum=sum+1;sum=sum+2;…sum=sum+n;也就是求和可以用sum=sum+i來表示,然后改變(求和數(shù)值)i依次為1,2,..,n加入到sum中,實(shí)現(xiàn)了匯總,也就是控制i的范圍,就控制了可以求和的范圍??梢蕴釤挸鲈撗h(huán)的三個(gè)要素:(1)循環(huán)重復(fù)執(zhí)行的操作為sum=sum+i;(2)循環(huán)從求和數(shù)值i=1開始,到i=100完成求和結(jié)束;(3)求和數(shù)值每完成1次求和增加1。C++程序設(shè)計(jì)及項(xiàng)目實(shí)踐7例5.3從1到100求和01#include<iostream>02usingnamespacestd;03intmain()04{05intn=1,sum=0;06while(n<=100)07{08sum=sum+n;09n++;10}11cout<<sum<<endl;12return0;13}C++程序設(shè)計(jì)及項(xiàng)目實(shí)踐85.2do-whiledo-while語句如下:do{語句序列;}while(表達(dá)式);表達(dá)式假真語句塊語句執(zhí)行到do-while語句時(shí),先進(jìn)入大括號內(nèi)部執(zhí)行語句序列,執(zhí)行完以后再進(jìn)行while(布爾表達(dá)式)的執(zhí)行,判斷布爾表達(dá)式是否為真,若為真(true),則返回重復(fù)執(zhí)行之前已經(jīng)執(zhí)行過的語句序列,若布爾表達(dá)式為假(false),則結(jié)束do-while語句,進(jìn)入到下一條語句。C++程序設(shè)計(jì)及項(xiàng)目實(shí)踐9例
從1到100求和思路:通過分析這個(gè)問題,可以發(fā)現(xiàn):(1)重復(fù)的操作是求和,求和必須是將值要保存到唯一的變量空間。(2)控制重復(fù)的因素是求和數(shù)值范圍:從1到100,若該數(shù)不在該范圍內(nèi),則不能再重復(fù)操作。處理的一些求和技術(shù)的小技巧:sum=0;//開始時(shí)初始化sumsum=sum+1;sum=sum+2;…sum=sum+n;也就是求和可以用sum=sum+i來表示,然后改變(求和數(shù)值)i依次為1,2,..,n加入到sum中,實(shí)現(xiàn)了匯總,也就是控制i的范圍,就控制了可以求和的范圍??梢蕴釤挸鲈撗h(huán)的三個(gè)要素:(1)循環(huán)重復(fù)執(zhí)行的操作為sum=sum+i;(2)循環(huán)從求和數(shù)值i=1開始,到i=100完成求和結(jié)束;(3)求和數(shù)值每完成1次求和增加1。C++程序設(shè)計(jì)及項(xiàng)目實(shí)踐10例
從1到100求和01#include<iostream>02usingnamespacestd;03intmain()04{05intn=1,sum=0;06do07{08sum+=n;09n++;10}while(n<=100);11cout<<sum<<endl;12return0;13}C++程序設(shè)計(jì)及項(xiàng)目實(shí)踐115.3forfor語句的語句如下:for(表達(dá)式1;表達(dá)式2;表達(dá)式3){語句序列;}for語句小括號中包括3個(gè)表達(dá)式,并用分號隔開。程序執(zhí)行的時(shí)候首先執(zhí)行表達(dá)式1,然后判斷表達(dá)式2是否為真(true,非0值),若為真,則執(zhí)行大括號內(nèi)部的語句序列,執(zhí)行完后,執(zhí)行for語句小括號中表達(dá)式3,然后再判斷表達(dá)式2是否為真,若成立,則循環(huán),若表達(dá)式2為假(false,0值),則for語句結(jié)束,進(jìn)入for語句的下一條語句。表達(dá)式2語句塊真假表達(dá)式1表達(dá)式3C++程序設(shè)計(jì)及項(xiàng)目實(shí)踐12例
從1到100求和思路:通過分析這個(gè)問題,可以發(fā)現(xiàn):(1)重復(fù)的操作是求和,求和必須是將值要保存到唯一的變量空間。(2)控制重復(fù)的因素是求和數(shù)值范圍:從1到100,若該數(shù)不在該范圍內(nèi),則不能再重復(fù)操作。處理的一些求和技術(shù)的小技巧:sum=0;//開始時(shí)初始化sumsum=sum+1;sum=sum+2;…sum=sum+n;也就是求和可以用sum=sum+i來表示,然后改變(求和數(shù)值)i依次為1,2,..,n加入到sum中,實(shí)現(xiàn)了匯總,也就是控制i的范圍,就控制了可以求和的范圍??梢蕴釤挸鲈撗h(huán)的三個(gè)要素:(1)循環(huán)重復(fù)執(zhí)行的操作為sum=sum+i;(2)循環(huán)從求和數(shù)值i=1開始,到i=100完成求和結(jié)束;(3)求和數(shù)值每完成1次求和增加1。C++程序設(shè)計(jì)及項(xiàng)目實(shí)踐13例
從1到100求和01#include<iostream>02usingnamespacestd;03intmain()04{05intsum=0;06for(intn=1;n<=100;n++)07{08sum+=n;09}10cout<<sum<<endl;11return0;12}C++程序設(shè)計(jì)及項(xiàng)目實(shí)踐145.4嵌套選擇結(jié)構(gòu)中if-else,switch等可以相互嵌套,從而可以構(gòu)造功能更強(qiáng)的程序,循環(huán)結(jié)構(gòu)和選擇結(jié)構(gòu)之間,循環(huán)結(jié)構(gòu)和循環(huán)結(jié)構(gòu)之間也可以構(gòu)成嵌套結(jié)構(gòu)的程序,從而增強(qiáng)程序的功能。C++程序設(shè)計(jì)及項(xiàng)目實(shí)踐155.4嵌套5.4.1嵌套選擇5.4.2嵌套判斷C++程序設(shè)計(jì)及項(xiàng)目實(shí)踐16例
從1到100之間奇數(shù)求和思路:直接對從1到100之間的所有整數(shù)求和的問題之前已經(jīng)求解過了,使用循環(huán)結(jié)構(gòu)即可以容易求解。從1到100之間的數(shù)包含奇數(shù),也包括偶數(shù),所以可以在匯總的程序中,對每個(gè)數(shù)字進(jìn)行檢查,若為奇數(shù)則匯總,若為偶數(shù)忽略即可。5.4.1嵌套選擇C++程序設(shè)計(jì)及項(xiàng)目實(shí)踐175.4.1嵌套選擇例
從1到100之間奇數(shù)求和01#include<iostream>02usingnamespacestd;03intmain()04{05intsum=0;06for(intn=1;n<=100;n++)07{08if(n%2==1)09{10sum+=n;11}12}13cout<<sum<<endl;14return0;15}C++程序設(shè)計(jì)及項(xiàng)目實(shí)踐18例
求解階乘和S(n)=1!+2!+3!+…+n!思路:分析該計(jì)算式,可以發(fā)現(xiàn)S(n)需要對從1到n之間的每一個(gè)整數(shù)i分別求階乘,所以需要一個(gè)循環(huán)來控制整數(shù)i的范圍,而對于該范圍內(nèi)的每個(gè)整數(shù)i而言,需要計(jì)算其階乘i!,階乘可以表示成從1累乘到i,所以這又可以用一個(gè)循環(huán)實(shí)現(xiàn),后一個(gè)循環(huán)嵌入在前一個(gè)循環(huán)中。5.4.2嵌套循環(huán)C++程序設(shè)計(jì)及項(xiàng)目實(shí)踐195.4.2嵌套循環(huán)例
求解階乘和S(n)=1!+2!+3!+…+n!01#include<iostream>02usingnamespacestd;03intmain()04{05intn,sum=0;06cin>>n;07for(inti=1;i<=n;i++)08{09inttmp=1;10for(intj=1;j<=i;j++)11{12tmp*=j;13}14sum+=tmp;15}16cout<<sum<<endl;17return0;18}C++程序設(shè)計(jì)及項(xiàng)目實(shí)踐205.5break在循環(huán)語句執(zhí)行過程中,若需要提前結(jié)束循環(huán),則可以使用break語句。無論在while,do-while,for循環(huán)結(jié)構(gòu)的哪一種語句中,均可以使用break語句提前結(jié)束循環(huán)。(a)while中的break(b)do-while中的break(c)for中的break表達(dá)式…break;…真假表達(dá)式…break;…真假表達(dá)式2…break;…真假表達(dá)式1表達(dá)式3C++程序設(shè)計(jì)及項(xiàng)目實(shí)踐21例
判斷某數(shù)是否為素?cái)?shù)思路:素?cái)?shù)n只能被1和n自己整除。那這需要檢測從2開始到n-1期間所有數(shù)能否被n整除,只要有一個(gè)能被整除,則n就不是素?cái)?shù),只有所有數(shù)都不能被整除,才能最終確定該數(shù)為素?cái)?shù)。5.5breakC++程序設(shè)計(jì)及項(xiàng)目實(shí)踐22例
判斷某數(shù)是否為素?cái)?shù)01#include<iostream>02usingnamespacestd;03intmain()04{05intn;06cin>>n;07boolis=true;08for(inti=2;i<=n/2;i++)09{10if(n%i==0)11{12is=false;13break;14}15}16if(is==true)17{18cout<<"Yes"<<endl;19}20else21{22cout<<"No"<<endl;23}24return0;25}C++程序設(shè)計(jì)及項(xiàng)目實(shí)踐235.6continue在循環(huán)結(jié)構(gòu)中,可以用continue語句提前結(jié)束本輪循環(huán),直接進(jìn)入到下一次的循環(huán)。(a)while中的continue(b)do-while中的continue(c)for中的continue表達(dá)式…continue;…真假表達(dá)式…continue;…真假表達(dá)式2…continue;…真假表達(dá)式1表達(dá)式3C++程序設(shè)計(jì)及項(xiàng)目實(shí)踐24例
對輸入5個(gè)正數(shù)求和,若輸入為負(fù)數(shù),則重新輸入。01#include<iostream>02usingnamespacestd;03intmain()04{05intn,sum=0;06for(inti=1;i<=5;i++)07{08cin>>n;09if(n<0)10{11i--;12cout<<"Pleasereinput!"<<endl;13continue;14}15sum+=n;16}17cout<<sum<<endl;18return0;19}C++程序設(shè)計(jì)及項(xiàng)目實(shí)踐255.7應(yīng)用例1統(tǒng)計(jì)輸入字符各類字符個(gè)數(shù),分別統(tǒng)計(jì)小寫字符,大寫字符,數(shù)字字符,其他字符。01#include<iostream>02#include<cstdio>03usingnamespacestd;04intmain()05{06intln(0),un(0),dn(0),on(0);07charc;08while((c=getchar())!='\n')09{10if(c>='a'&&c<='z')11{12ln++;13continue;14}if(c>='A'&&c<='Z')16{17un++;18continue;19}20if(c>='0'&&c<='9')21{22dn++;23continue;24}25on++;26}27cout<<"thenumberoflowercaseletters:"<<ln<<endl;28cout<<"thenumberofuppercaseletters:"<<un<<endl;29cout<<"thenumberofdigits:"<<dn<<endl;30cout<<"thenumberofotherletters:"<<on<<endl;31return0;}C++程序設(shè)計(jì)及項(xiàng)目實(shí)踐26例2
求解最大公約數(shù)。思路:這里使用窮舉法求解最大公約數(shù),方法比較直接,就是從兩個(gè)數(shù)中較小的數(shù)開始向1的方向遍歷,若該數(shù)能同時(shí)整除這兩個(gè)整數(shù),則找到了最大公約數(shù)。C++程序設(shè)計(jì)及項(xiàng)目實(shí)踐27例2
求解最大公約數(shù)。01#include<iostream>02usingnamespacestd;03intmain()04{05inta,b;06cin>>a>>b;07inttmp=(a<b)?a:b;08for(;tmp>0;tmp--)09{10if(a%tmp!=0)11{12continue;13}14if(b%tm
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 水塘擴(kuò)建施工方案(3篇)
- 交手架施工方案(3篇)
- 2025年中小幼教育知識與能力真題及答案
- 節(jié)能施工方案圖解(3篇)
- 2024年下半年教師資格考試《綜合素質(zhì)》(中學(xué))試題及答案
- 胰島素調(diào)整例題(帶答案)
- 泥水式施工方案(3篇)
- 涵洞拼接施工方案(3篇)
- 臥室翻新施工方案(3篇)
- 2025年安徽公共資源交易評標(biāo)評審專家考試全真模擬試題及答案
- 國際稅收智慧樹知到期末考試答案章節(jié)答案2024年中央財(cái)經(jīng)大學(xué)
- 2024工程停工補(bǔ)償協(xié)議
- JB-T 8532-2023 脈沖噴吹類袋式除塵器
- AQ2059-2016 磷石膏庫安全技術(shù)規(guī)程
- (正式版)SHT 3045-2024 石油化工管式爐熱效率設(shè)計(jì)計(jì)算方法
- 《婦病行》教師教學(xué)
- 《養(yǎng)老護(hù)理員》-課件:協(xié)助臥床老年人使用便器排便
- 初三勵(lì)志、拼搏主題班會課件
- Cuk斬波完整版本
- GB/T 3521-2023石墨化學(xué)分析方法
- 三維動(dòng)畫及特效制作智慧樹知到課后章節(jié)答案2023年下吉林電子信息職業(yè)技術(shù)學(xué)院
評論
0/150
提交評論