




已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第四章 流程控制語句 (2),2011-3-29,王衛(wèi)紅/曹玉輝,流程控制語句用來控制程序的執(zhí)行過程,它包括以下三種語句:,選擇:用來解決實際應(yīng)用中按不同情況進(jìn)行不同處理的問題.包括: if語句 和 switch語句,循環(huán):用來解決實際應(yīng)用中需要重復(fù)處理的問題. 包括: for語句、 while語句 和 do語句,跳轉(zhuǎn):用來改變順序向下執(zhí)行的正常順序.包括:goto 、continue 、break 和 return語句,表達(dá)式,語 句,真,假,一、if語句的簡單分支,語句:if(表達(dá)式) 語 句,表達(dá)式為任意表達(dá)式,若有多條語句,則要構(gòu)成復(fù)合語句,執(zhí)行:計算 表達(dá)式的值,若為真(不為0) 則執(zhí)行語句;否則不執(zhí)行語句,二、if語句的雙分支,if(表達(dá)式) 語句1 else 語句2,表達(dá)式,語句 1,語句2,真,假,入口,出口,執(zhí)行:,若表達(dá)式的值不為0,執(zhí)行語句1,否則執(zhí)行語句2,語句:,嵌套的兩種形式: (1) 嵌套 ifelse (2) 嵌套 else if,三、if 語句的嵌套(處理多分支問題),(1) 嵌套 ifelse,if(表達(dá)式1),if(表達(dá)式3)語句1;,if(表達(dá)式2),else 語句2 ;,else 語句3 ;,else 語句4;,外層,內(nèi)層,中層,若表達(dá)式1的值為非0 ,即真,則執(zhí)行中層ifelse結(jié)構(gòu);否則,執(zhí)行語句4。 執(zhí)行中層時,若表達(dá)式2的值為非0 ,即真,則執(zhí)行內(nèi)層ifelse結(jié)構(gòu);否則,執(zhí)行語句3。 執(zhí)行內(nèi)層時,若表達(dá)式3的值為非0 ,即真,則執(zhí)行語句1;否則,執(zhí)行語句2。,if(表達(dá)式1) 語句1; else if(表達(dá)式2) 語句2; else if(表達(dá)式3) 語句3; . else if(表達(dá)式n) 語句n; else 語句n+1 ; /*前面n個條件均 不成立,執(zhí)行語句n+1*/,(2)嵌套 else if,形式:,switch (表達(dá)式) case 常量表達(dá)式1:語句序列1; case 常量表達(dá)式2:語句序列2; case 常量表達(dá)式n:語句序列n; default:語句序列n+1; ,四、 switch 語句是多分支選擇語句,switch 通常與break語句聯(lián)用:break用于中斷或結(jié)束語句(只能用在switch語句和循環(huán)語句中),分支(選擇)結(jié)構(gòu)小結(jié),1、if語句的簡單分支,2、if語句的雙分支:if -else 3、if的嵌套 4、switch 語句的使用,書中例題:P80(2) P81(3)、 P85(2) P86(3),4.3 4.5 循環(huán)結(jié)構(gòu),一、 for 語句*,二、 while語句*,三、 do - while 語句*,主要學(xué)習(xí)語句的執(zhí)行過程、使用方法,循環(huán):重復(fù)執(zhí)行一段語句,格式,for( 表達(dá)式1;表達(dá)式2;表達(dá)式3) 語句,表達(dá)式2,語句,表達(dá)式1,表達(dá)式3,表達(dá)式1:作為初始化,先執(zhí)行表達(dá)式1的值; 再執(zhí)行表達(dá)式2,如果值為真,執(zhí)行語句,再執(zhí)行表達(dá)式3,重復(fù); 如果表達(dá)式2的值為假,退出循環(huán),繼續(xù)執(zhí)行下面的語句。,執(zhí)行情況,真,假,表達(dá)式2:作為循環(huán)控制,是循環(huán)條件,表達(dá)式3:每次都要做 ,改變循環(huán)變量,4.3 for語句(計數(shù)式型循環(huán)),for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值) 語句,for (s=0,i=1;i=100;i+) s+=i;,注意:,這三個表達(dá)式都可以忽略,但分號 不能省 for(;),不能構(gòu)成死循環(huán),死循環(huán)只能用ctrl+c強行中止,所以源程序編輯后應(yīng)先存盤。,for循環(huán)最常見格式:,例4.3.1:求n!(n的值由鍵盤輸入),#include void main() int n; double s=1.0; coutn; for(int i=1;i=n;i+) s*=i; coutn“!=“sendl; ,例4.3.2:輸入一個數(shù),判斷是否為素數(shù),#include void main() int n,i; cinn; for (i=2;in;i+) if (n%i= =0) break; if (i= =n) cout“nYes”; else cout“nNo”; ,例4.3.3:打印一九乘法表。,1*1=1 1*2=2 1*3=3 1*9=9,#include void main() int i=1,j; cout“n”; for(j=1;j=9;j+) couti“*”j“=“i*j; ,int i,j; for(i=1;i=9;i+) cout“n”; for(j=1;j=9;j+) /*循環(huán)嵌套*/ couti“*”j“=“i*j“t”; ,int i,j; for(i=1;i=9;i+) cout“n”; for(j=1;j=i;j+) /*循環(huán)嵌套*/ couti“*”j“=“i*j“t”; ,1*1=1 2*1 =2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4=16 9*1=9 9*2=18 9*3=27 9*4=36 .,循環(huán)嵌套,內(nèi)循環(huán) 外循環(huán),嵌套不能有交叉,在循環(huán)嵌套中,break語句只能退出一層循環(huán),雙重for循環(huán)的執(zhí)行過程: 例4.3.4:求1!+2!+3!+5!,#include void main() int i,j; long int s=0,m; for(i=1;i=5;i+) m=1; for(j=1;j=i;j+) m*=j; s+=m; coutsendl; ,m=1;,s=0;,當(dāng) i=5,當(dāng)j=i,m*=j; j+;,s+=m; i+;,coutsendl;,#include 10 s=0; void main() 20 for(i=1;i=3;i+) int i,j; 30 m=1; long int m,s; 40 for(j=1;j=i;j+) 50 m*=j; 60 s+=m; 70 coutsendl; ,10,20,30,40,50,60,m=1,s=0,i=1,j=1,m =1*1,s= 0+ 1,i=2,j=1,m=1,m =1*1,j=2,m =1*2,s= 1+ 2,i=3,j=1,j=2,j=4,m=1,m =1*1,m =1*2,m =2*3,s= 3+ 6,70,s= 9,i=4,外走一 內(nèi)走遍,j=2,j=3,j=3,例4.3.5:打印出100到200之間的素數(shù),#include void main() int i , j; for ( i=100 ; i=i) cout“t” i; ,#include void main() int i,j,n,m; long s=0,t; cinnm; for (i=1;i=n;i+) t=1; for (j=1;j=m;j+) t*=i*2-1; s+= t; couts“n”; ,例4.3.6: 1m+3 m +5 m +7 m +.,返回,格式:while(表達(dá)式) 語句,執(zhí)行過程:先求表達(dá)式的值,判斷為真為假, 若為真,則執(zhí)行語句;否則退出循環(huán)。,注意:,語句:一個語句,不是語句序列 表達(dá)式后面不能有分號,4.4 while 語句(條件循環(huán)),例4.4.1:求1+2+3+100的和,#include void main() int s,i; s=0; /* s為累加和 */ i=1; /* i為循環(huán)控制變量 */ while ( i=100 ) /* 循環(huán)條件 */ s+=i ; i+; couts; ,#include void main() int s,i; 10: s=0; 20: i=1; 30: while ( i=4 ) 40: s+=i ; 50: i+; 60: couts; ,s=0,循環(huán)過程如下:,10,20,40,30,50,60,i=1,s=0+1,i=2,1,s=1+2,i=3,1,1,i=4,s=3+3,0,s=6+4,i=5,s=10,1,例4.4.2: 編程求 的近似值, 公式 /4 1-1/3+1/5-1/7+1/9-,#include #include void main( ) int s; float n , t , pi ; s=1 ; n=1; t=1; pi=0; while ( fabs(t)1e-6 ) pi=pi+t ; n=n+2; s=-s; t=s/n; pi=4*pi ; cout“ pi=” pi “n”; ,分析: 題目仍可以看成是累加求和 不同的是, 相加的每一項正負(fù)相間, 公式是無窮的, 所以我們規(guī)定當(dāng) 相加項的絕對值小于0.000001 (即106 )時停止計算,1,1,-1,3,-1/3,1,0,1,0.67,1/5,5,1,返回,格式,do 語句 while (表達(dá)式),執(zhí)行情況:,先執(zhí)行語句,再計算表達(dá)式的值,若非0,再執(zhí)行語句;否則退出循環(huán),執(zhí)行下面的語句,do后若有多條語句,需使用復(fù)合語句,語句至少被執(zhí)行一次,不同于while語句,注意,4.5 do-while語句(直到型循環(huán)),;,while 語句與do-while語句(求1到100的累加和),#include void main() int s,i; s=0; cini; while ( i=100 ) s+=i ; i+; couts; ,#include void main() int s,i; s=0; cini; do s+=i ; i+; while ( i=100 ); couts; ,輸入:101,輸出:0,輸出:101,輸入:101,三種循環(huán)語句的比較:,for和 while語句是先判斷循環(huán)條件再執(zhí)行循環(huán)體,而do循環(huán)是先執(zhí)行循環(huán)體,然后再判斷,依次反復(fù)進(jìn)行下去,直到循環(huán)條件的值為假時止,所以,for和 while的循環(huán)體可能一次也不執(zhí)行;而do語句的循環(huán)體至少執(zhí)行一次。,一般情況下,它們之間可以相互轉(zhuǎn)換,編程時可 以任選使用,通常使用for循環(huán)較簡單。,在任一種循環(huán)的循環(huán)體內(nèi)都可以使用break語 句使之終止循環(huán)的執(zhí)行,使用continue語句結(jié)束一次循環(huán)體的執(zhí)行。,循環(huán)結(jié)構(gòu)小結(jié),一、 for 語句*,二、 while語句*,四、循環(huán)的嵌套,三、 do - while 語句*,書中例題:P92(4) 、P95(3)、 P97(2) P99(1)、 P103(1),返回,用來改變順序向下執(zhí)行的正常順序.包括:goto 、 break 、 continue和 return語句,4.6 跳轉(zhuǎn)語句,一、 goto 語句 格式:goto 語句標(biāo)號; (注:語句標(biāo)號后加:號) 功能:無條件轉(zhuǎn)向語句。 如: goto loop;,二、break 語句,只用于switch語句和循環(huán)中,用在循環(huán)中,用來中止循環(huán),提前跳出循環(huán)體,#include void main() int i=1,s=0; while (i=2000) break; s+=i; i+; cout“s=“s “i=”i; ,例4.6.1:,結(jié)果:s=2016 i=64,三、continue 語句,只能用在循環(huán)中,continue通常與if語句結(jié)合,一同用于循環(huán)結(jié)構(gòu),注意:與break語句的區(qū)別,continue:結(jié)束本次循環(huán),繼續(xù)下次循環(huán) break : 中止循環(huán)的進(jìn)行,1. break語句 : 中止循環(huán)或switch結(jié)構(gòu) 2. continue語句 : 結(jié)束本次循環(huán), 然后再根據(jù)是否滿足 條件來決定是否執(zhí)行下次循環(huán),例4.6.2:把100到200之間的不能被3整除的數(shù)輸出出來,#include void main() int n; for(n=100;n=200;n+) if (n%3= =0) continue; coutn; ,作業(yè):,P109 4.1 1.2.5.7.9 P113 4.2 3.4.6,實驗三:三種基本結(jié)構(gòu)的實現(xiàn),一、實驗?zāi)康模?1能夠正確使用cin/cout或printf()/scanf()進(jìn)行各種數(shù)據(jù)正確格式的輸入輸出。 2能夠熟練使用if語句和switch語句編寫分支選擇結(jié)構(gòu)程序。 3熟練掌握用while語句、dowhile語句和for語句結(jié)構(gòu)及編寫循環(huán)結(jié)構(gòu)程序。 4掌握在程序設(shè)計中用循環(huán)的方法實現(xiàn)一些常用算法(如窮舉、迭代、遞推等)。 5進(jìn)一步學(xué)習(xí)調(diào)試程序。,二、實訓(xùn)步驟、方法與要求,1編程計算正整數(shù)1-n中的奇數(shù)與偶數(shù)的和,輸出相應(yīng)信息。 2編程求解分段函數(shù)的值,寫出分段函數(shù)的數(shù)學(xué)表達(dá)式。 3利用switch語句對一個百分制的成績給出相應(yīng)等級。 4利用循環(huán)語句的三種結(jié)構(gòu)編程求1+2+3+100的和存入變量sum中并輸出。 5編程打印500以內(nèi)的“水仙花數(shù)”?!八苫〝?shù)”是個3位數(shù),其各位數(shù)立方和等于該數(shù)本身。 6、任給一個的正整數(shù),要求: 求出它是幾位數(shù)。按逆序打印出各位數(shù)字。例如原數(shù)為321,應(yīng)輸出123。 除此之外,程序還應(yīng)當(dāng)對不合法的輸入作必要的處理。例如:輸入負(fù)數(shù)。 提示:利用 %、/ 運算符,循環(huán)迭代。 7利用雙重循環(huán)語句輸出99乘法表。 8驗證教材中的例題與習(xí)題。(求素數(shù),一元二次方程等)。,累加 累乘 判素數(shù) 牛頓迭代法 數(shù)值積分*,算法小結(jié):,返回,附:牛頓迭代法求根: 幾何意義: 求f(x)在X0附近的根 2. 計算公式: Xn+1=Xn-f(Xn)/f(Xn) 精度: = |Xn+1-Xn|1.0e-3 所求的根: 滿足精度的Xn,f(x)=a0xn+a1xn-1+.+an-1x+an=0,三要素:迭代初值,元方程,導(dǎo)數(shù)方程 X0=a :X1=X0 (X1=a) 初始化迭代初值 Do X
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025合同范本服務(wù)外包合同協(xié)議書
- 2025合同模板軟件開發(fā)合作協(xié)議范本
- 2025網(wǎng)絡(luò)云服務(wù)的合同樣本
- 汽車排氣系統(tǒng)及智能懸架零部件產(chǎn)業(yè)化項目可行性研究報告(僅供參考)
- 2025長治振華水泥-礦渣磨合同技術(shù)附件
- 體育館演出場地出租合同(18篇)
- 酒店餐飲業(yè)合作合同書
- 教師教學(xué)資源下載網(wǎng)
- 研修班學(xué)習(xí)總結(jié)(7篇)
- 網(wǎng)絡(luò)教育在線平臺合作開發(fā)合同
- 上市合作合同協(xié)議書范本-IPO
- 邊坡巡檢記錄表完整優(yōu)秀版
- 最新消毒記錄表每日消毒表
- 自發(fā)冠脈夾層診療指南解讀
- 《一滴水經(jīng)過麗江》的課件
- 《創(chuàng)新與創(chuàng)業(yè)基礎(chǔ)》課程思政優(yōu)秀教學(xué)案例(一等獎)
- 原子熒光分析(汞)原始記錄2
- 三級醫(yī)院服務(wù)能力指南2022
- 家庭室內(nèi)裝飾裝修工程驗收單
- 物流招標(biāo)文件模板(完整版)
- 電梯困人救援流程圖
評論
0/150
提交評論