第4章循環(huán)結(jié)構(gòu)設(shè)計(jì)(第7次課).ppt_第1頁
第4章循環(huán)結(jié)構(gòu)設(shè)計(jì)(第7次課).ppt_第2頁
第4章循環(huán)結(jié)構(gòu)設(shè)計(jì)(第7次課).ppt_第3頁
第4章循環(huán)結(jié)構(gòu)設(shè)計(jì)(第7次課).ppt_第4頁
第4章循環(huán)結(jié)構(gòu)設(shè)計(jì)(第7次課).ppt_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第4章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì),2020/7/6,2,C語言中提供三種類型的循環(huán)結(jié)構(gòu).分別是: while() 當(dāng)循環(huán)結(jié)構(gòu) do- while();直到型循環(huán)結(jié)構(gòu) for( ;) 次數(shù)循環(huán)結(jié)構(gòu),2020/7/6,3,3.3.1 當(dāng)循環(huán)結(jié)構(gòu) while語句 格式:while(表達(dá)式) 語句; 功能: 計(jì)算表達(dá)式值,其值若為真(非0)則反復(fù)執(zhí)行語句,直到表達(dá)式的值為假時為止。,2020/7/6,4,說明: (1)表達(dá)式用來描述循環(huán)條件的,可以是任何類型,常用的是關(guān)系型或邏輯型表達(dá)式。 (2)重復(fù)執(zhí)行的操作稱為“循環(huán)體”,在格式中表示為語句,它可以是任何一條或復(fù)合語句。 (3)在循環(huán)體中可以包含“循環(huán)語句

2、”,這種程序結(jié)構(gòu)稱為循環(huán)嵌套,也稱為多重循環(huán)。 (4)while循環(huán)執(zhí)行原則是“先判斷,后執(zhí)行”。即當(dāng)表達(dá)式條件滿足時執(zhí)行循環(huán)體,條件不滿足時結(jié)束循環(huán)轉(zhuǎn)去執(zhí)行循環(huán)語句后的下一條語句。,2020/7/6,5,結(jié)束循環(huán),2020/7/6,6,【例3.11】 第一行輸出數(shù)字0,1,2,3,4,并要求每個數(shù)字間隔4個字符位,第二行輸出“We are out of the loop.”。#include main() int i=0; while(i5) printf(%d ,i+); printf(“nWe are out of the loop.n); ,0 1 2 3 4 We are out o

3、f the loop.,2020/7/6,7,分析:(1)設(shè)加數(shù)為i ; i是從1(初值)開始到100(終值)結(jié)束; 變化規(guī)律(步長值)為i=i+1(i+); 變量 i滿足了三個基本條件,即: 有一個明確的初值 明確的終值 明確的步長值 則變量i 可以作為循環(huán)控制變量(2)設(shè)累加和用sum表示; 初值為0 sum 隨加數(shù) i 而變化執(zhí)行sum=sum+i 并由此語句與i=i+1構(gòu)成了循環(huán)體。,【例3.12】 求s=1+2+3100,2020/7/6,8,#include main() int i=1,sum=0; while(i101) sum=sum+i; i+; printf(%dn,su

4、m); ,2020/7/6,9,【例】 求任意10個實(shí)數(shù)的代數(shù)和。,10個數(shù)據(jù)通過鍵盤逐個輸入,其執(zhí)行語句是: scanf(%f,x); (2) 每當(dāng)輸入1 個x后執(zhí)行: sum=sum+x (3) 設(shè) i 為循環(huán)控制變量, 只控制循環(huán)的次數(shù)而不參加運(yùn)算 i 的初值 為1, 終值為10, i 的步長值是i+,注意:鍵盤給值的格式,2020/7/6,10,#include main() int i=0; float x,sum=0; while(i10) scanf(%f, ,2020/7/6,11,3.3.2 直到循環(huán)結(jié)構(gòu) do-while語句,do 語句;(循環(huán)體) while(表達(dá)式);

5、功能: 先執(zhí)行循環(huán)體,然后計(jì)算表達(dá)式值,其值若為真(非0)則繼續(xù)執(zhí)行循環(huán)體,直到表達(dá)式為假時為止。,2020/7/6,12,2020/7/6,13,#include main() int i=1,sum=0; do sum=sum+i; i+; while(i=100); printf(%dn,sum);,【例3.13】用do-while循環(huán)改寫例3.12,2020/7/6,14,練習(xí),以下程序的運(yùn)行結(jié)果是( )。 #include main() int y=10; do y- -; while(- -y); printf(%dn,y- -); A. 1 B. 2 C. -1D. 0,2020

