版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第五章
循環(huán)控制結(jié)構(gòu)
1本章知識(shí)點(diǎn):while語(yǔ)句的一般形式及應(yīng)用for語(yǔ)句的一般形式及應(yīng)用do...while語(yǔ)句的一般形式及應(yīng)用多重循環(huán)結(jié)構(gòu)的使用break語(yǔ)句和continue語(yǔ)句25.1while語(yǔ)句
語(yǔ)句的一般形式如下: while(表達(dá)式)
循環(huán)體語(yǔ)句說(shuō)明:while語(yǔ)句屬于“當(dāng)型”循環(huán)。表達(dá)式循環(huán)體語(yǔ)句假(0)真(非0)圖5.1while語(yǔ)句流程圖【例5.1】求前100個(gè)自然數(shù)的和
。#include<stdio.h>intmain(){ intn,sum; n=1;sum=0;/*變量賦初值*/ while(n<=100)
{ sum=sum+n;/*累加求和*/ n++;/*修改基本數(shù)據(jù)項(xiàng)n*/ } printf(" sum=%d\n",sum);return0;}4【例5.2】使用while語(yǔ)句求n!。#include<stdio.h>intmain(){ intn,i=1; doublesum=1;printf("請(qǐng)輸入一個(gè)正整數(shù):");scanf("%d",&n);while(i<=n) { sum=sum*i;/*累乘求積*/ i++;/*修改基本數(shù)據(jù)項(xiàng)i*/ } printf("%d!=%.0f\n",n,sum);return0; }5【例5.3】編寫程序,輸入一個(gè)字符序列,直至換行為止,統(tǒng)計(jì)出大寫字母、小寫字母、數(shù)字、空格和其他字符的個(gè)數(shù)。65.2for語(yǔ)句 for語(yǔ)句的一般形式如下: for(表達(dá)式1;表達(dá)式2;表達(dá)式3)
循環(huán)體語(yǔ)句說(shuō)明:while語(yǔ)句屬于“計(jì)數(shù)”型循環(huán)。8循環(huán)體語(yǔ)句真(非0)假(0)表達(dá)式1表達(dá)式2表達(dá)式3for語(yǔ)句流程圖For語(yǔ)句最常用、最簡(jiǎn)單的形式for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值)9【例5.1】求前100個(gè)自然數(shù)的和
。#include<stdio.h>intmain(){intn,sum=0;for(n=1;n<=100;n++) sum=sum+n;printf("sum=%d\n",sum);return0;}
【例5.4】設(shè)n=30,編寫程序,計(jì)算并輸出S(n)的值。
S(n)=(1*2)/(3*4)-(3*4)/(5*6)+(5*6)/(7*8)+…+(-1)(n-1)*[(2n-1)*2n]/[(2n+1)*(2n+2)]+…#include<stdio.h>#include<math.h>intmain(){ intn;
floats=0; for(n=1;n<=30;n++) s=s+pow((-1),(n-1))*((2*n-1)*2*n)/((2*n+1)*(2*n+2)); printf("s(n)=%f",s); return0;}10【例5.5】編寫程序,輸出所有的水仙花數(shù)。水仙花數(shù)是指一個(gè)3位數(shù),其各位數(shù)字的立方和等于該數(shù)本身。例如:153=13+53+33=153,所以153就是水仙花數(shù)。
115.3do…while語(yǔ)句 for語(yǔ)句的一般形式如下: do
循環(huán)體語(yǔ)句 While{表達(dá)式};說(shuō)明:while語(yǔ)句屬于“直到型”循環(huán)。13循環(huán)體語(yǔ)句表達(dá)式假(0)真(非0)圖5.5do…while語(yǔ)句流程圖While語(yǔ)句和do…while語(yǔ)句的比較:一般來(lái)說(shuō),對(duì)于同一個(gè)問(wèn)題,使用While語(yǔ)句或do…while語(yǔ)句結(jié)果是一樣的,但有時(shí)并不一樣,比較以下兩段程序:14#include<stdio.h>intmain(){intn,sum=0;scanf("%d",&n);while(n<=10){sum=sum+n;n++;}printf("sum=%d\n",sum);return0;}#include<stdio.h>intmain(){ intn,sum=0; scanf("%d",&n); do { sum=sum+n; n++; } while(n<=10); printf("sum=%d\n",sum);return0;}【例5.6】編寫程序,實(shí)現(xiàn)對(duì)用戶輸入口令的校驗(yàn)。用戶輸入的口令如果與預(yù)設(shè)口令不一致,則需要重新輸入,直到與預(yù)設(shè)口令一致為止。15【例5.7】用公式…求π的近似值,直到最后一項(xiàng)的絕對(duì)值小于10-6為止。5.4多重循環(huán)結(jié)構(gòu)for(;;){…
…}for(;;){…}for(;;){…}…for(;;){…}for(;;){…for(;;){}…}嵌套循環(huán)并列循環(huán)交叉循環(huán)(錯(cuò)誤)循環(huán)的嵌套是指一個(gè)循環(huán)語(yǔ)句的循環(huán)體內(nèi)完整的包含另一個(gè)完整的循環(huán)結(jié)構(gòu)。前述三種循環(huán)結(jié)構(gòu)(while循環(huán)、for循環(huán)、do-while循環(huán))可以任意組合嵌套。
循環(huán)的嵌套有雙重循環(huán)嵌套和多重循環(huán)嵌套。但一般使用兩重或三重的比較多,若嵌套層數(shù)太多,就降低了程序的可讀性和執(zhí)行效率。17【例5.8】編寫程序,輸出1000以內(nèi)所有的完數(shù)。如果一個(gè)整數(shù)的因子之和等于這個(gè)數(shù)本身,這個(gè)數(shù)就被稱為完數(shù)。例如:1、2、3是6的因子,并且6=1+2+3,所以6是完數(shù)。18【例5.9】打印九九乘法口訣表。程序分析:乘法口訣表的形式如下:1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=91*4=4 2*4=8 3*4=12 4*4=16…1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=815.5break語(yǔ)句和continue語(yǔ)句break語(yǔ)句可以使流程跳出switch結(jié)構(gòu),它也可以用在while語(yǔ)句、for語(yǔ)句和do…while語(yǔ)句中??墒钩绦蛱霰緦友h(huán)結(jié)構(gòu),接著執(zhí)行循環(huán)體下面的語(yǔ)句。其一般形式如下:
break;
20例子:intr; floatarea,pi=3.14159; for(r=1;r<=10;r++) { area=pi*r*r; if(area>100)break; printf("r=%d,area=%f\n",r,area); }說(shuō)明:(1)break語(yǔ)句只能用于while、for和do…while循環(huán)語(yǔ)句以及switch語(yǔ)句中,不能用于其他語(yǔ)句。(2)如果break語(yǔ)句用在多重循環(huán)結(jié)構(gòu)體中,使用break語(yǔ)句只能使程序退出break語(yǔ)句所在的最內(nèi)層循環(huán)。
5.5break語(yǔ)句和continue語(yǔ)句continue語(yǔ)句的作用是結(jié)束本次循環(huán),即跳過(guò)循環(huán)體中下面尚未執(zhí)行的語(yǔ)句,接著進(jìn)行下一次是否執(zhí)行循環(huán)體的判斷。其一般形式如下:continue;注意:continue語(yǔ)句只能用于循環(huán)結(jié)構(gòu)中。
對(duì)于while和do…while語(yǔ)句,continue語(yǔ)句使程序結(jié)束本次循環(huán),跳轉(zhuǎn)到循環(huán)條件的判斷部分,根據(jù)條件判斷是否進(jìn)行下一次循環(huán);對(duì)于for語(yǔ)句,continue語(yǔ)句使程序不再執(zhí)行循環(huán)體中下面尚未執(zhí)行的語(yǔ)句,直接跳轉(zhuǎn)去執(zhí)行“表達(dá)式3”,然后再對(duì)循環(huán)條件“表達(dá)式2進(jìn)行判斷”,根據(jù)條件判斷是否進(jìn)行下一次循環(huán)。
22【例5.10】輸入若干學(xué)生的成績(jī),求平均值。5.6應(yīng)用程序舉例23【例5.11】判斷m是否為素?cái)?shù)?!纠?.12】從鍵盤輸入兩個(gè)正整數(shù)m和n,求它們的最大公約數(shù)和最小公倍數(shù)。【例5.13】求Fibonacci數(shù)列
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 區(qū)域新能源合作:布局未來(lái)能源
- 全球化數(shù)字營(yíng)銷:拓展在線市場(chǎng)
- 2024年度智能交通信號(hào)系統(tǒng)項(xiàng)目投資擔(dān)保反擔(dān)保合同3篇
- 2024年物流倉(cāng)儲(chǔ)服務(wù)配送合同
- 2025年度混凝土企業(yè)信息資源共享與合作合同3篇
- 城市軌道交通光伏發(fā)電系統(tǒng)應(yīng)用分析
- 【優(yōu)教通】2021年高一生物同步練習(xí):4章-光合作用和細(xì)胞呼吸-測(cè)試4(蘇教版必修1)-
- 公共機(jī)構(gòu)能源資源消費(fèi)統(tǒng)計(jì)系統(tǒng)-操作手冊(cè)(統(tǒng)計(jì)員)
- 信息系統(tǒng)分析與設(shè)計(jì)-20211104091632
- 項(xiàng)目管理WBS責(zé)任分配矩陣
- 石化企業(yè)恐怖襲擊事件應(yīng)急預(yù)案
- 高校PPT課件:證券投資學(xué)(第五版)
- m7130平面磨床電氣控制畢業(yè)設(shè)計(jì)
- 會(huì)計(jì)基礎(chǔ)一點(diǎn)通-張志鳳
- 牙科診所復(fù)診患者就診流程圖
- 人教版初中語(yǔ)文名著導(dǎo)讀復(fù)習(xí)資料
- 湘藝版 四年級(jí)上冊(cè)音樂(lè)教案- 第五課 踩雨
- 魔方社團(tuán)活動(dòng)記錄-副本
- 第一節(jié)植物細(xì)胞的結(jié)構(gòu)和功能 (3)
- D502-15D502等電位聯(lián)結(jié)安裝圖集
- 設(shè)計(jì)風(fēng)速、覆冰的基準(zhǔn)和應(yīng)用
評(píng)論
0/150
提交評(píng)論