C語言 第5章 循環(huán)結(jié)構(gòu)_第1頁
C語言 第5章 循環(huán)結(jié)構(gòu)_第2頁
C語言 第5章 循環(huán)結(jié)構(gòu)_第3頁
C語言 第5章 循環(huán)結(jié)構(gòu)_第4頁
C語言 第5章 循環(huán)結(jié)構(gòu)_第5頁
已閱讀5頁,還剩57頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第5章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)

整理課件引例:編程計(jì)算1*2*3*4*5可以這樣實(shí)現(xiàn):

intproduct;product=1*2*3*4*5;如果問題變?yōu)椋呵?*2*3*…*10000?該問題無法用一個(gè)賦值語句實(shí)現(xiàn)!?2整理課件主要內(nèi)容學(xué)習(xí)三種結(jié)構(gòu)的程序設(shè)計(jì)方法順序結(jié)構(gòu)程序設(shè)計(jì)選擇結(jié)構(gòu)程序設(shè)計(jì)循環(huán)結(jié)構(gòu)程序設(shè)計(jì)掌握每一種語句的格式、功能、執(zhí)行過程和執(zhí)行結(jié)果,并學(xué)習(xí)如何將這些語句組織成程序?qū)W習(xí)邏輯問題的解題思路,及遞推、迭代的方法3整理課件循環(huán)結(jié)構(gòu)程序設(shè)計(jì)循環(huán)的概念用while語句和do-while語句實(shí)現(xiàn)循環(huán)用for語句實(shí)現(xiàn)循環(huán)循環(huán)的嵌套break語句和continue語句幾種循環(huán)的比較程序舉例整理課件一、循環(huán)概述5整理課件在很多實(shí)際問題中會(huì)遇到有規(guī)律性的重復(fù)運(yùn)算,因此在程序中就需要將某些語句重復(fù)執(zhí)行。一組被重復(fù)執(zhí)行的語句稱為循環(huán)體;每重復(fù)一次,都必須作出是繼續(xù)還是停止循環(huán)的決定,這個(gè)決定所依據(jù)的條件稱為循環(huán)條件;循環(huán):在給定條件成立時(shí),反復(fù)執(zhí)行某程序段,直到條件不成立為止。

6整理課件循環(huán)結(jié)構(gòu)入口noPAyes出口循環(huán)條件循環(huán)體7整理課件循環(huán)結(jié)構(gòu)需要解決的兩個(gè)問題2.控制循環(huán)結(jié)構(gòu)的結(jié)構(gòu)描述條件表示描述方法邏輯表達(dá)式關(guān)系表達(dá)式1.控制循環(huán)結(jié)構(gòu)執(zhí)行的條件表示while語句do-while語句實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的語句可使用c中的任意表達(dá)式for語句8整理課件1、while語句:while〔表達(dá)式〕語句;計(jì)算表達(dá)式的值;當(dāng)表達(dá)式的值為非0時(shí),反復(fù)執(zhí)行while中的語句;當(dāng)表達(dá)式的值為0時(shí),while循環(huán)結(jié)束。功能:while語句用來實(shí)現(xiàn)“當(dāng)型〞循環(huán)。執(zhí)行流程:9整理課件while語句執(zhí)行流程:0非0表達(dá)式=?循環(huán)體外語句循環(huán)體語句循環(huán)入口循環(huán)結(jié)束!開始下一次循環(huán)特點(diǎn):先判斷,后執(zhí)行;假設(shè)條件不成立,那么有可能一次也不執(zhí)行。適合的情況:知道控制循環(huán)的條件為某個(gè)邏輯表達(dá)式的值,而且在循環(huán)中該表達(dá)式的值會(huì)被改變。10整理課件例1.編程計(jì)算1+2+3+…+10000方案一、sum

=sum+i;i=i+1;11整理課件方案二、12整理課件方案三、13整理課件2、do-while語句:do{語句;}while〔表達(dá)式〕;執(zhí)行語句;計(jì)算表達(dá)式的值;當(dāng)表達(dá)式的值為非0時(shí),再次執(zhí)行do中的語句;當(dāng)表達(dá)式的值為0時(shí),do-while循環(huán)結(jié)束。執(zhí)行流程:14整理課件真(非0)表達(dá)式=?語句循環(huán)體外語句0do-while語句執(zhí)行流程:循環(huán)結(jié)束!開始下一次循環(huán)特點(diǎn):先執(zhí)行,后判斷;循環(huán)至少執(zhí)行一次語句。15整理課件例2.用do-while語句實(shí)現(xiàn)1+2+3+…+1000016整理課件例2.用do-while語句實(shí)現(xiàn)1+2+3+…+1000017整理課件例2.用do-while語句實(shí)現(xiàn)1+2+3+…+10000改成while語句注意兩個(gè)語句的順序!18整理課件例3.求滿足1+2+3+…+n<500