6、/7/6,15,【例3.14】while和do-while循環(huán)的比較,(1) main() (2) main() int i,sum=0; int i,sum=0; scanf(%d, printf(“sum=%d”,sum); printf(sum=%d,sum); ,2020/7/6,16,練習(xí),在c語言中while循環(huán)和do-while循環(huán)的主要區(qū)別是 ( )。 A. do-while循環(huán)體內(nèi)可以使用break語句,while循環(huán)體內(nèi)不能使用break語句 B. do-while的循環(huán)體至少無條件執(zhí)行一次,while的循環(huán)體不是 C. do-while循環(huán)體內(nèi)可以使用continue語句

7、,while循環(huán)體內(nèi)不能使用continue語句 D. while的循環(huán)體至少無條件執(zhí)行一次,do-while的循環(huán)體不是,2020/7/6,17,3.3.3 次數(shù)循環(huán)結(jié)構(gòu) for語句 格式:for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 語句; 功能: 根據(jù)循環(huán)控制變量的初值、終值和步長值,重復(fù)執(zhí)行循環(huán)體。 流程圖如 while 循環(huán).,2020/7/6,18,【例3.15】將例3.15改用for語句書寫。 #include main() int i,sum=0; for(i=1;i=100;i+) sum+=i; printf(sum=%d,i=%dn,sum,i); ,2020/7/6,19,說

8、明: (1)for語句中的表達(dá)式,分別對應(yīng)著循環(huán)控制中的三個基本組成部分,即: 表達(dá)式1:循環(huán)控制變量的初始化(只執(zhí)行1次),允許是逗號表達(dá)式。 表達(dá)式2:循環(huán)判斷條件,是循環(huán)的入口,若條件滿足則執(zhí)行循環(huán)體,否則結(jié)束循環(huán)。 表達(dá)式3:改變循環(huán)控制變量操作(循環(huán)控制變量的增量),執(zhí)行完循環(huán)體后,執(zhí)行該語句;執(zhí)行完畢,轉(zhuǎn)去執(zhí)行表達(dá)式2。,2020/7/6,20,(2)循環(huán)體由“語句”部分來描述,和其它循環(huán)一樣。它也可以是一條語句、空語句或復(fù)合語句。 (3)for循環(huán)語句的表達(dá)式1 和表達(dá)式3 都可以是逗號表達(dá)式。表達(dá)式3也可以出現(xiàn)在循環(huán)體中。如for(x=1;x10;) sum=sum+x;x+;

9、。循環(huán)控制變量增量在循環(huán)體內(nèi)完成,但格式中的“;”不能丟。 (4)for(;x100;x+=10) 其中x的初值在for語句前完成,但格式中的“;”不能丟。,2020/7/6,21,例題 1. 求:sum=5+10+100 for(i=5;i=100;i+=5) 2. 求:sum=0.1+0.2+1.0 for(i=0.1;i=1.0;i+=0.1),2020/7/6,22,練習(xí),1、 void main() int i; for(i=0; i3; i+) switch(i) case 1: printf(%d, i); case 2: printf(%d, i); default : pri

10、ntf(%d, i); 執(zhí)行后輸出結(jié)果是( )。 A. 011122 B. 01222 C. 012020 D. 120,2020/7/6,23,2、 以下程序段執(zhí)行后變量sum的值( )。 int i,j=1,sum=0; for(i=1;i=3;i+) sum+=j; j+; A. 5 B. 3C. 6D. 4,2020/7/6,24,三種循環(huán)語句的比較 1for 語句與while語句執(zhí)行過程相同,但for語句簡潔、清晰,它將初始條件、判斷條件和循環(huán)變量的在一行書寫,顯得直觀、明了。 2while 和do-while語句的循環(huán)控制變量初始化是在循環(huán)語句之前完成,而for語句循環(huán)變量的初始化

11、是在for中(表達(dá)式1)中,也可以在for語句前實(shí)現(xiàn)。 如:x=1; 3for語句和while語句是判斷條件后執(zhí)行循環(huán)體;而do-while是先執(zhí)行循環(huán)體后判斷條件,無論條件是否滿足都要執(zhí)行一次循環(huán)體。,2020/7/6,25,3.4.4 循環(huán)嵌套與多重循環(huán),在一個循環(huán)的循環(huán)體內(nèi)又包含另一個循環(huán),稱為循環(huán)嵌套。兩層循環(huán)嵌套結(jié)構(gòu)稱為雙層循環(huán);兩層以上的嵌套結(jié)構(gòu),則稱為多重循環(huán)。,2020/7/6,26,例如,【例】求5學(xué)生的3門課程的平均成績,2020/7/6,27,#include main() int i,j; float x,sum=0; for(i=1;i=5;i+) sum=0; fo

12、r(j=1;j=3;j+) scanf(%f, ,2020/7/6,28,問題 內(nèi)循環(huán)執(zhí)行次數(shù),外循環(huán)執(zhí)行次數(shù)?,2020/7/6,29,3.4 break語句和continue語句,3.4.1 break語句 格式:break; 功能:強(qiáng)制中斷當(dāng)前的循環(huán), 不再執(zhí)后面的循環(huán)語句而退出循環(huán)(結(jié)束循環(huán))。,2020/7/6,30,例3計(jì)算半徑r=1到10時的面積,直到面積大于100為止 #include #define PI 3.1415926 main() int r; float area; for(r=1;r100) break; printf(area=%f,area); ,2020/7

13、/6,31,【例3.18】從鍵盤上輸入若干個字符,以回車換行符作為結(jié)束(稱為終止標(biāo)志),統(tǒng)計(jì)有效字符個數(shù)。,2020/7/6,32,練習(xí),在循環(huán)語句的循環(huán)體中,break語句的作用是 ( )。 A. 暫停程序的運(yùn)行 B. 結(jié)束本次循環(huán) C. 繼續(xù)執(zhí)行break語句之后的循環(huán)體各語句 D. 提前結(jié)束循環(huán),接著執(zhí)行該循環(huán)后續(xù)的語句,2020/7/6,33,3.4.2 continue 語句 格式:continue; 功能:continue語句的作用是跳過循環(huán)體中剩余的語句而轉(zhuǎn)移到執(zhí)行下一次循環(huán)。 說明: (1)continue語句只用在for、while、do-while等循環(huán)體中, 通常與if條

14、件語句一起使用, 用來加速循環(huán)。 (2)循環(huán)體中單獨(dú)使用continue 語句無意義。,2020/7/6,34,2020/7/6,35,【例3.19】輸出找出100到200之間能被3整除的自然數(shù),#include main() int n; for(n=100;n=200;n+) if(n%3!=0) continue; printf(%d, ,n); ,2020/7/6,36,Break與continue 練習(xí),1、以下程序段運(yùn)行后變量n的值為( )。 int i=1,n=1; for (;i3;i+) continue;n=n+i; A. 4 B. 3 C. 2 D. 1,2020/7/6

15、,37,2、以下程序的運(yùn)行結(jié)果是( )。 main() int s = 0, i = 0; while(i 8) i+; if(i%2=0) continue; s+=i; printf(%dn,s); A. 36 B. 7 C. 16 D. 12,2020/7/6,38,3、若x、y是int型變量,則執(zhí)行以下語句后x 的值是。 for(y=1,x=1;y=10) break; if(x%2=1) x+=5;continue; x-=3; A1 B6 C7 D10,2020/7/6,39,4. 以下程序是輸出100以內(nèi)能被3整除并且個位數(shù)為6的所有整數(shù),請?zhí)羁铡?main() int j,i;

16、 for(i=0; i=9;i+) j=i*10+6; if( ) continue; printf(“%d ”,j); ,2020/7/6,40,5、分析程序運(yùn)行結(jié)果: main() int i, s=0; for(i=1; i5) break; printf(s=%dn, s); ,2020/7/6,41,循環(huán)結(jié)構(gòu) 練習(xí),2020/7/6,42,1.下面程序段 int k=2; while (k=0) printf(“%d”,k); k-; 則下面描述中正確的是 。 A)while循環(huán)執(zhí)行10次 B)循環(huán)是無限循環(huán) C)循環(huán)題語句一次也不執(zhí)行 D)循環(huán)體語句執(zhí)行一次,一選擇題,2020/7

