




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第四章 C+的流程控制語句程序的三種根本構(gòu)造1、順序AB2、選擇條件?真假ABxy?真假z=xz=y3、循環(huán)A當(dāng)P為真當(dāng)型i+i=10i+PAYNif語句判別選擇語句,有三種方式:if表達(dá)式 語句語句條件真假語句2語句1條件真假2) if表達(dá)式 語句1 else 語句2 if (ab) coutb) couta;else coutb) a=1; b=0; else a=0; b=1; a=0b=1a=1b=0ab真假if (i j) i+;if (ij); i+;i+ +ij真假if 總是與它上面最近的 else 配對,如要改動(dòng),用復(fù)合語句 。留意書寫格式,相互配對的語句要對齊。ij真假i+
2、+例:輸入兩個(gè)實(shí)數(shù),按代數(shù)值由小到大次序輸出這兩個(gè)數(shù)。void main( void ) float a,b,t; /定義變量coutab; /給變量賦值 a:7, b:3 if(ab) t=a; a=b; b=t; /交換數(shù)據(jù),用中間變量 coutatbendl;/輸出變量bat73773輸出結(jié)果:3 7嵌套的條件語句舉例闡明x=100; a=10; b=20; ok1=5; ok2=0;if(ab?a:b ; / 求a, b中的大者當(dāng) a=2 b=1 ab為真,表達(dá)式的值等于a, max值為2當(dāng) a=1 b=2 ab為假,表達(dá)式的值等于b, max值為2留意:條件運(yùn)算符的優(yōu)先級比賦值運(yùn)算符
3、高 x=(x=3) ? x+2 : x-32. 結(jié)合方向自左至右 ab?a:cd?c:d3. 三個(gè)表達(dá)式的類型可不同 z=ab?A:a+bx=5x=9, y=6, z=5;x=(x+y)%z=x%z+y%z)?1:0;coutx= xendl;x=1; y=2; z=3;x+=y+=z;couty?x+:y+endl;y=y+z=5x=x+5=69x=0void main(void ) int x=1,y=2,z=3; x+=y+=z; coutxy?y:xendl; coutxy?x+:y+endl; coutx“,yendl; couty?x+:y+endl; couty“,zendl;
4、x=3; y=z=4; cout=y&y= =x)?1:0endl; cout=y&y=xendl;xyz 輸出653653666356636,667996797,934434403441執(zhí)行以下程序段后,變量a,b,c的值分別是:int x=10, y=9;int a,b,c;a=(-x= =y+)?-x:+y;b=x+;c=y;x=8 y=10 a=8b=8 x=9c=10void main(void ) int a=5,b=1,c=0; if(a=b+c) cout“* * *n; else cout“$ $ $n;* * *switch語句多分支選擇語句。if語句只需兩個(gè)分支,而實(shí)踐問
5、題中經(jīng)常需求用到多分支的選擇。如,成果分為A(10085)、B(8470)、C(6960)、D(60以下)等。A10085YBY8470CY6960DYno passNNNN顯示出錯(cuò)cin.get(grade);if(grade= =A) cout“10085n;else if (grade= =B) cout“8470n; else if (grade= =C) cout“6960n; else if (grade= =D) cout“no passn; else cout“errorn; switch(表達(dá)式 case 常量表達(dá)式1:語句1 case 常量表達(dá)式2:語句2 case 常量表
6、達(dá)式n:語句n default:語句n+1 switch(grade) case A:cout“10085n; case B:cout“8470n; case C:cout“6960n; case D:cout“no passn; default:cout“errorn; 假設(shè)grade為 A,那么結(jié)果為1008584706960no passerror其流程為:先計(jì)算表達(dá)式的值,然后順序地與case子句中所列出的各個(gè)常量進(jìn)展比較,假設(shè)表達(dá)式的值與常量中的值相等,就開場進(jìn)入相應(yīng)的case語句執(zhí)行程序,遇到case和default也不再進(jìn)展判別,直至switch語句終了。假設(shè)要使其在執(zhí)行完相應(yīng)的
7、語句后中止執(zhí)行下一語句,可以在語句后加break。switch(grade) case A:cout“10085n; break; case B:cout“8470n; break; case C:cout“6960n; break; case D:cout“no passn; break; default:cout“errorn; 留意:1、switch與if不同,它僅能判別一種邏輯關(guān)系,即表達(dá)式能否等于指定的常量,而 if 可以計(jì)算并判別各種表達(dá)式。2、case子句后必需為常量,經(jīng)常是整型和字符型。3、default可以省略,這時(shí),不滿足條件什么也不執(zhí)行。4、case和default只起標(biāo)
8、號的作用,順序可以顛倒,顛倒時(shí)留意后面的break語句。5、多個(gè)case語句可以共用一組程序。 case A: case B: case C: cout“pass!n;void main(void ) int i=10; switch(i) case 9: i+; case 10: i+; case 11: i+; default: i+; cout“i=iendl; i=11i=12i=13i=13int x=1, y=0, a=0, b=0;switch( x ) case 1: switch( y ) case 0: a+; break; case 1: b+; break; case
9、2: a+; b+; break; case 3: a+; b+; cout“a=“at“b=bendl;a=1a=2 b=1a=2b=1有3個(gè)整數(shù)a,b,c,由鍵盤輸入,輸出其中最大的數(shù)。 while語句while ( 表達(dá)式 語句組1 語句組2表達(dá)式語句組1真語句組2假a=3;while(a100) a=a+5;cout“a=“a;當(dāng)循環(huán)語句超越一條時(shí),要用 將語句組組合在一同。求 1+2+3+100void main(void) int i=1,sum=0; /定義變量,初始化 while(i=100) /構(gòu)造循環(huán) sum=sum+i; / 循環(huán)體,多次執(zhí)行 i=i+1; cout“su
10、m=sumendl; /輸出結(jié)果循環(huán)條件初值循環(huán)次數(shù)1234.99100101sumi0112真33真64真105真真100真101真5050假sum50500sum1i1233641005050101循環(huán)終了!實(shí)踐上是將i不停地累加到一同留意:1、循環(huán)體假設(shè)為一個(gè)以上的語句,用 括起。2、循環(huán)體內(nèi)或表達(dá)式中必需有使循環(huán)終了的條件,即一定有一個(gè)循環(huán)變量。3、while表達(dá)式可以成為語句,要特別小心。k=2;while(k!=0) coutk, k-;coutendl;k循環(huán)條件輸出輸出:212真21真10假回車void main(void) int num=0; while(num=2) nu
11、m+; coutnumendl; num循環(huán)條件輸出1230真11真22真33假無void main(void) int y=10; while (y-); cout“y=yendl;y條件輸出輸出:y=-1輸出是什么?循環(huán)幾次?10真無9真無.真無1真無0假1循環(huán):10次k=10;while( k=0 ) k=k-1;cout k; k10表達(dá)式0輸出:0 x=10; while (x!=0) x-;x=10; while (x) x-;x=10; while(x-);x=10; while(-x); 以下語句,循環(huán)退出時(shí)x為多少?x=0 x=0 x=-1x=0#includevoid ma
12、in()char ch;while(cin.get(ch)&ch!=n)switch (ch-2) case 0: case 1: cout(char)(ch+4); case 2: cout(char)(ch+4); break; case 3: cout(char)(ch+3) ; default : cout(char)(ch+2); break; coutendl; 從鍵盤輸入2473,那么程序的輸出結(jié)果是:輸出:668977直到P為真A直到型dowhile語句表達(dá)式語句組1真語句組2假do 語句組1while表達(dá)式;語句組2求 1+2+3+100void main(void) int
13、 i=1,sum=0; /定義變量,初始化 do /構(gòu)造循環(huán) sum=sum+i; / 循環(huán)體,多次執(zhí)行 i=i+1; while (i=100); cout“sum=sum0)&(y5);cout“y=“y“,“x=xendl;y0 x0條件輸出:y=1,x=010假假設(shè)為while循環(huán),那么一次也不執(zhí)行循環(huán)體,輸出為:y=0, x=0s=7;do s-=2;while(s= =0);cout“s=sendl; 第一次s75表達(dá)式N輸出:s=5for語句for表達(dá)式1;表達(dá)式2;表達(dá)式3 語句組1(循環(huán)體)語句組2N表達(dá)式2語句組1Y語句組2表達(dá)式1表達(dá)式3for循環(huán)變量賦初值;循環(huán)終了條件
14、;循環(huán)變量增值求 1+2+3+100void main(void) int i, sum; for (i=1, sum=0; i=100; i+) sum=sum+i; cout“sum=sumendl; void main(void) int i, sum; i=1; sum=0; while(i=100) sum=sum+i; i=i+1; cout“sum=sumendl; 留意:1、當(dāng)型循環(huán),條件測試是在循環(huán)開場時(shí)進(jìn)展,有能夠一次也進(jìn)入不了循環(huán)體。2、for語句中的三個(gè)表達(dá)式可以部分省略或全部省略,但;不能省略,假設(shè)省略表達(dá)式2,那么表示循環(huán)條件為真。3、for語句中三個(gè)表達(dá)式可以是任
15、何有效的C言語表達(dá)式。void main(void) char i, j ; for (i=a,j=z ; ij ; i+, j-) coutij; coutendl; 次數(shù)ijij輸出輸出:azbycx.lomnaz真azby真bycx真cx真.真.mnmn.nm假CR以下循環(huán)結(jié)果如何?for ( i=0, k= -1; k=1; i+, k+) cout“*n;以下循環(huán)最多執(zhí)行_次,最少執(zhí)行_次for (i=0, x=0; ix; 101循環(huán)的嵌套一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完好的循環(huán)體,稱為循環(huán)的嵌套。留意:1、循環(huán)體內(nèi)有多個(gè)語句要用括起來。2、書寫格式要明晰。for ( ; ; ) . f
16、or ( ; ; ) . void main(void) int i, j, k=0, m=0; for ( i=0; i2; i+) for ( j=0; j3; j+) k+; k- =j; m=i+j; cout“k=“k“, m=“ mendl; ii2jjn1、m被n除得到余數(shù)r0r n) r=m%nm=6 n=4 r=m%n=6%4=2while ( r=m%n ) m=n; n=r ; 最小公倍數(shù)為兩數(shù)之積除以最大公約數(shù)。4*6/2=122、假設(shè)r=0,那么算法終了,n為最大公約數(shù),否那么做33、mn , nr , 回到1m=4 n=2 r=m%n=4%2=0所以,公約數(shù)=2最大
17、公約數(shù):能同時(shí)被m和n整除的最大數(shù)。r=mn?n:mfor(i=1; ir; i+) if(m%i=0&n%i=0) a=i;couta;將 12345 的每位分別打印出來。12345105 12345/1012341234104 1234/10123123103 123/101212102 12/1011%101 1/100while(n)coutn%10=1e-5)S=S+term;term=(-1)*term*x*x/(2*n)*(2*n-1);n+;term=(-1)*term*t;前一項(xiàng)當(dāng)前項(xiàng)舊的新的后一項(xiàng)(-1)前一項(xiàng)t設(shè)通項(xiàng)為term,那么可以寫出迭代公式t=x*x/(2*n)*
18、(2*n-1)t=x*x/(2*n)*(2*n-1)第n項(xiàng)/第n-1項(xiàng):第一項(xiàng):term=1;第一次循環(huán):S=S+term; term=(-1)*term*t;第二次循環(huán):S=S+term; term=(-1)*term*t;這時(shí)左邊的term代表第二項(xiàng),而右邊的term為第一項(xiàng)。這時(shí)左邊的term代表第三項(xiàng),而右邊的term為第二項(xiàng)。term=(-1)*term*t;前一項(xiàng)當(dāng)前項(xiàng)同樣是term,在循環(huán)中不斷用舊的數(shù)值去推導(dǎo)賦值出新的數(shù)值。S=0;term=1;n=1;/一定要賦初值while(fabs(term)=1e-5)S=S+term;term=(-1)*term*x*x/(2*n)*
19、(2*n-1);n+;舊的新的break語句和continue語句break在switch語句中,可以使流程跳過判別體,執(zhí)行下面的程序。在循環(huán)體中,也可以從循環(huán)體內(nèi)跳出循環(huán)體,提早終了循環(huán)。for ( ; ; ) cinx; if (x= =123) break; 當(dāng)輸入123時(shí),終了循環(huán)。break 只能退出一層循環(huán)或switch語句。a=10 ; y=0;do a+=2; y+=a; cout“a=“a“, y=“ y50) break; while (a=14);第一次:a=12 y=12輸出:a=12 , y=12第二次:a=16 y=28輸出:a=16 , y=28第三次:a=16
20、y=44輸出:a=16 , y=44第四次:a=16 y=60輸出:a=16 , y=60continue:其作用為終了本次循環(huán),即跳過循環(huán)體中下面尚未執(zhí)行的語句,接著進(jìn)展下一次能否執(zhí)行循環(huán)的斷定。void main(void) int i; for (i=1 ; i=5 ; i+ ) if (i%2) cout“*; else continue; cout“#; cout“ $n;ii=5i%2輸出輸出:*#*#*#$1真1*#2真0無3真1*#4真0無5真1*#6假$void main(void) int i, j, x=0 ; for (i=0 ; i2; i+) x+; for (j=
21、0;j=3; j+) if ( j%2 ) continue; x+; x+; cout“x=“ xendl; jj%2xi=0 i2 第一次jj%2xi=1 i2 第二次i=2 i2 終了輸出:x=80假21真22假33真3440假61真62假73真748void main(void ) int k=0; char c=A; do switch (c+) case A: k+; break; case B: k-; case C: k+=2; break; case D: k=k%2; continue; case E: k=k*10; break; default: k=k/3; k+;
22、while (cG); cout“k= kendl; c+ck輸出:k=4A真B2B真C4C真D7D真E1E真F11F假G4總結(jié):在循環(huán)體中,break從循環(huán)體內(nèi)跳出循環(huán)體,提早終了循環(huán)。for(. ; . ; . ) . break; .continue:其作用為終了本次循環(huán),即跳過循環(huán)體中下面尚未執(zhí)行的語句,接著進(jìn)展下一次能否執(zhí)行循環(huán)的斷定。for(. ; . ; . ) . continue; .while( . ) . continue; .求素?cái)?shù):只可以被1與本身整除的數(shù)。判別一個(gè)數(shù) t 能否為素?cái)?shù),用2到t-1循環(huán)除。for( i=2; it ; i+) if(t%i=0) bre
23、ak; if (i=t) cout“是素?cái)?shù)。n;else cout=t/2)求范圍內(nèi)的素?cái)?shù)(50100):for(t=50, k=0 ; t=100; t+) for( i=2; it ; i+) if(t%i=0) break; if (i= =t) coutt“ “; k+; if(k%5=0) coutendl; 判別t能否為素?cái)?shù)保證每行輸出5個(gè)數(shù)據(jù)雞兔共有30只,腳共有90只,問雞兔各有多少?void main(void) int i; /i代表雞,那么兔為30-i只 for(i=0; i=15; i+) if(2*i + 4*(30-i)= =90) cout“雞iendl; cou
24、t“兔30-iendl; 一百萬富翁 遇到一陌生人,陌生人找他談一個(gè)換錢的方案,該方案如下:我每天給他十萬元,而他第一天只需給我一分錢,第二天我仍給他十萬元,他給我兩分錢,第三天我仍給他十萬元,他給我四分錢,.,他每天給我的錢是前一天的兩倍,直到滿一個(gè)月30天,百萬富翁很高興,悵然接受了這個(gè)契約。請編寫程序計(jì)算陌生人給百萬富翁多少錢,百萬富翁給陌生人多少錢?利用循環(huán)語句編程,打印以下圖形: * * * * * * * * * * * * * * * *找規(guī)律: 上面四行 行號空格星號131222313404 for(i=0;i0;j-)cout ;for(k=1;k=i+1;k+)cout * ;coutendlendl;行號:i空格:4-i星號:ivoid main(void)int i,j,k;for(i=0;i0;j-)cout ;for(k=1;k=i+1;k+)cout * ;coutendlendl;for(i=0;i0;j-) cout * ;coutendlendl; 打印圖形: * * * * * * * * * * * * * * * * * * * * * * * * 行號空格星號031123215307行號:i空格:3-i星號:2*i+1假設(shè)打印n行行號:0n-1空格:0n-1-i計(jì)算:22
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能硬件銷售提成管理合同
- 2025年度農(nóng)村金融機(jī)構(gòu)協(xié)議存款合同范本(普惠金融版)
- 2025年度農(nóng)村宅基地互換及現(xiàn)代農(nóng)業(yè)示范項(xiàng)目協(xié)議
- 2025年農(nóng)村兄弟分家協(xié)議及遺產(chǎn)分配執(zhí)行方案
- 2025年中空纖維分離膜項(xiàng)目合作計(jì)劃書
- 2025年氫氧化亞鎳合作協(xié)議書
- 四川省R縣民辦幼兒園教育質(zhì)量監(jiān)管存在的問題及對策研究
- Candida glycerinogenes有氧條件下乙醇發(fā)酵的研究
- 2025年金屬氫化物-鎳(MHNI)蓄電池項(xiàng)目合作計(jì)劃書
- 2025年城市市容管理服務(wù)合作協(xié)議書
- 2024年江蘇農(nóng)林職業(yè)技術(shù)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 腰脊神經(jīng)后支痛課件
- 《商務(wù)數(shù)據(jù)分析》 課件 項(xiàng)目一 商務(wù)數(shù)據(jù)分析認(rèn)知
- 加強(qiáng)鍛煉預(yù)防疾病主題
- 心衰合并胸腔積液的護(hù)理Ppt
- 2023學(xué)年、2024學(xué)年臨平區(qū)公辦學(xué)校校方責(zé)任險(xiǎn)投保采購項(xiàng)目招標(biāo)文件
- 物流風(fēng)險(xiǎn)管理與應(yīng)對策略
- 2024家政行業(yè)現(xiàn)狀分析
- 英漢互譯單詞練習(xí)打印紙
- 冠狀動(dòng)脈粥樣硬化性心臟病患者藥物治療管理路徑專家共識2023版解讀
- ZJ50鉆機(jī)用戶手冊
評論
0/150
提交評論