中最大的N,并求其和,編寫程序?qū)崿F(xiàn)。分析此題還是一個(gè)累加求和的問題,當(dāng)累加和sum500時(shí)反復(fù)執(zhí)行循環(huán),否那么結(jié)束循環(huán)步驟定義變量:sum,n;sum和n分別賦初值;n=0;sum=0;當(dāng)sum<500時(shí)反復(fù)執(zhí)行循環(huán),否那么結(jié)束循環(huán)。語句為:While(sum<500){++n;sum+=n;}19整理課件有錯(cuò)誤的地方嗎嗎??20整理課件21整理課件思考:給定一個(gè)小于等于216的正整數(shù),要求:求出它是幾位數(shù);分別正向打印出每一位數(shù)字;逆序打印出各位數(shù)字;22整理課件分析:變量:正整數(shù)m—小于等于216的正整數(shù);輸入:正整數(shù)m的值;輸出:幾位數(shù)、正向輸出各位數(shù)字、逆向輸出各位數(shù)字;解決問題:變量定義:m為無符號(hào)長(zhǎng)整型;num:位數(shù);a:某一位數(shù)字;求解過程:while(m!=0){……}23整理課件求解方法:〔1〕求出它是幾位數(shù);用num描述正整數(shù)m的位數(shù),初值為0當(dāng)m>0時(shí),開始統(tǒng)計(jì)m的位數(shù)while(m>0)因?yàn)閙>0,m至少有一位,num++;然后把m的個(gè)位去除;m=m/10;再判斷m是否仍然>0;當(dāng)循環(huán)結(jié)束時(shí),即:m等于0;結(jié)果:num的值即為m的位數(shù);24整理課件有問題嗎?25整理課件26整理課件求解方法:〔2〕分別正向打印出每一位數(shù)字;首先應(yīng)求出m的位數(shù)num;然后從最高位開始輸出;最高位為:m/10num-1;除了最高位以外,其他的局部為:m%10num-1;循環(huán)直到最后一位輸出結(jié)束。27整理課件求解方法:〔3〕逆序打印出各位數(shù)字;從最低位開始輸出;最低位為:m/10;除去最低位,其它的局部為:m%10;循環(huán),直到最高位輸出結(jié)束。28整理課件29整理課件〔1〕:求位數(shù)〔2〕:從高位到低位求每一位。〔3〕:從低位到高位求每一位。30整理課件31整理課件〔2〕:從高位到低位求每一位。32整理課件〔3〕:從低位到高位求每一位。33整理課件循環(huán)結(jié)構(gòu)程序設(shè)計(jì)循環(huán)的概念用while語句和do-while語句實(shí)現(xiàn)循環(huán)用for語句實(shí)現(xiàn)循環(huán)循環(huán)的嵌套break語句和continue語句幾種循環(huán)的比較程序舉例整理課件3、for語句:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)

語句;表達(dá)式1:一般為賦值表達(dá)式,給控制變量賦初值;表達(dá)式2:關(guān)系表達(dá)式或邏輯表達(dá)式,循環(huán)控制條件;表達(dá)式3:一般為賦值表達(dá)式,給控制變量增量/減量;語句:循環(huán)體,當(dāng)有多條語句時(shí),必須使用復(fù)合語句。35整理課件0真(非0)表達(dá)式2=?語句;循環(huán)體外語句表達(dá)式1;for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語句;表達(dá)式3;循環(huán)結(jié)束!開始下一次循環(huán)36整理課件3、for語句:for語句很好地表達(dá)了正確表達(dá)循環(huán)結(jié)構(gòu)應(yīng)該注意的三個(gè)問題:循環(huán)控制變量的初始化循環(huán)的條件循環(huán)控制變量的更新for語句適合的情況——循環(huán)次數(shù)37整理課件例6.用for語句計(jì)算1+2+...+100i=1i<=100sum+=ii++假真for(i=1;i<=100;i++)sum+=i;38整理課件例6.用for語句計(jì)算1+2+...+10039整理課件例6.用for語句計(jì)算1+2+...+100inti=0,sum=0;while(i<=10){ sum+=i; i++;}

inti=0,sum=0;

do{

i++; sum+=i;

}while(i<10);改寫成while和do-while語句。40整理課件for語句的三個(gè)表達(dá)式都是可以省略的,但分號(hào)“;〞絕對(duì)不能省略。for語句有以下幾種格式:〔1〕for(;;)語句;〔2〕for(;表達(dá)式2;表達(dá)式3)語句;〔3〕for〔表達(dá)式1;表達(dá)式2;)語句;〔4〕for(i=1,j=n;i<j;i++,j--)語句;注意41整理課件1、for(;;)該語句是一個(gè)死循環(huán),一般用條件表達(dá)式加break語句在循環(huán)體內(nèi)適當(dāng)位置,一旦條件滿足時(shí),用break語句跳出for循環(huán)。2、for(;表達(dá)式2;表達(dá)式3)

