C語言第5章循環結構-課件_第1頁
C語言第5章循環結構-課件_第2頁
C語言第5章循環結構-課件_第3頁
C語言第5章循環結構-課件_第4頁
C語言第5章循環結構-課件_第5頁
已閱讀5頁,還剩59頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第5章循環結構程序設計

2020/11/24引例:編程計算1*2*3*4*5可以這樣實現:

intproduct;product=1*2*3*4*5;如果問題變為:求1*2*3*…*10000?該問題無法用一個賦值語句實現!?2020/11/242精品資料2020/11/24你怎么稱呼老師?如果老師最后沒有總結一節課的重點的難點,你是否會認為老師的教學方法需要改進?你所經歷的課堂,是講座式還是討論式?教師的教鞭“不怕太陽曬,也不怕那風雨狂,只怕先生罵我笨,沒有學問無顏見爹娘……”“太陽當空照,花兒對我笑,小鳥說早早早……”2020/11/24主要內容學習三種結構的程序設計方法順序結構程序設計選擇結構程序設計循環結構程序設計掌握每一種語句的格式、功能、執行過程和執行結果,并學習如何將這些語句組織成程序學習邏輯問題的解題思路,及遞推、迭代的方法2020/11/245循環結構程序設計循環的概念用while語句和do-while語句實現循環用for語句實現循環循環的嵌套break語句和continue語句幾種循環的比較程序舉例2020/11/24一、循環概述2020/11/247在很多實際問題中會遇到有規律性的重復運算,因此在程序中就需要將某些語句重復執行。一組被重復執行的語句稱為循環體;每重復一次,都必須作出是繼續還是停止循環的決定,這個決定所依據的條件稱為循環條件;循環:在給定條件成立時,反復執行某程序段,直到條件不成立為止。

2020/11/248循環結構入口noPAyes出口循環條件循環體2020/11/249循環結構需要解決的兩個問題2.控制循環結構的結構描述條件表示描述方法邏輯表達式關系表達式1.控制循環結構執行的條件表示while語句do-while語句實現循環結構的語句可使用c中的任意表達式for語句2020/11/24101、while語句:while(表達式)語句;計算表達式的值;當表達式的值為非0時,反復執行while中的語句;當表達式的值為0時,while循環結束。功能:while語句用來實現“當型”循環。執行流程:2020/11/2411while語句執行流程:0非0表達式=?循環體外語句循環體語句循環入口循環結束!開始下一次循環特點:先判斷,后執行;若條件不成立,則有可能一次也不執行。適合的情況:知道控制循環的條件為某個邏輯表達式的值,而且在循環中該表達式的值會被改變。2020/11/2412例1.編程計算1+2+3+…+10000方案一、sum

=sum+i;i=i+1;2020/11/2413方案二、2020/11/2414方案三、2020/11/24152、do-while語句:do{語句;}while(表達式);執行語句;計算表達式的值;當表達式的值為非0時,再次執行do中的語句;當表達式的值為0時,do-while循環結束。執行流程:2020/11/2416真(非0)表達式=?語句循環體外語句0do-while語句執行流程:循環結束!開始下一次循環特點:先執行,后判斷;循環至少執行一次語句。2020/11/2417例2.用do-while語句實現1+2+3+…+100002020/11/2418例2.用do-while語句實現1+2+3+…+100002020/11/2419例2.用do-while語句實現1+2+3+…+10000改成while語句注意兩個語句的順序!2020/11/2420例3.求滿足1+2+3+…+n<500

中最大的N,并求其和,編寫程序實現。分析本題還是一個累加求和的問題,當累加和sum500時反復執行循環,否則結束循環步驟定義變量:sum,n;sum和n分別賦初值;

n=0;sum=0;當sum<500時反復執行循環,

否則結束循環。語句為:While(sum<500){++n;sum+=n;}2020/11/2421有錯誤的地方嗎嗎??2020/11/24222020/11/2423思考:給定一個小于等于216的正整數,要求:求出它是幾位數;分別正向打印出每一位數字;逆序打印出各位數字;2020/11/2424分析:變量:正整數m—小于等于216的正整數;輸入:正整數m的值;輸出:幾位數、正向輸出各位數字、逆向輸出各位數字;解決問題:變量定義:m為無符號長整型;num:位數;a:某一位數字;求解過程:while(m!=0){……}2020/11/2425求解方法:(1)求出它是幾位數;用num描述正整數m的位數,初值為0當m>0時,開始統計m的位數while(m>0)因為m>0,m至少有一位,num++;然后把m的個位去除;m=m/10;再判斷m是否仍然>0;當循環結束時,即:m等于0;結果:num的值即為m的位數;2020/11/2426有問題嗎?2020/11/24272020/11/2428求解方法:(2)分別正向打印出每一位數字;首先應求出m的位數num;然后從最高位開始輸出;最高位為:m/10num-1;除了最高位以外,其他的部分為:m%10num-1;循環直到最后一位輸出結束。2020/11/2429求解方法:(3)逆序打印出各位數字;從最低位開始輸出;最低位為:m/10;除去最低位,其它的部分為:m%10;循環,直到最高位輸出結束。2020/11/24302020/11/2431(1):求位數(2):從高位到低位求每一位。(3):從低位到高位求每一位。2020/11/24322020/11/2433(2):從高位到低位求每一位。2020/11/2434(3):從低位到高位求每一位。2020/11/2435循環結構程序設計循環的概念用while語句和do-while語句實現循環用for語句實現循環循環的嵌套break語句和continue語句幾種循環的比較程序舉例2020/11/243、for語句:for(表達式1;表達式2;表達式3)

