




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、.,第六章,循環(huán)控制,.,主要內(nèi)容,6.1 概述 6.2 goto語句以及用goto語句構(gòu)成循環(huán) 6.3 用while語句實現(xiàn)循環(huán) 6.4 用do-while語句實現(xiàn)循環(huán) 6.5 用for 語句實現(xiàn)循環(huán) 6.6 循環(huán)的嵌套 6.7 幾種循環(huán)的比較 6.8 break語句continue和語句 6.9 程 序 舉 例,.,6.1 概述,什么是循環(huán)? 為什么要使用循環(huán)?,問題1:,問題2:求學(xué)生平均成績,.,循環(huán),.,生活中的例子: 擊鼓傳花:大家坐成一個圈,鼓聲響起的時候?qū)⒒ㄊ樞蚪坏较乱粋€人的手里,依次向下傳遞,當(dāng)鼓聲突然中斷時停止傳花,花束落在誰的手里便成為輸家 4100米接力賽跑:第1個人
2、跑完100米后將接力棒傳給第2個人,第2個人再跑100米,然后是第3個人,直到第4個人跑完最后一個100米 共同點: 都要完成相同的任務(wù):量變的重復(fù)內(nèi)容 都有結(jié)束條件:發(fā)生質(zhì)變的界限,.,6.2 goto語句以及用goto語句構(gòu)成循環(huán),goto語句無條件轉(zhuǎn)向語句 goto 語句標(biāo)號; 語句標(biāo)號用標(biāo)識符表示, 例如:goto label_1; 合法; goto 123; 不合法.,.,【例6.1】 用goto語句和if語句構(gòu)成循環(huán), 計算sum=1+2+3+100 。 main() int i,sum=0; i=1; loop: if(i=100) sum=sum+i; i+; goto loo
3、p; printf(%dn,sum); ,.,6.2 goto語句以及用goto語句構(gòu)成循環(huán),濫用goto語句將使程序流程無規(guī)律、可讀性差. 不建議使用goto語句。 一般來說,可以有兩種用途: (1) 與if語句一起構(gòu)成循環(huán)結(jié)構(gòu); (2) 從循環(huán)體中跳轉(zhuǎn)到循環(huán)體外。,.,6.3 用while語句實現(xiàn)循環(huán),while語句用來實現(xiàn)“當(dāng)型”循環(huán)結(jié)構(gòu)。 一般形式: while (表達式) 語句 執(zhí)行過程:計算表達式值,若該值為非0時,則執(zhí)行while語句中的內(nèi)嵌語句。然后重復(fù)上述步驟,直到表達式值為假(為0),則執(zhí)行while語句的下一條語句。 其特點是:先判斷表達式,后執(zhí)行語句。,循環(huán)體語句,.,
4、6.3 用while語句實現(xiàn)循環(huán),注意: 循環(huán)體如果包含一個以上的語句,應(yīng)該用花括弧括起來,以復(fù)合語句形式出現(xiàn)。 在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語句。,.,1. 計算sum=1+2+3+100,.,第5章 循環(huán)程序設(shè)計,1. 計算sum=1+2+3+100,循環(huán)體,循環(huán)控制條件,循環(huán)控制變量,循環(huán)的初始化,#include void main( ) int i=1, sum=0 ; while ( i = 100 ) sum = sum + i ; i+ ; printf ( “Sum = %d n”, sum ) ; ,.,第5章 循環(huán)程序設(shè)計,2. 計算sum=2+4+6+100,循環(huán)體
5、,循環(huán)控制條件,循環(huán)控制變量,循環(huán)的初始化,#include void main( ) int i=2, sum=0 ; while ( i = 100 ) sum = sum + i ; i+=2 ; printf ( “Sum = %d n”, sum ) ; ,.,2. 計算sum=2+4+6+100,循環(huán)體,循環(huán)控制條件,循環(huán)控制變量,循環(huán)的初始化,#include void main( ) int i=2, sum=0 ; while ( i = 100 ) sum = sum + i ; i+=2 ; printf ( “Sum = %d n”, sum ) ; ,.,6.4 do
6、-while語句,do-while語句的特點: 先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立。 一般形式: do 循環(huán)體語句 while (表達式);,執(zhí)行過程:先執(zhí)行一次指定的循環(huán)體語句,然后判別表達式,當(dāng)表達式的值為非零(“真”) 時,返回重新執(zhí)行循環(huán)體語句,如此反復(fù),直到表達式的值等于0為止,此時循環(huán)結(jié)束。,.,6.4 用do-while語句實現(xiàn)循環(huán),while語句和用do-while語句的比較: 二者是完全等價的。 do-while語句有可能一次也不執(zhí)行循環(huán)體。,.,循環(huán)的變化:sum=1+2+3+100,#include void main( ) int i=1, sum=0 ; whil
7、e ( i= 100 ) sum = sum + i; i+ ; printf ( “Sum = %d n”, sum ) ; ,#include void main( ) int i=1, sum=0 ; do sum = sum + i ; i+; while ( i= 100 ); printf ( “Sum = %d n”, sum ) ; ,.,順序打印1-10的階乘,即1!, 2!, , 10!,本題的關(guān)鍵是求階乘 數(shù)學(xué)上,n!=123(n-1)n,.,外循環(huán),內(nèi)循環(huán),對比程序:(更優(yōu)) #include void main( ) int i=1; float f = 1; whi
8、le( i = 10 ) f = f * i; printf( %2d! = %.0f n, i, f ); i + ; 思考一下:8-10的階乘,#include void main( ) int i=1, j ; float f ; while( i = 10 ) j = 1; f = 1; while( j = i ) f = f * j; j + ; printf( “ %2d! = %.0f n”, i, f ); i + ; ,.,6.5 用for 語句實現(xiàn)循環(huán),一般形式: for(表達式1;表達式2;表達式3) 語句,表達式1:初始化表達式,只執(zhí)行一次 表達式2:循環(huán)控制表達式,
9、控制循環(huán)的結(jié)束 表達式3:增量表達式 ,使表達式2趨向于假,.,6.5 用for 語句實現(xiàn)循環(huán),for語句的執(zhí)行過程: (1) 先求解表達式1。 (2) 求解表達式2,若其值為真(非0),則執(zhí)行for語句中指定的內(nèi)嵌語句,然后執(zhí)行下面第(3)步。若為假(值為0),則結(jié)束循環(huán)轉(zhuǎn)到第(5)步。 (3) 求解表達式3。 (4) 轉(zhuǎn)回上面第(2)步驟繼續(xù)執(zhí)行。 (5) 循環(huán)結(jié)束,執(zhí)行for語句下面的一個語句,.,任意輸入10個數(shù),求平均值,#include void main( ) int i ; float x, sum=0 ; printf( Enter 10 numbers one by one
10、: n ); for( i =1 ; i=10 ; i+) scanf( %f, ,.,例:順序打印1-10的階乘,即1!, 2!, 3!, , 10!,#include void main( ) int i, j ; float f ; for( i=1; i = 10 ; i+ ) f = 1; for( j=1; j = i ; j+ ) f = f * j; printf( %2d! = %.0f n, i, f ); ,#include void main( ) int i=1, j ; float f ; while( i = 10 ) j = 1; f = 1; while( j
11、 = i ) f = f * j; j + ; printf( “ %2d! = %.0f n”, i, f ); i + ; ,.,例:打印幾何圖形,對于這類問題,每行中星號的個數(shù)、總行數(shù)等都應(yīng)該用循環(huán)結(jié)構(gòu)進行控制,而不是直接輸出若干行字符串,#include void main( ) int i, j ; for(i=1; i = 4; i+ ) for( j = 0; ji ; j+ ) putchar( ); for( j = 1; j=4 ; j+ ) putchar(*); putchar(n); ,.,for語句的變化形式,可以省略for語句的“表達式1”或“表達式3”,也可以都
12、省略(“退化為”while語句),例:將用鍵盤輸入的若干字符順序輸出到屏幕上,#include void main( ) char ch ; for( ; (ch=getchar( ) ) !=n ; ) putchar( ch ) ; ,.,6.6 循環(huán)的嵌套,一個循環(huán)體內(nèi)又包含另一個完整的循環(huán)結(jié)構(gòu) 稱為循環(huán)的嵌套。內(nèi)嵌的循環(huán)中還可以嵌套 循環(huán),這就是多層循環(huán)。 三種循環(huán)(while循環(huán)、do-while循環(huán)和for循 環(huán))可以互相嵌套。,.,6.6 循環(huán)的嵌套,下面幾種都是合法的形式: (1) while( ) (2) do (3) for(;) while( ) do for(;) wh
13、ile( ); while( );,.,6.6 循環(huán)的嵌套,(4) while( ) (5) for(;) (6) do do while( ) for(;) while( ) while( ),.,錯誤的嵌 套形式,循環(huán)必須是完整的,不允許內(nèi)外循環(huán)交叉嵌套 f = 1; while( i 10) i=1; do f = f * i; i +; while( i10 );,混亂的控 制條件,內(nèi)外循環(huán)的循環(huán)控制條件通常是分開的,相對獨立的 i=1; s=0; while ( i 3 ) s = s + f; i = 1; f=1; while( i5) i +=2; f = f * i; i+
14、; ,.,6.7 幾種循環(huán)的比較,(1)四種循環(huán)都可以用來處理同一問題,一般情況下它們可以互相代替。但一般不提倡用goto型循環(huán)。 (2)在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等)。,.,6.7 幾種循環(huán)的比較,for循環(huán)可以在表達式3中包含使循環(huán)趨于結(jié)束的操作,甚至可以將循環(huán)體中的操作全部放到表達式3中。因此for語句的功能更強,凡用while循環(huán)能完成的,用for循環(huán)都能實現(xiàn)。 (3)用while和do-while循環(huán)時,循環(huán)變量初始化的操作應(yīng)在while和do-
15、while語句之前完成。而for語句可以在表達式1中實現(xiàn)循環(huán)變量的初始化。,.,6.7 幾種循環(huán)的比較,(4)while循環(huán)、do-while循環(huán)和for循環(huán),可以用break語句跳出循環(huán),用continue語句結(jié)束本次循環(huán)(break語句和continue語句見下節(jié))。而對用goto語句和if語句構(gòu)成的循環(huán),不能用 break語句和continue語句進行控制。,.,6.8 break語句和continue語句,6.8.1 break語句 break語句可以用來從循環(huán)體內(nèi)跳出循環(huán)體,即提前結(jié)束循環(huán),接著執(zhí)行循環(huán)下面的語句 一般形式: break; 注意:break語句不能用于循環(huán)語句和swi
16、tch語句之外的任何其他語句中。,.,6.8 break語句和continue語句,例:計算r=1到r=10時的圓面積,直到面積area大于100為止。 float pi=3.14159; for( ) area=pi*r*r; printf(r=%f,area=%fn,r,area); ,當(dāng)area100時,執(zhí)行break語句,提前結(jié)束循環(huán),即不再繼續(xù)執(zhí)行其余的幾次循環(huán)。,r=1;r=10;r+,r=1;r=10;r+,if(area100) break;,.,6.8 break語句和continue語句,6.8.2 continue語句 作用為結(jié)束本次循環(huán),即跳過循環(huán)體中下面尚未執(zhí)行的語句
17、,接著進行下一次是否執(zhí)行循環(huán)的判定. 一般形式: continue;,.,6.8 break語句和continue語句,continue語句和break語句的區(qū)別 continue語句只結(jié)束本次循環(huán),而不是終止整個循環(huán)的執(zhí)行。,while(表達式1) for if(表達式2) continue; ,.,6.8 break語句和continue語句,continue和break的區(qū)別 break語句則是結(jié)束整個循環(huán)過程,不再判斷執(zhí)行循環(huán)的條件是否成立。,while(表達式1) for if(表達式2) break; ,.,6.9 程序舉例,例6.6用/41-1/3+1/5-1/7+公式求的近似值
18、,直到某一項的絕對值小于為止。 N-S圖表示算法,.,fabs(t ()=1e-6,float s=1.0,pi=0; int s=1,n=1; while( ) pi+=t; n+=2; s=-s; t=s/n; pi*=4;,.,6.9 程序舉例,例6.7 求Fibonacci數(shù)列前40個數(shù)。這個數(shù)列有如下特點:第1,2兩個數(shù)為1,1。從第3個數(shù)開始,該數(shù)是其前面兩個數(shù)之和。即: F(1)=1 (n=1) F(2)=1 (n=2) F(n)=F(n-1)+F(n-2) (n3) 算法如圖所示:,.,6.9 程序舉例,例6.8 判斷m是否素數(shù)。 算法思想:讓m被2到除,如果m能被2之中任何一個整數(shù)整除,則提前結(jié)束循環(huán),此時i必然小于或等于k(即);如果m不能被2k(即)之間的任一整數(shù)整除,則在完成最后一次循環(huán)后,i還要加1,因此i=k+1,然后才終止循環(huán)。在循環(huán)之后判別i的值是否大于或等于k+1,若是,則表明未曾被2k之間任一整數(shù)整除過,因此輸出“是素數(shù)”。,.,.,float k; int m,i=2; scanf(“%d”, ,k=sqrt(m);,if (m%i=0) break;,ik+1,.,6.9 程序舉例,例6.10 譯密碼。為使電文保密,往往按一定規(guī)律將其轉(zhuǎn)換成密碼,收報人再按約定的規(guī)律將其譯回原文。 思路:可以按以下規(guī)律將電文變成
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024德州學(xué)院輔導(dǎo)員招聘筆試真題
- 2024成都藝術(shù)職業(yè)大學(xué)輔導(dǎo)員招聘筆試真題
- 法律科技系統(tǒng)運維員考試試卷及答案
- 潛水裝備檢測師筆試試題及答案
- 旅游文創(chuàng)設(shè)計師筆試試題及答案
- 鍛造車間設(shè)備點檢員考試試卷及答案
- 2024年杭州拱墅區(qū)武林街道招聘真題
- 指向培養(yǎng)學(xué)生高階思維的小學(xué)英語學(xué)習(xí)單設(shè)計的案例研究
- 大單元教學(xué):為語文教學(xué)添色增香
- 培養(yǎng)學(xué)生課堂感受力的實踐與探索
- 山東畜牧獸醫(yī)單招考試題及答案
- 商戶安全生產(chǎn)培訓(xùn)課件
- 2025年西安高新區(qū)管委會招聘考試試卷
- 四川省廣元市2024-2025學(xué)年第二學(xué)期八年級期末考試數(shù)學(xué)試卷(無答案)
- 2024-2025學(xué)年成都市青羊區(qū)七年級下英語期末考試題(含答案)
- 死亡病例討論制度落實與質(zhì)控優(yōu)化
- 痛經(jīng)的中醫(yī)護理
- 2018-2024年中國西瓜行業(yè)市場趨勢分析及投資潛力研究報告
- DB32∕T 5048-2025 全域土地綜合整治項目驗收規(guī)范
- 2025屆河北中考道德與法治真題試卷【含答案】
- 《產(chǎn)科危急重癥早期識別中國專家共識(2024年版)》解讀課件
評論
0/150
提交評論