




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、在線教務(wù)輔導(dǎo)網(wǎng): :/教材其余課件及動(dòng)畫素材請(qǐng)查閱在線教務(wù)輔導(dǎo)網(wǎng)QQ:349134187 或者直接輸入下面地址:第五章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)第一節(jié) 為什么使用循環(huán)如何解決求=1001nnsum算法1:直接寫出算式 sum=1+2+3+4+5+100 算法2:考慮到1+2+3+100可以改寫為: (1+2)+3)+100),那么有 S1:p1=0+1 S2: p2=p1+2 S3: p3=p2+3 S99: p99=p98+99 S100: p100=p99+100 ,結(jié)果在p100里。算法3:考慮用變量i存放加數(shù),變量p存放上一步 的和。那么每一步都可以寫成:p+i,然后 讓p+i的和存入p,即每
2、步都是p=p+i。 S0: p=0,i=1 S1: p=p+i, i=i+1 S2: p=p+i, i=i+1 S3: p=p+i, i=i+1 S100: p=p+i, i=i+1 如何解決求=1001nnsum算法4:在上面的算法根底上采用循環(huán)功能實(shí)現(xiàn)。 S0: p=0,i=1(循環(huán)初值) S1: p=p+i, i=i+1循環(huán)體 S2: 如果i小于或等于100,重復(fù)執(zhí)行步 驟S1及S2;否那么,算法結(jié)束循環(huán) 控制。p中的值就是1+2+100 的值。如何解決求=1001nnsum=1001nnsum求解 問題的N-S圖 打印p的值 當(dāng)i100 p=p+i i=i+1 p=0,i=1 whil
3、e語句 1形式 : while 表達(dá)式 語句 2作用 : 實(shí)現(xiàn)“當(dāng)型循環(huán), 當(dāng)條件 滿足時(shí),執(zhí)行語句 3特點(diǎn) : 先判斷表達(dá)式,后執(zhí)行語句條件表達(dá)式循環(huán)體語句真假第二節(jié) while語句與do while 語句題目分析:sum=1+2+3+100變量設(shè)定: sum 存放計(jì)算的中間結(jié)果和最后結(jié)果, i 存放被加數(shù) ; 算法分析: 1. 開始:sum=0, i=1 2. 如果滿足條件 i = 100,那么執(zhí)行3,否那么轉(zhuǎn)5; 3. 反復(fù)累加, 迭代式子:sum=sum+ i; 被加數(shù) i 的變化規(guī)律: i=i+1; 4. 轉(zhuǎn)2繼續(xù); 5. 結(jié)束循環(huán),輸出結(jié)果。例5.1 用 while 語句求 #in
4、clude main( ) int i,sum; sum=0; i=1; while ( i=100 ) sum=sum+ i; i = i+1; printf(“sum=%d,sum); 循環(huán)初值循環(huán)條件循環(huán)體 累加迭代式子例5.1 用 while 語句求演示過程 -循環(huán)的實(shí)現(xiàn)初始化 sum=0; i=1;程序流程圖:開始循環(huán)次數(shù) sum i 開 始 0 1求sum=1+2+3+100判斷:i=100 ?初始化 sum=0; i=1;程序流程圖:開始循環(huán)次數(shù) sum i 第 0 次 0 1求sum=1+2+3+100判斷:i=100 ?初始化 sum=0; i=1;程序流程圖:開始sum=s
5、um+i;真假循環(huán)次數(shù) sum i 第 1 次 1 1求sum=1+2+3+100判斷:i=100 ?初始化 sum=0; i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù) sum i 第 1 次 1 2求sum=1+2+3+100判斷:i=100 ?初始化 sum=0; i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù) sum i 第 1 次 1 2求sum=1+2+3+100判斷:i=100 ?初始化 sum=0; i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù) sum i 第 2 次 1 2求sum=1+2+3+100判斷:i
6、=100 ?初始化 sum=0; i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù) sum i 第 2 次 3 2求sum=1+2+3+100判斷:i=100 ?初始化 sum=0; i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù) sum i 第 2 次 3 3求sum=1+2+3+100判斷:i=100 ?初始化 sum=0; i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù) sum i 第 3 次 3 3求sum=1+2+3+100判斷:i=100 ?初始化 sum=0; i=1;程序流程圖:開始sum=sum+i;真假i=i+
7、1;循環(huán)次數(shù) sum i 第 3 次 6 3求sum=1+2+3+100判斷:i=100 ?初始化 sum=0; i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù) sum i 第 3 次 6 4求sum=1+2+3+100判斷:i=100 ?初始化 sum=0; i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù) sum i 第 4 次 6 4求sum=1+2+3+100判斷:i=100 ?初始化 sum=0; i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù) sum i 第 4 次 10 4求sum=1+2+3+100判斷:i=100
8、 ?初始化 sum=0; i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù) sum i 第 4 次 10 5求sum=1+2+3+100判斷:i=100 ?初始化 sum=0; i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù) sum i 第99次 4851 99求sum=1+2+3+100判斷:i=100 ?初始化 sum=0; i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù) sum i 第99次 4950 99求sum=1+2+3+100判斷:i=100 ?初始化 sum=0; i=1;程序流程圖:開始sum=sum+i;真假i
9、=i+1;循環(huán)次數(shù) sum i 第99次 4950 100求sum=1+2+3+100判斷:i=100 ?初始化 sum=0; i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù) sum i 第100次 4950 100求sum=1+2+3+100判斷:i=100 ?初始化 sum=0; i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù) sum i 第100次 5050 100求sum=1+2+3+100判斷:i=100 ?初始化 sum=0; i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù) sum i 第100次 5050 101求
10、sum=1+2+3+100判斷:i=100 ?初始化 sum=0; i=1;程序流程圖:開始sum=sum+i;真假i=i+1;求sum=1+2+3+100循環(huán)次數(shù) sum i 第100次 5050 101判斷:i=100 ?初始化 sum=0; i=1;程序流程圖:開始sum=sum+i;真i=i+1;輸出 sum假循環(huán)次數(shù) sum i 第100次 5050 101求sum=1+2+3+100判斷:i=100 ?初始化 sum=0; i=1;程序流程圖:開始sum=sum+i;真i=i+1;輸出 sum結(jié)束假循環(huán)次數(shù) sum i 第100次 5050 101求sum=1+2+3+100判斷:
11、i=100 ?初始化 sum=0; i=1;程序流程圖:開始sum=sum+i;真i=i+1;輸出 sum結(jié)束假循環(huán)次數(shù) sum i 第100次 5050 101求sum=1+2+3+100 程序運(yùn)行過程分析:循環(huán)次數(shù) sum i 循環(huán)條件 (i=100?) 初始 0 1 true 第1次 sum=0+1=1 2 true 第2次 sum=1+2=3 3 true 第3次 sum=3+3=6 4 true 第4次 sum=6+4=10 5 true 第99 次 sum=4851+99 100 true第100 次 sum=4950+100 101 false =5050 程序: #includ
12、e main( ) int i,sum; sum=0; i=1; while ( i=100 ) sum = sum + i; i = i + 1; printf(“sum=%d,sum); 用 while 語句求 *編程技巧*while語句實(shí)現(xiàn)循環(huán)的三個(gè)要點(diǎn): 第一:初值的選擇進(jìn)入循環(huán)前,起始值是什么? 方法:為迭代變量賦初值。如s=0、1、a0視具體情況而定。 累加計(jì)算初值為0,累乘運(yùn)算初值賦為1 位置: 放于循環(huán)體外 第二:確定循環(huán)的條件變問題為規(guī)律性的重復(fù)操作 循環(huán)的條件是什么?重復(fù)到何時(shí)結(jié)束? 第三:確定循環(huán)體找出反復(fù)執(zhí)行的是什么? 迭代式子:如 s =s + x; i=i+1 ;
13、位置:放于循環(huán)體內(nèi) 結(jié)小main( ) int i,sum; sum=0; i=1; while ( i=100 ) sum = sum + i; i = i + 1; printf(“sum=%d,sum); 2作用:實(shí)現(xiàn)“直到型循環(huán)3特點(diǎn):先執(zhí)行語句,后判斷條件, 直到條件不滿足為止。 dowhile語句1形式:do 語句while表達(dá)式;說明:1、 2、do -while語句有兩個(gè)保留字,do 和while必須成對(duì)出現(xiàn) do語句在執(zhí)行循環(huán)體后才檢查表達(dá)式,所以循環(huán)體至少執(zhí)行一次。循環(huán)體語句條件表達(dá)式循環(huán)體語句條件表達(dá)式do_while語句的圖形表達(dá)真假main( ) int i,sum=
14、0; i=1; do sum=sum+i; i+; while (i=100); printf(“sum=%d,sum); 例5.2 用do_while 語句實(shí)現(xiàn) 1+2+3+100兩種循環(huán)語句形式的比較用while語句實(shí)現(xiàn)main() int i,sum=0; i=1; while (i=100) sum=sum+i; i+; printf(sum=%d,sum); 運(yùn)行結(jié)果:sum=5050用do-while語句實(shí)現(xiàn)main() int i,sum=0; i=1; do sum=sum+i; i+; while (i=100); printf(sum=%d,sum); 運(yùn)行結(jié)果:sum=5
15、050 for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 循環(huán)體;表達(dá)式1;while(表達(dá)式2) 循環(huán)體; 表達(dá)式3; 等價(jià)形式第三節(jié) for語句實(shí)現(xiàn)一般形式for循環(huán)執(zhí)行過程如下:1)計(jì)算表達(dá)式1;2)計(jì)算表達(dá)式2,假設(shè)其值為非0循環(huán)條件 成立,那么轉(zhuǎn)3執(zhí)行循環(huán)體;假設(shè)其值 為0循環(huán)條件不成立,那么轉(zhuǎn)5結(jié)束 循環(huán);3)執(zhí)行循環(huán)體;4)計(jì)算表達(dá)式3,然后轉(zhuǎn)2;5)結(jié)束循環(huán),執(zhí)行for循環(huán)之后的語句?!纠?.3】求正整數(shù)n的階乘n!,其中n由用戶輸入。fact=1.0輸入變量n的值i=1i=nfact=fact*ii+輸出fact的值程序如下:main( ) float fact=1.0; int i,
16、n; scanf(%d,&n); for(i=1;i=n;i+) fact=fact*i; printf(fac=%f,fact); main( ) float r,s; int i; float Pi=3.14159; for(i=0,r=0.5;i6;i+,r+) s=Pi*r*r; printf(nr=%4.1f,s=%f,r,s);運(yùn)行結(jié)果:r= 0.5,s=0.785398r= 1.5,s=7.068578r= 2.5,s=19.634937r= 3.5,s=38.484578r= 4.5,s=63.617199r= 5.5,s=95.033104【例5.4】寫一個(gè)程序,計(jì)算半徑分別
17、為0.5mm, 1.5mm,2.5mm,3.5mm,4.5mm,5.5mm時(shí) 圓的面積。main( ) float r,s; float Pi=3.14159; for(r=0.5;r=5.5;r+) s=Pi*r*r; printf(nr=%4.1f,s=%f,r,s);運(yùn)行結(jié)果: r= 0.5,s=0.785398 r= 1.5,s=7.068578 r= 2.5,s=19.634937 r= 3.5,s=38.484578 r= 4.5,s=63.617199 r= 5.5,s=95.033104 第四節(jié) 幾種循環(huán)的比較例如:求1到100之間不能被3整除的數(shù),用三種循環(huán)均可實(shí)現(xiàn)。/*用w
18、hile語句實(shí)現(xiàn)*/main( ) int i=1; while(i=100) if (i%3!=0) printf(%4d,i); i+; /*用for語句實(shí)現(xiàn)*/main( ) int i; for(i=1;i=100;i+) if (i%3!=0) printf(%4d,i);/*用do-while語句實(shí)現(xiàn)*/main( ) int i=1; do if (i%3!=0) printf(%4d,i); i+; while(i=100);6三種根本循環(huán)結(jié)構(gòu)一般可以相互替代,不能說 哪種更加優(yōu)越。具體使用哪一種結(jié)構(gòu)依賴于程 序的可讀性和程序設(shè)計(jì)者個(gè)人程序設(shè)計(jì)的風(fēng)格。1循環(huán)變量初始化:whil
19、e和do-while的循環(huán)變 量初始化在while和do-while語句之前完成; 而for循環(huán)變量初始化可以在表達(dá)式1中完成。2循環(huán)條件:while和do-while循環(huán)只在while后 面指定循環(huán)條件;而for循環(huán)在表達(dá)式2中指定。3循環(huán)變量修改使循環(huán)趨向結(jié)束:while和do-while 循環(huán)要在循環(huán)體內(nèi)包含使循環(huán)趨于結(jié)束的操作; for循環(huán)可以在表達(dá)式3中完成。4for循環(huán)可以省略循環(huán)體,將局部操作放到表 達(dá)式2,表達(dá)式3中,for語句功能強(qiáng)大。5while和for循環(huán)先測試表達(dá)式,后執(zhí)行循環(huán)體, 而do-while是先執(zhí)行循環(huán)體,再判斷表達(dá)式。第五節(jié) 多重循環(huán)嵌套循環(huán) 一個(gè)循環(huán)體內(nèi)又
20、包含另一個(gè)完整的循環(huán)結(jié)構(gòu), 即循環(huán)套循環(huán)叫多重循環(huán)“嵌套循環(huán)。 按照循環(huán)的嵌套次數(shù),分別稱為二重循環(huán)、三重循環(huán)。一般將處于內(nèi)部的循環(huán)稱為內(nèi)循環(huán),處于外部的循環(huán)稱為外循環(huán)。一般單重循環(huán)只有一個(gè)循環(huán)變量,雙重循環(huán)具有兩個(gè)循環(huán)變量,多重循環(huán)有多個(gè)循環(huán)變量?!纠?.5】打印九九乘法表 11=1 12=2 19=9 21=2 22=4 29=18 31=3 32=6 39=27 91=9 92=18 99=81 i=1當(dāng) i=9j=1當(dāng) j=9 輸出i*j的值 j+換行i+程序如下:main( ) int i,j; for(i=1;i=9;i+) for(j=1;j=9;j+) printf(%d*%d
21、=%2d,i,j,i*j); printf(n); 一個(gè)循環(huán)體必須完完整整地嵌套在另一 個(gè)循環(huán)體內(nèi),不能出現(xiàn)交叉。 并列循環(huán)允許使用相同的循環(huán)變量,但 嵌套循環(huán)不允許。關(guān)于嵌套循環(huán)的說明 多層循環(huán)的執(zhí)行順序是:最內(nèi)層先執(zhí)行, 由內(nèi)向外逐層展開。 三種循環(huán)可以互相嵌套。【例5.6 】用循環(huán)語句打印以下圖案: * * * * * *i=1i=6j=1j=20-i 輸出空格字符j+j=1j=2*i-1輸出“*”字符j+換行i+程序如下:main( ) int i,j; for(i=1;i=6;i+) for(j=1;j=20-i;j+) printf( ); for(j=1;j=A&ch=A&ch=
22、Z N Y sum+ 輸出sum 結(jié)束關(guān)于break語句的說明 break語句只用于循環(huán)語句或switch語句中。 在循環(huán)語句中,break常常和if語句一起使 用,表示當(dāng)條件滿足時(shí),立即終止循環(huán)。注 意break不是跳出if語句,而是跳出循環(huán)結(jié)構(gòu)。(2) 循環(huán)語句可以嵌套使用,break語句只能跳出 終止其所在的本層循環(huán),而不能完全跳出 多層循環(huán)。要實(shí)現(xiàn)逐層跳出多層循環(huán)可以設(shè) 置一個(gè)標(biāo)志變量,控制跳出循環(huán)。 二、continue語句 一般形式: continue; continue語句的功能是結(jié)束本次循環(huán)。即跳過本層循環(huán)體中余下尚未執(zhí)行的語句,接著進(jìn)行下一次循環(huán)條件的判定。注意:執(zhí)行cont
23、inue語句并沒有使整個(gè)循環(huán)終止?!纠?.8 】從鍵盤輸入10個(gè)字符,并統(tǒng)計(jì)其中 數(shù)字字符的個(gè)數(shù)。程序如下:#include stdio.hmain( ) int count=0,i; char ch; for(i=0;i10;i+) ch=getchar(); if(ch9) continue; count+; printf(count=%d,count);輸入:AS2F37#GF9 開始 char ch、 int i, count=0 i=0 i10 N Y 輸入ch Y ch9 N count+ i+ 輸出count 結(jié)束第七節(jié) 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)舉例【例5.9】讀入10個(gè)數(shù),編寫程序求其
24、中的最大值。程序如下:main( ) int i=0; float x,max; printf(nPlease input data:); scanf(%f,&x); max=x; for(i=1;i10;i+) scanf(%f,&x); if (maxx) max=x; printf(The Max data is:%fn,max);程序如下:main( ) float x,sum=0; int i=0; clrscr(); printf(Please input data:); scanf(%f,&x); while(x!=-9999) if (x0) printf(%10.3f,x);
25、 sum=sum+x; i+; if (i%5=0) printf(n); scanf(%f,&x); printf(ni=%d,sum=%fn,i,sum); 【例5.10】以下程序是由循環(huán)結(jié)構(gòu)設(shè)計(jì)完成的。讀以下程 序,分析程序的結(jié)構(gòu)并說明程序完成的功能?!纠?.11】打印出200到300之間的所有素?cái)?shù)。算法分析: 判斷一個(gè)數(shù)m是否是素?cái)?shù)的方法: 設(shè)k為整型,且k= 。讓m被2到 除,如果m能被2k之中任意一個(gè)數(shù)整除,那么提前結(jié)束循環(huán),此時(shí)i的值必然小于或等于k;如果m不能被2k之中任意一個(gè)數(shù)整除,那么在完成最后一次循環(huán)后,i還要加,因此i=k+1,然后才終止循環(huán)。mm 所以在循環(huán)結(jié)束之后判斷i是否大于或等于k+,假設(shè)是,那么說明m未被2k之中任意一個(gè)數(shù)整
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 物業(yè)管理系統(tǒng)開發(fā)合作協(xié)議
- 農(nóng)業(yè)科技推廣應(yīng)用案例分析
- 維修服務(wù)委托合同
- 金融產(chǎn)品開發(fā)合作協(xié)議
- 旅游行業(yè)游客安全與責(zé)任免除合同
- 學(xué)生自制動(dòng)漫電影小感悟
- 昆蟲記的讀后感
- 食品營養(yǎng)與健康功能性食品知識(shí)點(diǎn)題集
- 寵物行業(yè)智能門店與健康管理方案
- 市場營銷策略效果評(píng)估表格模板(行業(yè)A)
- 南寧水療市場調(diào)研分析報(bào)告
- 養(yǎng)老機(jī)構(gòu)員工考核表
- GB/T 10058-2023電梯技術(shù)條件
- 重慶停電更換絕緣子施工方案
- OHSMS職業(yè)健康安全專家講座
- 《小型局域網(wǎng)構(gòu)建》一體化課程標(biāo)準(zhǔn)
- 新教科版三年級(jí)上冊科學(xué)全冊重點(diǎn)題型練習(xí)課件(含答案)
- 藥房變更申請(qǐng)書
- 單肺通氣策略
- RT Thread設(shè)備驅(qū)動(dòng)開發(fā)指南
- 《中小學(xué)生守則》學(xué)習(xí)PPT
評(píng)論
0/150
提交評(píng)論