語句;表達式1:一般為賦值表達式,給控制變量賦初值;表達式2:關系表達式或邏輯表達式,循環控制條件;表達式3:一般為賦值表達式,給控制變量增量/減量;語句:循環體,當有多條語句時,必須使用復合語句。2020/11/24370真(非0)表達式2=?語句;循環體外語句表達式1;for(表達式1;表達式2;表達式3)語句;表達式3;循環結束!開始下一次循環2020/11/24383、for語句:for語句很好地體現了正確表達循環結構應該注意的三個問題:循環控制變量的初始化循環的條件循環控制變量的更新for語句適合的情況——已知循環次數2020/11/2439例6.用for語句計算1+2+...+100i=1i<=100sum+=ii++假真for(i=1;i<=100;i++)sum+=i;2020/11/2440例6.用for語句計算1+2+...+1002020/11/2441例6.用for語句計算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語句。2020/11/2442for語句的三個表達式都是可以省略的,但分號“;”絕對不能省略。for語句有以下幾種格式:(1)for(;;)語句;(2)for(;表達式2;表達式3)語句;(3)for(表達式1;表達式2;)語句;(4)for(i=1,j=n;i<j;i++,j--)語句;注意2020/11/24431、for(;;)該語句是一個死循環,一般用條件表達式加break語句在循環體內適當位置,一旦條件滿足時,用break語句跳出for循環。2、for(;表達式2;表達式3)

使用條件是:循環控制變量的初值不是已知常量,而是在前面通過計算得到。

例如:

i=m-n;

??

for(;i<k;i++)語句;2020/11/24443、for(表達式1;表達式2;)語句

一般當循環控制變量非規則變化,而且循環體中有更新控制變量的語句時使用。例如:

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

{??

i=i*2+1;

?? }2020/11/24454、for(i=1,j=n;i<j;i++,j--)語句;

在for語句中,表達式1、表達式3都可以有一項或多項,如本例中,表達式1同時為i和j賦初值,表達式3同時改變i和j的值。當有不止一項時,各項之間用逗號“,”分隔。

2020/11/2446循環結構小結同一個問題,往往既可以用while語句解決,也可以用do-while或者for語句來解決,但在實際應用中,應根據具體情況來選用不同的循環語句。選用的一般原則是:

1、如果循環次數在執行循環體之前就已確定,一般用for語句。如果循環次數是由循環體的執行情況確定的,一般用while語句或者do-while語句;

2、當循環體至少執行一次時,用do-while語句,反之,如果循環體可能一次也不執行,則選用while語句。2020/11/2447循環結構程序設計循環的概念用while語句和do-while語句實現循環用for語句實現循環循環的嵌套break語句和continue語句幾種循環的比較程序舉例2020/11/24循環的嵌套一個循環體內又包含另一個完整的循環結構,稱為循環的嵌套。內嵌的循環中還可以嵌套循環,這就是多重循環。循環1循環22020/11/2449for(){…

while()

{…}

}Do{

for()

{…}

}while()while(){

for(){…}

…}for(){

for(){…}

}以下四種均為合法的嵌套循環結構2020/11/2450注意:三種循環語句for、while、do-while可以互相嵌套自由組合。但要注意的是,各循環必須完整,相互之間絕不允許交叉。如下面這種形式是不允許的:

do

{

......for(;;)

{

......

}while();}2020/11/245198765432198765432181726354453627189645648403224168494235282114736302418126252015105161284963421例7.打印乘法“九九表”2020/11/2452分析:定義變量i,j,m;i表示行,從1變化到9;j表示列,從1變化到9;m=i*j;表示表中的值;i取初值1;j從1變化到i;計算出每一個m=i*j,輸出m,但不換行。輸出換行;

i做一次變化,如果i≤9,則,轉回步驟6;否則循環結束。2020/11/24532020/11/2454#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;}2020/11/2455循環結構程序設計循環的概念用while語句和do-while語句實現循環用for語句實現循環循環的嵌套break語句和continue語句幾種循環的比較程序舉例2020/11/24break語句:用于循環語句和switch語句中,作用是

跳出它所在的循環語句或switch語句。格式:while(條件1){…;if(條件2)break;……}執行過程:每次執行到if語句時,計算條件2的值;如果條件2的值非零,則跳出循環語句;否則,執行if語句的下一條語句。2020/11/2457例7.一球從100米高度自由落下,每次落地后反彈回原高度的一半,再落下。求它在第10次落地時共經過多少米?第10次反彈多高?

floath=100.0,sum=0.0;

intn;

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

sum+=h;

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

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

sum+=h;

}

printf

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論