




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第六章 循環(huán)結(jié)構(gòu)程序設(shè)計第六章第六章 循環(huán)構(gòu)造程序設(shè)計循環(huán)構(gòu)造程序設(shè)計6.1 while語句語句6.2 do-while語句語句6.3 for語句語句6.4 多重循環(huán)多重循環(huán)6.5 continue和和break語句語句6.6 練習練習6.7 程序設(shè)計舉例程序設(shè)計舉例6.8 作業(yè)和實驗作業(yè)和實驗第六章 循環(huán)結(jié)構(gòu)程序設(shè)計6.1 while語句語句1. 方式:while(表達式) 循環(huán)體2. 執(zhí)行過程:先判別,后執(zhí)行。 循環(huán)體表達式非非0 00 0第六章 循環(huán)結(jié)構(gòu)程序設(shè)計例1 用while語句求1+2+3+99+100的值。main( )int sum=0, i=1; while(i=100) s
2、um=sum+i; i+; printf(“%dn,sum);sum=0i=1當i=100sum=sum+ii=i+1輸出sum的值第六章 循環(huán)結(jié)構(gòu)程序設(shè)計3. 闡明1while語句是先判別, 后執(zhí)行。 假設(shè)循環(huán)條件一開場就不成立條件表達式為假, 那么循環(huán)一次都不執(zhí)行。2while循環(huán)中的表達式普通是關(guān)系表達式或邏輯表達式,但也可以是數(shù)值表達式或字符表達式,只需其值非零,就可執(zhí)行循環(huán)體。 3循環(huán)體為多條語句時, 必需采用復合語句,要加上一對花括號。 4循環(huán)體中必需有改動循環(huán)條件的語句, 否那么循環(huán)不能終止, 構(gòu)成死循環(huán)。 第六章 循環(huán)結(jié)構(gòu)程序設(shè)計#includemain( )int m=0;
3、char ch; ch=getchar( ); while(ch!=n) m+; ch=getchar( ); printf(“%d, m);ch=getchar( )m=0當ch!=nm=m+1ch=getchar( )輸出m的值#includemain( )int m=0; char ch; while( (ch=getchar( ) )!=n) m+; printf(“%d, m);例2 從鍵盤延續(xù)輸入字符,直到輸入回車為止, 統(tǒng)計輸入的字符個數(shù)。第六章 循環(huán)結(jié)構(gòu)程序設(shè)計6.2 do-while語句語句1. 方式:do 循環(huán)體 while(表達式) ; 2. 執(zhí)行過程:先執(zhí)行,后判別。到
4、此do-while語句終了循環(huán)體真假表達式第六章 循環(huán)結(jié)構(gòu)程序設(shè)計例3 用do-while語句求1+2+3+99+100的值。main( )int sum=0, i=1; do sum=sum+i; i+; while(i100sum=sum+ii=i+1輸出sum的值第六章 循環(huán)結(jié)構(gòu)程序設(shè)計3. 闡明1do-while語句是先執(zhí)行, 后判別。假設(shè)循環(huán)的條件一開場就不成立, 循環(huán)也將執(zhí)行一次。2do-while循環(huán)中的表達式普通也是關(guān)系表達式或邏輯表達式,但也可以是數(shù)值表達式或字符表達式,只需其值非零,就可執(zhí)行循環(huán)體。 3循環(huán)體為多條語句時必需采用復合語句。 4與while語句一樣, 循環(huán)體中
5、同樣必需有改動循環(huán)條件的語句, 否那么循環(huán)不能終止,將構(gòu)成死循環(huán)。 5對于同一個問題,while循環(huán)與do-while循環(huán)的條件表達式是完全一樣的。第六章 循環(huán)結(jié)構(gòu)程序設(shè)計#includemain( )int m=0; char ch; ch=getchar( ); do m+; ch=getchar( ); while(ch!=n); printf(“%d, m);ch=getchar( )m=0直到ch= =nm=m+1ch=getchar( )輸出m的值例4 從鍵盤延續(xù)輸入字符,直到輸入回車為止, 統(tǒng)計輸入的字符個數(shù)。第六章 循環(huán)結(jié)構(gòu)程序設(shè)計6.3 for語句語句1. 方式: for(
6、表達式1 ; 表達式2 ; 表達式3) 循環(huán)體2. 執(zhí)行過程:先判別,后執(zhí)行。e2假真求解e1循環(huán)體求解e3循環(huán)變量賦初值循環(huán)條件循環(huán)變量增值第六章 循環(huán)結(jié)構(gòu)程序設(shè)計例 for(a=1; a=3; a+) printf(“%d, a);執(zhí)行步驟:執(zhí)行a=1,a值為1。判別a=3,成立,輸出1。執(zhí)行a+,a值為2。判別a=3,成立,輸出2。執(zhí)行a+,a值為3。判別a=3,成立,輸出3。執(zhí)行a+,a值為4。判別a=3,不成立,循環(huán)終了。第六章 循環(huán)結(jié)構(gòu)程序設(shè)計例5 用for語句求1+2+3+99+100的值。main( )int sum=0, i; for(i=1; i=100; i+) sum=
7、sum+i; printf(“%dn,sum);sum=0for i=1 to 100sum=sum+i輸出sum的值第六章 循環(huán)結(jié)構(gòu)程序設(shè)計3. 闡明1for語句是先判別,后執(zhí)行。假設(shè)循環(huán)條件一開場就不成立,那么循環(huán)一次都不執(zhí)行。2for語句的運用很靈敏,方式多樣化。 3循環(huán)體為多條語句時, 必需采用復合語句,要加上一對花括號。 4循環(huán)變量的增值并不受限于1,可以為正,也可為負。但必需使循環(huán)變量的值發(fā)生改動,使循環(huán)條件能趨向假,否那么會呵斥死循環(huán)。第六章 循環(huán)結(jié)構(gòu)程序設(shè)計4. for語句的靈敏運用1for語句中的初始化表達式和增值表達式也常為逗號表達式。如:for(sum=0, i=1; i
8、=100; i+) sum=sum+i;又如:for(a=0, b=8; ab; a+, b-) x=a+b;2for語句中的初始化表達式和增值表達式可以省略,但兩個分號不能省略。此時,for語句與while語句完全等價。第六章 循環(huán)結(jié)構(gòu)程序設(shè)計例5可改寫成如下方式:main( )int i, sum=0; i=1; for( ; i=100 ; ) sum=sum+i; i+; printf(“%d, sum);第六章 循環(huán)結(jié)構(gòu)程序設(shè)計3循環(huán)條件不一定是循環(huán)變量和某個目的值的比較。例4可改用for語句來實現(xiàn):#includemain( )int m ; char ch; for(m=0; (
9、 ch=getchar( ) ) !=n ; m+ ) ; printf(“%d, m);比較:幾種循環(huán)可相互交換,其中for語句的功能最強,運用最靈敏。第六章 循環(huán)結(jié)構(gòu)程序設(shè)計goto語句無條件轉(zhuǎn)向語句語句無條件轉(zhuǎn)向語句1. 方式:方式:goto 標號標號;2. 功能:將程序流程無條件地轉(zhuǎn)移到標號所在的功能:將程序流程無條件地轉(zhuǎn)移到標號所在的那個語句開場執(zhí)行,與那個語句開場執(zhí)行,與if語句一同可構(gòu)成循環(huán)。語句一同可構(gòu)成循環(huán)。例例 用用goto求求1100之和。之和。 main( ) int i=1, sum=0; loop: if(i=100) sum=sum+i; i+; goto loo
10、p; printf(“%d, sum); 第六章 循環(huán)結(jié)構(gòu)程序設(shè)計6.4 多重循環(huán)多重循環(huán) 當一個循環(huán)體內(nèi)又包含另一個完好的循環(huán)構(gòu)造時,稱為多重循環(huán)或循環(huán)嵌套,其循環(huán)構(gòu)造可用上述三種循環(huán)語句的恣意一種。形如: sum=0; for(a=1;a=3;a+) for(b=1;b=3;b+) sum=sum+b; 內(nèi)外重循環(huán)的循環(huán)變量不同,b變化的速度比a快,賦值語句共執(zhí)行9次。第六章 循環(huán)結(jié)構(gòu)程序設(shè)計例6 求s=1+(1+2)+(1+2+3)+(1+2+3+100)的值。t=0for j=1 to it=t+js=0for i=1 to 100s=s+t輸出s的值求出第i個加項tmain( )in
11、t i, j, t; long s; for(s=0, i=1; i=100; i+) t=0; for(j=1; j=i; j+) t=t+j; s=s+t; printf(“s=%ldn, s);第六章 循環(huán)結(jié)構(gòu)程序設(shè)計例7 打印九九表每個數(shù)占4列。第六章 循環(huán)結(jié)構(gòu)程序設(shè)計S1:打印表頭S2:打印分隔線S3:打印表體1打印表頭 for(i=1; i=9; i+) printf(“%4d, i );2打印分隔線 for(i=1; i=36; i+) printf(“%c, - );3打印表體 for(i=1; i=9; i+) 打印第i行第六章 循環(huán)結(jié)構(gòu)程序設(shè)計進一步思索如何“打印第i行?f
12、or(j=1; j=9; j+) 打印第j個數(shù)“打印第j個數(shù)即在第i行的第j列上打印一個數(shù),大小為i*j,占4列,故可寫為: printf(“%4d, i*j);最后思索如何“換行?顯然不能在每個數(shù)字后面都換行,而應該在第九個數(shù)字后面換行。因此,換行的語句不應該放在第二重循環(huán)內(nèi),而應在第二重循環(huán)外,與第二重循環(huán)并列。第六章 循環(huán)結(jié)構(gòu)程序設(shè)計main( )int i, j; for(i=1; i=9; i+) /*打印表頭*/ printf(“%4d, i ); printf(“n); for(i=1; i=36; i+) /*打印分隔線*/ printf(“%c, - ); printf(“n
13、); for(i=1; i=9; i+) /*用雙重循環(huán)打印表體*/ for(j=1; j=9; j+) printf(“%4d, i*j); printf(“n); /*換行*/ 第六章 循環(huán)結(jié)構(gòu)程序設(shè)計6.5 continue和和break語句語句6.5.1 continue語句語句 1. 格式:格式:continue; 2. 功能:終止本次循環(huán)的執(zhí)行,即跳過當前功能:終止本次循環(huán)的執(zhí)行,即跳過當前這次循環(huán)中這次循環(huán)中continue語句后尚未執(zhí)行的語句而語句后尚未執(zhí)行的語句而立刻開場下一輪循環(huán)。對于立刻開場下一輪循環(huán)。對于while和和do-while來來講,這意味著立刻進展下一次循環(huán)條
14、件的判別;講,這意味著立刻進展下一次循環(huán)條件的判別;而對于而對于for語句來講,那么意味著立刻求解表達語句來講,那么意味著立刻求解表達式式3。 3. 闡明:闡明:continue語句往往與語句往往與if 語句聯(lián)用。語句聯(lián)用。第六章 循環(huán)結(jié)構(gòu)程序設(shè)計例 main( ) int n; for(n=1; n=20; n+) if(n%3= =0) continue; printf(“%d_, n); 功能:打印120之間不能被3整除的數(shù)。第六章 循環(huán)結(jié)構(gòu)程序設(shè)計6.5.2 break語句語句1. 格式:格式:break;2. 功能:跳出功能:跳出switch構(gòu)造,也可以跳出循環(huán)結(jié)果,構(gòu)造,也可以跳出
15、循環(huán)結(jié)果,提早終了一整個循環(huán),執(zhí)行循環(huán)構(gòu)造后面的語提早終了一整個循環(huán),執(zhí)行循環(huán)構(gòu)造后面的語句。句。3. 闡明:闡明:1 break語句只能用于語句只能用于switch構(gòu)造或循環(huán)構(gòu)造,構(gòu)造或循環(huán)構(gòu)造,且往往與且往往與if 語句聯(lián)用。語句聯(lián)用。2在循環(huán)語句嵌套運用的情況下,在循環(huán)語句嵌套運用的情況下, break語句語句只能跳出或終止它所在的循環(huán),而不能同只能跳出或終止它所在的循環(huán),而不能同時跳出或終止多層循環(huán)。時跳出或終止多層循環(huán)。第六章 循環(huán)結(jié)構(gòu)程序設(shè)計define PI 3.1415926 main( ) int r ; float area ; for (r=1; r100) break;
16、 printf(r: %d,area is: %fn, r, area); 功能:計算半徑為110的圓的面積,直到面積大于100為止。第六章 循環(huán)結(jié)構(gòu)程序設(shè)計6.6 練習練習1. 以下程序段的輸出結(jié)果是 。 x=3; do printf(“%d, x-); while(!x);A.321 B.3 C.21 D.2102. 下面程序的輸出結(jié)果為 。main( )int y=10; while( y- - ) ; printf(“y=%d, y);A.y=0 B.while構(gòu)成死循環(huán) C.y=1 D.y= -1BD第六章 循環(huán)結(jié)構(gòu)程序設(shè)計3. 以下程序的輸出結(jié)果是 。#includemain( )
17、int i; for(i=1; i5; i+) if(i%2) putchar(); putchar(#);A. # B. # C. # D. #C第六章 循環(huán)結(jié)構(gòu)程序設(shè)計4.下述for循環(huán)語句 。 int i, k; for(i=0, k= -1; k=1; i+, k+) printf(“*);A.判別循環(huán)終了的條件非法 B.是無限循環(huán)C.只循環(huán)一次 D.一次也不循環(huán)5. 執(zhí)行以下語句的結(jié)果為 。 for(i=0; i5; +i) if( i= =2) break; printf(“%d, i ); A.01 B.0134 C.01234 D.不打印BA第六章 循環(huán)結(jié)構(gòu)程序設(shè)計5. 假設(shè)x
18、,y為int型變量,以下語句結(jié)果為 。 for(x=1; x5; x=x+2) for(y=2; y5; y+) printf(“%2d, x*y); if(y= =5) printf(“n); _2_3_4_6_912第六章 循環(huán)結(jié)構(gòu)程序設(shè)計6.7 程序設(shè)計舉例程序設(shè)計舉例6.7.1 兩種根本算法兩種根本算法1. 窮舉法:對問題一切能夠出現(xiàn)的形狀一一測試,窮舉法:對問題一切能夠出現(xiàn)的形狀一一測試,直到找到解或?qū)⑷磕軌虻男螤疃紲y試過為止。直到找到解或?qū)⑷磕軌虻男螤疃紲y試過為止。2. 迭代法:用新值取代舊值,或由舊值遞推出新迭代法:用新值取代舊值,或由舊值遞推出新值。值。 主要思索:主要思索
19、: 初值:在循環(huán)體外給出初值:在循環(huán)體外給出 迭代公式:通常即為循環(huán)體迭代公式:通常即為循環(huán)體 迭代次數(shù):循環(huán)條件的設(shè)定迭代次數(shù):循環(huán)條件的設(shè)定第六章 循環(huán)結(jié)構(gòu)程序設(shè)計715131146.7.2 迭代法的運用迭代法的運用例例8 用用 公式求出公式求出的近似值,的近似值,直到直到最后一項的絕對值小于最后一項的絕對值小于10-6為止。為止。思索:思索: 迭代公式迭代公式 迭代次數(shù)迭代次數(shù) 初值初值第六章 循環(huán)結(jié)構(gòu)程序設(shè)計#includemain( )int s; float n, t, pi; t=1; pi=0; n=1; s=1; while( fabs(t) =1e-6 ) pi=pi+t;
20、 n=n+2; s= - s; t=s/n; pi=pi*4; printf(“pi=%.7fn, pi);t=1, pi=0, n=1, s=1當| t | = 10-6pi=pi+t輸出pi的值n=n+2s = - st=s/npi=pi*4 第六章 循環(huán)結(jié)構(gòu)程序設(shè)計例9 求Fibonacci數(shù)列的前40個數(shù)。 F1=1 (n=1)公式 F2=1 (n=2) Fn=Fn-1+Fn-2 (n=3)f1=1, f2=1for i=1 to 20f1=f1+f2輸出f1,f2的值f2=f2+f1main( )int i; long f1=1, f2=1; for( i=1; i=20; i+ )
21、 printf(“%12ld%12ld, f1, f2); f1=f1+f2; f2=f2+f1; if(i%2= =0) printf(“n); 第六章 循環(huán)結(jié)構(gòu)程序設(shè)計例10 求兩個正整數(shù)m和n的最大公約數(shù)和最小公倍數(shù)。最小公倍數(shù)=m*n/最大公約數(shù)最大公約數(shù)的求法:輾轉(zhuǎn)相除法。其算法可描畫為: 當n不為0時,進展輾轉(zhuǎn)操作: r=m%n; m=n; n=r;消去一樣的因子,直到n=0時,m的值即為所求的解。第六章 循環(huán)結(jié)構(gòu)程序設(shè)計6.7.3 窮舉法的運用窮舉法的運用例例11 判別判別n能否素數(shù)。能否素數(shù)。輸入nk=sqrt(n)n%m= =0breakm=m+1for m=2 to k 打
22、印“Yes打印“Nom=kYNYN#includemain( )int n, m, k; scanf(“%d, &n); k=sqrt(n); for(m=2; m=k; m+) if(n%m= =0) break; if(m=k) printf(“No!n); else printf(“Yes!n);第六章 循環(huán)結(jié)構(gòu)程序設(shè)計例12 求出100200之間的全部素數(shù)。k=sqrt(n)n%m= =0breakm=m+1for m=2 to k 打印“Yes打印“Nom=kYNYNfor n=100 to 200 #includemain( )int n, m, k; for(n=101; n200; n=n+2) k=sqrt(n); for(m=2; m=k; m+) if(n%m= =0) break; if(m=k) printf(“No!n); else printf(“Yes!n); 第六章 循環(huán)結(jié)構(gòu)程序設(shè)計例13 百錢買百雞。中提出了“百雞問題:雞翁一值錢五,雞母一值錢三,雞
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 快遞員工培訓課件
- 寵物養(yǎng)殖租賃合同范本
- 金屬橋架合同范本
- 小學生食品安全課件
- 高低壓配電工程施工承包合同
- 檢驗滅火器合同書
- 關(guān)于采購辦公用品的申請報告與審批流程說明
- 民族局離婚協(xié)議書
- 中學生課外閱讀指南觀后感
- 法律咨詢行業(yè)法律建議免責
- 礦山機械傷害安全培訓
- 2025貴州省黔東南州直屬事業(yè)單位招聘202人易考易錯模擬試題(共500題)試卷后附參考答案
- 鄭州2025年河南鄭州市公安機關(guān)招聘輔警1200人筆試歷年參考題庫附帶答案詳解
- 2025年語文高考復習計劃解析
- 新生兒腸道病毒感染
- 2025年度專業(yè)酒店裝修承攬合同
- 2025年度5G基站建設(shè)勞務合同范本
- 微電網(wǎng)運行與控制策略-深度研究
- (完整版)班主任量化考核細則
- 2024-2024年上海市高考英語試題及答案
- 《從零到卓越- 創(chuàng)新與創(chuàng)業(yè)導論》教案
評論
0/150
提交評論