使用條件是:循環(huán)控制變量的初值不是常量,而是在前面通過計(jì)算得到。例如:

i=m-n;

??

for(;i<k;i++)語句;42整理課件3、for〔表達(dá)式1;表達(dá)式2;)語句

一般當(dāng)循環(huán)控制變量非規(guī)那么變化,而且循環(huán)體中有更新控制變量的語句時(shí)使用。例如:

for(i=1;i<=100;)

{??

i=i*2+1;

?? }43整理課件4、for(i=1,j=n;i<j;i++,j--)語句;

在for語句中,表達(dá)式1、表達(dá)式3都可以有一項(xiàng)或多項(xiàng),如本例中,表達(dá)式1同時(shí)為i和j賦初值,表達(dá)式3同時(shí)改變i和j的值。當(dāng)有不止一項(xiàng)時(shí),各項(xiàng)之間用逗號(hào)“,〞分隔。44整理課件循環(huán)結(jié)構(gòu)小結(jié)同一個(gè)問題,往往既可以用while語句解決,也可以用do-while或者for語句來解決,但在實(shí)際應(yīng)用中,應(yīng)根據(jù)具體情況來選用不同的循環(huán)語句。選用的一般原那么是:1、如果循環(huán)次數(shù)在執(zhí)行循環(huán)體之前就已確定,一般用for語句。如果循環(huán)次數(shù)是由循環(huán)體的執(zhí)行情況確定的,一般用while語句或者do-while語句;2、當(dāng)循環(huán)體至少執(zhí)行一次時(shí),用do-while語句,反之,如果循環(huán)體可能一次也不執(zhí)行,那么選用while語句。45整理課件循環(huán)結(jié)構(gòu)程序設(shè)計(jì)循環(huán)的概念用while語句和do-while語句實(shí)現(xiàn)循環(huán)用for語句實(shí)現(xiàn)循環(huán)循環(huán)的嵌套break語句和continue語句幾種循環(huán)的比較程序舉例整理課件循環(huán)的嵌套一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)結(jié)構(gòu),稱為循環(huán)的嵌套。內(nèi)嵌的循環(huán)中還可以嵌套循環(huán),這就是多重循環(huán)。循環(huán)1循環(huán)247整理課件for(){…

while()

{…}

}Do{

for()

{…}

}while()while(){

for(){…}

…}for(){

for(){…}

}以下四種均為合法的嵌套循環(huán)結(jié)構(gòu)48整理課件注意:三種循環(huán)語句for、while、do-while可以互相嵌套自由組合。但要注意的是,各循環(huán)必須完整,相互之間絕不允許交叉。如下面這種形式是不允許的:

do

{

......for(;;)

{

......

}while();}49整理課件98765432198765432181726354453627189645648403224168494235282114736302418126252015105161284963421例7.打印乘法“九九表〞50整理課件分析:定義變量i,j,m;i表示行,從1變化到9;j表示列,從1變化到9;m=i*j;表示表中的值;i取初值1;j從1變化到i;計(jì)算出每一個(gè)m=i*j,輸出m,但不換行。輸出換行;i做一次變化,如果i≤9,那么,轉(zhuǎn)回步驟6;否那么循環(huán)結(jié)束。51整理課件52整理課件#include<stdio.h>intmain(){ inti=0,j=0; for(i=1;i<=9;i++) { for(j=1;j<=i;j++) { printf("%4d",i*j); } printf("\n"); } return0;}53整理課件循環(huán)結(jié)構(gòu)程序設(shè)計(jì)循環(huán)的概念用while語句和do-while語句實(shí)現(xiàn)循環(huán)用for語句實(shí)現(xiàn)循環(huán)循環(huán)的嵌套break語句和continue語句幾種循環(huán)的比較程序舉例整理課件break語句:用于循環(huán)語句和switch語句中,作用是跳出它所在的循環(huán)語句或switch語句。格式:while(條件1){…;if(條件2)break;……}執(zhí)行過程:每次執(zhí)行到if語句時(shí),計(jì)算條件2的值;如果條件2的值非零,那么跳出循環(huán)語句;否那么,執(zhí)行if語句的下一條語句。55整理課件例7.一球從100米高度自由落下,每次落地后反彈回原高度的一半,再落下。求它在第10次落地時(shí)共經(jīng)過多少米?第10次反彈多高?

floath=100.0,sum=0.0;

intn;

for(n=1;;n++){

sum+=h;

h=h/2;//落地后反彈跳回原高度的一半

if(n==10)break;//終止執(zhí)行本循環(huán)

sum+=h;

}

溫馨提示

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