17、/6,43,2.以下for循環(huán)的執(zhí)行次數(shù)是 。 for (x=0,y=0; (y=123) A)無限循環(huán) B)循環(huán)次數(shù)不定 C)4次 D)3次,2020/7/6,44,3.以下程序段的循環(huán)次數(shù)是 。 for (i=2; i=0; ) printf(“%d”,i-) ; A)無限次 B)0次 C)1次 D)2次,2020/7/6,45,4.下面程序段的運(yùn)行結(jié)果是 。 x=y=0; while (x15) y+,x+=+y ; printf(“%d,%d”,y,x); A)20,7 B)6,12 C)20,8 D)8,20,2020/7/6,46,5.下述程序段的運(yùn)行結(jié)果是 。 int a=1,b

18、=2,c=3, t; while (abc) t=a; a=b; b=t; c-; printf(“%d,%d,%d”,a,b,c); A)1,2,0 B)2,1,0 C)1,2,1 D)2,1,1,2020/7/6,47,6、下述語句執(zhí)行后,變量k的值是 。 int k=1; while (k+10); A)10 B)11 C)9 D)無限循環(huán),值不定,2020/7/6,48,二、程序題,2020/7/6,49,【例 1】使 用公式/4=1-1/3+1/5-1/7+ ,求值。要求直到其最后一項(xiàng)的近似值的絕對值小于10-6為止。 #include #include main() int s=1; float n=1.0,t=1,pi=0; while(fabs(t

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論