版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第6章循環(huán)結(jié)構(gòu)程序設(shè)計6.1引例6.2while語句6.3do-while語句6.4for語句6.5幾種循環(huán)的比較6.6循環(huán)嵌套6.7break和continue語句6.8案例學(xué)習(xí)
6.1引例
【例6-1】求1~100的累計和。
分析:根據(jù)已有的知識,可以用“1+2+…+100”來求解,但顯然很繁瑣?,F(xiàn)在換個思路來考慮:首先設(shè)置一個累計器sum,其初值為0,利用sum+=n來計算(n依次取1,2,…,100),只要解決以下3個問題即可:
(1)將n的初值置為1;
(2)每執(zhí)行1次sum+=n后,n增1;
(3)當n增到101時,停止計算,此時,sum的值就是1~100的累計和。程序流程如圖6.1所示。圖6.1例6-1流程圖在C語言中,可用以下語句實現(xiàn)循環(huán):
(1)?for語句。
(2)?do-while語句。
(3)?while語句。
(4)?goto語句和if語句構(gòu)成循環(huán)。使用goto語句實現(xiàn)求解1~100累計和的程序如下:
6.2while語句
(1)語句格式:
while(表達式)
{循環(huán)體語句組;}
循環(huán)體如果只有一條語句組成,可以不用花括號括起來(即不用寫成復(fù)合語句形式)。
(2)執(zhí)行過程。while循環(huán)語句的執(zhí)行過程如圖6.2所示。
①求解表達式,如果其值為真(非0),轉(zhuǎn)②;否則轉(zhuǎn)③。
②執(zhí)行循環(huán)體語句組,然后轉(zhuǎn)①。
③執(zhí)行while語句的下一條。
(3)特點:先判斷表達式,后執(zhí)行循環(huán)體語句。圖6.2while循環(huán)語句流程圖
【例6-2】用while語句求1~100的累計和。圖6.3例6-2運行結(jié)果
【例6-3】用while語句求n!。
分析:根據(jù)階乘的數(shù)學(xué)定義可知,n!=n*(n-1)*(n-2)*(n-3)*…*2*1=n*(n-1)!。由此可知,有如下分析過程:圖6.4例6-3流程圖根據(jù)流程圖編程如下:圖6.5例6-3運行結(jié)果
6.3do-while語句
(1)語句格式:
do
{循環(huán)體語句組;}
while(表達式);
當循環(huán)體語句組僅由一條語句構(gòu)成時,可以不使用復(fù)合語句形式。
(2)執(zhí)行過程。do-while語句的執(zhí)行過程如圖6.6所示。
①執(zhí)行循環(huán)體語句組。
②判斷表達式。如果表達式的值為非0(真),則轉(zhuǎn)向①繼續(xù)執(zhí)行;否則,轉(zhuǎn)向③。
③執(zhí)行do-while的下一條語句。
(3)特點:先執(zhí)行循環(huán)體語句組,然后再判斷循環(huán)條件,因此循環(huán)體至少被執(zhí)行一次。圖6.6do-while循環(huán)語句流程圖
【例6-4】用do-while語句求解1~100的累計和。
【例6-5】用do-while語句求n!。
編程如下:
6.4for語句
在3條循環(huán)語句中,for語句最為靈活,不僅可用于循環(huán)次數(shù)已經(jīng)確定的情況,也可用于循環(huán)次數(shù)雖不確定,但給出了循環(huán)繼續(xù)的條件的情況。
(1)語句格式:
for([表達式1];[表達式2];[表達式3])
{循環(huán)體語句組;}
當循環(huán)體語句組僅由一條語句構(gòu)成時,可以不使用復(fù)合語句形式。
(2)執(zhí)行過程。for語句的執(zhí)行過程如圖6.7所示。
①求解表達式1。
②求解表達式2。該表達式的值為邏輯量,如果其值為“真”(非0),執(zhí)行③;否則,轉(zhuǎn)至④。
③執(zhí)行循環(huán)體語句組,并求解表達式3,然后轉(zhuǎn)向②。
④執(zhí)行for語句的下一條語句。圖6.7for循環(huán)語句流程圖
【例6-6】用for語句求解1~100的累計和。
【例6-7】用for語句求n!。
(3)說明。
①表達式1、表達式2和表達式3均可缺省,甚至全部缺省,但其間的分號“;”絕對不能省略。例如可將例6-6中的for語句改寫成以下幾種形式:②當循環(huán)體語句組僅由一條語句構(gòu)成時,可以不使用復(fù)合語句形式,如例6-6、例6-7所示。
③表達式1既可以是給循環(huán)變量賦初值的賦值表達式,也可以是與此無關(guān)的其它表達式(如逗號表達式)。
例如:
for(?sum=0;i<=100;i++)
sum+=i;
for(sum=0,i=1;i<=100;i++)
sum+=i;
④表達式2部分是一個邏輯量,除一般的關(guān)系(或邏輯)表達式外,也允許是數(shù)值(或字符)表達式。
6.5幾種循環(huán)的比較
1.while語句和do-while語句的區(qū)別
兩者的重要區(qū)別在于:執(zhí)行循環(huán)體時,對作為循環(huán)條件的表達式求值和驗證的時間不同。while語句先判斷循環(huán)條件是否滿足,然后再執(zhí)行循環(huán)體語句,故循環(huán)體語句有可能一次都不被執(zhí)行;而do-while語句先執(zhí)行循環(huán)體語句,然后再判斷循環(huán)條件是否滿足,故循環(huán)體語句至少被執(zhí)行一次。例如下面的程序,分別用while語句和do-while語句實現(xiàn)。
【例6-8】用while語句編寫程序,寫出其運行結(jié)果。圖6.8例6-8運行結(jié)果
【例6-9】用do-while語句編寫程序,寫出其運行結(jié)果。圖6.9例6-9運行結(jié)果
2.for語句的強大功能
for語句可以在表達式1中實現(xiàn)循環(huán)變量的初始化;而用while和do-while循環(huán)時,循環(huán)變量初始化的操作應(yīng)在while和do-while語句之前完成。
for循環(huán)可以在表達式3中包含使循環(huán)趨于結(jié)束的操作,甚至可以將循環(huán)體中的操作全部放到表達式3中;而在while循環(huán)和do-while循環(huán)中,只在while后面的括號內(nèi)指定循環(huán)條件,為了使循環(huán)能正常結(jié)束,應(yīng)在循環(huán)體中包含使循環(huán)趨于結(jié)束的語句(如i++,或i=i+1等)。
3.3種語句在程序設(shè)計中的選擇
3種語句選用的一般原則如下:
(1)如果循環(huán)次數(shù)在執(zhí)行循環(huán)體之前就已確定,一般用for語句;如果循環(huán)次數(shù)是由循環(huán)體的執(zhí)行情況確定的,一般用while語句或者do-while語句。
(2)當循環(huán)體至少執(zhí)行一次時,用do-while語句;如果循環(huán)體可能一次也不執(zhí)行,則選用while語句。
6.6循環(huán)嵌套
1.循環(huán)嵌套的概念
一個循環(huán)體內(nèi)又包含另一個完整的循環(huán)結(jié)構(gòu),稱為循環(huán)嵌套。一個循環(huán)外面僅包圍一層循環(huán)叫二重循環(huán);一個循環(huán)外面包圍兩層循環(huán)叫三重循環(huán);一個循環(huán)外面包圍多層循環(huán)叫多重循環(huán)。
2.循環(huán)嵌套的基本形式
三種循環(huán)(while循環(huán)、do-while循環(huán)和for循環(huán))可以互相嵌套。
3.循環(huán)嵌套的執(zhí)行過程
由于內(nèi)層循環(huán)作為外層循環(huán)的循環(huán)體,因此只有內(nèi)層循環(huán)循環(huán)結(jié)束后,外層循環(huán)的循環(huán)變量才進行一次補償?shù)脑黾?,即外層循環(huán)每執(zhí)行一次,內(nèi)層循環(huán)執(zhí)行一遍。例如下面的程序段,語句a++;?被執(zhí)行了12次(外循環(huán)3次,每一次外循環(huán),內(nèi)循環(huán)要執(zhí)行4次)。
【例6-10】編程輸出以下形式的正三角形:圖6.10例6-10流程圖圖6.11例6-10運行結(jié)果
【例6-11】編程輸出九九乘法表。
編程如下:圖6.12例6-1運行結(jié)果
6.7break和continue語句
為了使循環(huán)控制更加靈活,C語言提供了break語句和continue語句。
1.語句格式
break;
continue;
2.功能
(1)break:在switch語句中用來使流程跳出switch結(jié)構(gòu),執(zhí)行switch后面的語句;在循環(huán)體內(nèi),迫使所在循環(huán)體立即終止,即結(jié)束循環(huán),轉(zhuǎn)向執(zhí)行循環(huán)體后面的語句。
(2)?continue:結(jié)束本次循環(huán),即跳過循環(huán)體中下面尚未執(zhí)行的語句。對于for循環(huán),轉(zhuǎn)向循環(huán)變量增量表達式3的計算;對于while和do-while循環(huán),轉(zhuǎn)向循環(huán)繼續(xù)條件的判定。
【例6-12】設(shè)圓半徑為1~10之間的正整數(shù),面積小于200,輸出所有滿足條件的圓面積。
分析題意,畫出程序流程圖如圖6.13所示。圖6.13例6-12流程圖根據(jù)流程圖編寫程序如下:圖6.14例6-12運行結(jié)果
【例6-13】把100~200之間的不能被3整除的數(shù)輸出。
分析題意,畫出程序流程圖如圖6.15所示。圖6.15例6-13流程圖根據(jù)流程圖編寫程序如下:此程序段也可以不使用continue語句,改寫為以下形式:
6.8案例學(xué)習(xí)
【例6-14】方法一:采用二重循環(huán),外循環(huán)求20項之和,內(nèi)循環(huán)求出每一項的階乘。程序如下:方法二:由于a1
=
1,an
=
n*an-1(n>1),故采用單循環(huán)結(jié)構(gòu)。程序如下:圖6.16例6-14運行結(jié)果
【例6-15】求Fibonacci數(shù)列的前20項,以及這20項之和。
該數(shù)列的生成方法為:f1?=?1,f2?=?1,fn?=?fn-1+fn-2(n≥3),即從第3項開始,每一項等于前2項之和。解此題的算法流程如圖6.17所示。圖6.17例6-15流程圖
根據(jù)流程圖編程如下:圖6.18例6-15運行結(jié)果
【例6-16】求a,-aa,aaa,-aaaa,aaaaa,…數(shù)列的前n項之和。
分析:可以看出數(shù)列的每一項都是由其前一項按照一定的方法得到的??蓪?shù)列描述為:程序如下:圖6.19例6-16運行結(jié)果
【例6-17】計算sin(x)?=?x-x3/3!?+?x5/5!?-x7/7!?+?…直到最后一項的絕對值小于10-7時為止。
分析:可以看出數(shù)列的每一項都是由其前一項按照一定的方法得到的??蓪?shù)列描述為:
t1=x,tn=(-x2)/((n-1)×n)×tn-2?(n為奇數(shù),n>1),該數(shù)列只有奇數(shù)項,即n的值依次為1,3,5,7…。程序如下:圖6.20例6-17運行結(jié)果
【例6-18】找出1000以內(nèi)的所有水仙花數(shù)。
分析:水仙花數(shù)是每一位的立方和等于本身的三位數(shù),如153滿足13?+?53?+?33?=?153,就是水仙花數(shù)。
算法:令,a、b、c分別為m的百位、十位和個位,如果m==a*a*a+b*b*b+c*c*c成立,則為水仙花數(shù),輸出該數(shù)。程序如下:圖6.21例6-18運行結(jié)果
【例6-19】判斷某一正整數(shù)是否為素數(shù)。
分析:所謂素數(shù)就是除了1和它本身,再無別的約數(shù)的正整數(shù)(即數(shù)學(xué)上的質(zhì)數(shù))。
算法:根據(jù)素數(shù)的定義,用2~(n-1)之間的每一個數(shù)去整除n,如果都不能被整除,則表示該數(shù)是一個素數(shù)。判斷一個數(shù)是否能被另一個數(shù)整除,可通過判斷它們整除的余數(shù)是否為0來實現(xiàn),算法流程圖如圖6.22所示。圖6.22例6-19流程圖根據(jù)流程圖編寫程序如下:改進算法:用[2~]之間的每一個數(shù)去整除n,如果都不能被整除,則表示該數(shù)是一個素數(shù)。程序如下:圖6.23例6-19運行結(jié)果
【例6-20】找出100~200間的所有素數(shù)。
算法:采用二
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川西南航空職業(yè)學(xué)院《視傳藝術(shù)考察》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年花卉產(chǎn)業(yè)扶貧項目合作合同協(xié)議3篇
- 二零二五年度按揭貸款房屋改造貸款合同范本2篇
- 2024影視行業(yè)人才中介服務(wù)合同
- 二零二五版戶外廣告牌制作、安裝與維護全流程服務(wù)合同3篇
- 紹興文理學(xué)院元培學(xué)院《影視動畫海報設(shè)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 個人所得稅代扣代繳協(xié)議(2024年版)
- 二零二五年度水泥管行業(yè)市場競爭策略合同
- 二零二五年度專業(yè)安保公司員工勞動合同范本2篇
- 山東輕工職業(yè)學(xué)院《期貨投資》2023-2024學(xué)年第一學(xué)期期末試卷
- 《胃癌靶向治療》課件
- 2024-2025學(xué)年遼寧省沈陽市高一上學(xué)期1月期末質(zhì)量監(jiān)測數(shù)學(xué)試題(含解析)
- 《少兒主持人》課件
- 北京市朝陽區(qū)2024-2025學(xué)年高二上學(xué)期期末考試生物試卷(含答案)
- 2025年西藏拉薩市柳梧新區(qū)城市投資建設(shè)發(fā)展集團有限公司招聘筆試參考題庫附帶答案詳解
- 2025年部編版一年級語文上冊期末復(fù)習(xí)計劃
- 儲罐維護檢修施工方案
- 地理2024-2025學(xué)年人教版七年級上冊地理知識點
- 2024 消化內(nèi)科專業(yè) 藥物臨床試驗GCP管理制度操作規(guī)程設(shè)計規(guī)范應(yīng)急預(yù)案
- 2024-2030年中國電子郵箱行業(yè)市場運營模式及投資前景預(yù)測報告
- 基礎(chǔ)設(shè)施零星維修 投標方案(技術(shù)方案)
評論
0/150
提交評論