




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第3章程序控制主要內(nèi)容3.1順序結(jié)構(gòu)3.2選擇結(jié)構(gòu)3.3循環(huán)結(jié)構(gòu)3.4跳轉(zhuǎn)結(jié)構(gòu)3.5應(yīng)用實(shí)例3.1順序結(jié)構(gòu)自上而下輸入半徑計(jì)算圓的面積輸出圓面積IPO結(jié)構(gòu)3.2選擇結(jié)構(gòu)3.2.1if語句if語句的兩種基本形式:(1)if(表達(dá)式)語句(2)if(表達(dá)式)語句1else語句2【例】使用if語句實(shí)現(xiàn)考試成績判定。#include<iostream>usingnamespacestd;intmain(){ intscore;//考試成績
cout<<"請(qǐng)輸入考試成績:"; cin>>score; if(score>=60) { cout<<"及格!"; } else { cout<<"不及格!\n"; } return0;}if多分支結(jié)構(gòu)格式:if(條件1)語句1elseif(條件2)語句2elseif(條件3)語句3…elseif(條件n)語句n[else語句n+1]例:輸入一個(gè)0~100分范圍內(nèi)的一個(gè)成績,顯示相應(yīng)的等級(jí):
90~100—優(yōu)秀;
80~89—良好;
70~79—中等;
60~69—及格;
60分以下—不及格。#include<iostream>usingnamespacestd;intmain(){floatscore;cout<<"請(qǐng)輸入成績:";
cin>>score;if(score<0||score>100)cout<<"成績必須在0~100之間!";
elseif(score<60)cout<<"不及格"<<endl;elseif(score<70)cout<<"及格"<<endl;elseif(score<80)cout<<“中等"<<endl;elseif(score<90)cout<<“良好"<<endl;elsecout<<“優(yōu)秀"<<endl;return0;}3.2.2嵌套if語句intscore=-50;if(score>=0) if(score<60)cout<<"不及格!";else cout<<"非法數(shù)據(jù)!";intscore=-50;if(score>=0){ if(score<60) cout<<"不及格!";}else cout<<"非法數(shù)據(jù)!";intscore=-50;if(score>=0){ if(score<60) cout<<"不及格!"; else cout<<"非法數(shù)據(jù)!";}解釋一:解釋二:if~else配對(duì)原則:缺省{}時(shí),else總是和它上面、離它最近的、未配對(duì)的if配對(duì)if(……)if(……)if(……)else…...else…...else…...例:if() if()語句1else if()語句2else語句3 {if()語句1}當(dāng)if和else數(shù)目不同時(shí),可以加花括號(hào)來確定配對(duì)關(guān)系。例考慮下面程序輸出結(jié)果:
intmain(){intx=100,a=10,b=20;intv1=5,v2=0;if(a<b)if(b!=15)if(!v1)x=1;elseif(v2)x=10;x=-1;cout<<x;return0;}結(jié)果:-1程序1:程序2:
if(x<0)if(x>=0)y=-1;if(x>0)y=1;elseelsey=0;if(x==0)y=0;elsey=-1;elsey=1;程序3:程序4:y=-1;y=0;if(x!=0)if(x>=0)if(x>0)y=1;if(x>0)y=1;elsey=0;elsey=-1;正確正確-1(x<0)例:有一個(gè)函數(shù)y=0(x=0),編一程序,輸入一個(gè)x值,輸出y值。1(x>0)3.2.3條件運(yùn)算符?:的替代條件運(yùn)算符的語法為:
表達(dá)式1?表達(dá)式2:表達(dá)式3運(yùn)算規(guī)則:先計(jì)算表達(dá)式1的值,如果表達(dá)式1的值為true,那么表達(dá)式2被求值;否則表達(dá)式3被求值。整個(gè)條件表達(dá)式的值就是被求值表達(dá)式(表達(dá)式2或表達(dá)式3)的值。3.1.3條件運(yùn)算符?:的替代doublescore=60.1;boolisPassed=scor<60?false:true;doublescore=60.1;boolisPassed;if(score<60)isPassed=false;elseisPassed=true;等同于3.2.4switch語句switch語句的一般形式為:switch(表達(dá)式){case整型常量表達(dá)式1: 語句組1case整型常量表達(dá)式2: 語句組2 ...case整型常量表達(dá)式n: 語句組ndefault: 語句組n+1}=常量1=常量2=常量n表達(dá)式語句組1語句組2語句組n語句組n+1yyynnn【例3-4】根據(jù)考試成績的等級(jí)輸出百分制分?jǐn)?shù)段。#include<iostream>usingnamespacestd;intmain(){ chargrade; cin>>grade; switch(grade) { case'A':cout<<"80~100\n"; case'B':cout<<"70~79\n"; case'C':cout<<"60~69\n"; case'D':cout<<"<60\n"; default:cout<<"error\n"; } return0;}【例3-3】根據(jù)考試成績的等級(jí)輸出百分制分?jǐn)?shù)段。#include<iostream>usingnamespacestd;intmain(){ chargrade; cin>>grade; switch(grade) { case'A':cout<<"80~100\n";break; case'B':cout<<"70~79\n";break; case'C':cout<<"60~69\n";break; case'D':cout<<"<60\n";break; default:cout<<"error\n";break; } return0;}幾點(diǎn)說明(1)default語句是可缺省的。(2)switch后面括號(hào)中的表達(dá)式只能是整型、字符型或枚舉型表達(dá)式。(3)在各個(gè)分支中的break語句起著退出switch語句的作用。(4)case語句起標(biāo)號(hào)的作用。標(biāo)號(hào)不能重名。(5)可以使多個(gè)case語句共用一組語句序列。(6)各個(gè)case(包括default)語句的出現(xiàn)次序可以任意。(7)每個(gè)case語句中不必用{},而整體的switch結(jié)構(gòu)一定要寫一對(duì)花括號(hào){}。(8)switch結(jié)構(gòu)也可以嵌套。例intmain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}cout<<“a=”<<a<<“,b=”<<b;return0;}運(yùn)行結(jié)果:a=2,b=1思考用switch語句編程,輸入一個(gè)百分制成績,要求輸出成績等級(jí)'A','B','C','D','E'。90分以上為'A',80~89分為'B',70~79分為'C',60~69分為'D',60分以下為'E'。intmain(){ inta; cout<<"請(qǐng)輸入該學(xué)生的成績:"<<endl; cin>>a; switch(a/10) { case6:cout<<“gradeisD.\n";break; case7:cout<<"gradeisC.\n";break; case8:cout<<"gradeisB.\n";break; case9:case10:cout<<"gradeisA.\n";break; default:cout<<"gradeisE.\n"<<endl; } return0;}【例3-5】根據(jù)年份和月份計(jì)算對(duì)應(yīng)的滿月天數(shù)#include<iostream>usingnamespacestd;intmain(){ intyear,month,days; cout<<"請(qǐng)輸入年份:"; cin>>year; cout<<"請(qǐng)輸入月份:"; cin>>month; switch(month) { case1:case3:case5:case7:case8:case10:case12: days=31;break; case4:case6:case9:case11: days=30;break; case2:if((year%4==0&&(year%100!=0)||(year%400==0)))days=29; elsedays=28; break; } cout<<"對(duì)應(yīng)滿月有"<<days<<"天"<<endl; return0;}3.3.1用while語句構(gòu)成循環(huán)
while語句首先對(duì)表達(dá)式的值進(jìn)行判斷,當(dāng)表達(dá)式為true時(shí),循環(huán)執(zhí)行其中的內(nèi)嵌語句(即循環(huán)體);當(dāng)表達(dá)式的值為false時(shí),不再執(zhí)行循環(huán)體(退出循環(huán)),并從緊跟在while循環(huán)后的第一條語句開始執(zhí)行。其語法格式如下:
while(表達(dá)式)語句3.3循環(huán)結(jié)構(gòu)【例】用while語句計(jì)算1+2+3+…+100。#include<iostream>usingnamespacestd;intmain(){ intsum=0;inti=1; while(i<=100) { sum=sum+i; i++; } cout<<"sum="<<sum<<endl; return0;}特點(diǎn):先判斷表達(dá)式,后執(zhí)行循環(huán)體說明:循環(huán)體有可能一次也不執(zhí)行;循環(huán)體可為任意類型語句;循環(huán)體如果包含一個(gè)以上的語句,應(yīng)該用{}下列情況,退出while循環(huán);條件表達(dá)式不成立(為零);循環(huán)體內(nèi)遇break,return,goto;循環(huán)體中一般有使循環(huán)趨向結(jié)束的語句,也有無限循環(huán),
如while(1)
循環(huán)體;3.3.2do-while語句在while循環(huán)中,循環(huán)條件的測試是在循環(huán)開始處進(jìn)行的。而do-while循環(huán)卻不同,它對(duì)循環(huán)條件的檢查放在了循環(huán)的尾部。這就意味著,do-while的循環(huán)體至少執(zhí)行一次。具體語法格式如下:
do
語句
while(表達(dá)式);特點(diǎn):先執(zhí)行循環(huán)體,后判斷表達(dá)式說明:至少執(zhí)行一次循環(huán)體do~while可與while相互轉(zhuǎn)化intmain(){inti,sum=0;i=1;do{sum+=i; i++;}while(i<=100);cout<<sum;return0;}intmain(){inti,sum=0;i=1;while(i<=100){sum=sum+i;i++;}cout<<sum;return0;}3.3.3for循環(huán)for語句的一般形式是: for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語句它的執(zhí)行過程如下:
①求解表達(dá)式1。
②求解表達(dá)式2,若其值為true,則執(zhí)行for語句中指定的內(nèi)嵌語句(即循環(huán)體),然后執(zhí)行第③步;若值為false,則結(jié)束循環(huán),轉(zhuǎn)到第⑤步。
③求解表達(dá)式3。
④轉(zhuǎn)回上面第②步驟繼續(xù)執(zhí)行。
⑤循環(huán)結(jié)束,執(zhí)行緊接for語句后面的其他語句。3.3.3for循環(huán)說明
for語句中expr1,expr2,expr3類型任意,都可省略,但他們之間分號(hào);不可省無限循環(huán):for(;;)
for語句可以轉(zhuǎn)換成while結(jié)構(gòu)【例】用for語句計(jì)算1+2+3+…+100。
#include<iostream>usingnamespacestd;intmain(){ inti,sum; for(i=1,sum=0;i<=100;i++) sum+=i; cout<<"sum="<<sum<<endl; return0;}3.3.4循環(huán)的嵌套例:寫出下列程序的運(yùn)行結(jié)果。#include<iostream>usingnamespacestd;voidmain(){inti(1),a(0);for(;i<=5;i++){do{i++;a++;}while(i<3);i++;}cout<<a<<","<<i<<endl;}運(yùn)行結(jié)果:3,8【例】利用循環(huán)嵌套打印九九乘法表。
99*=81第1個(gè)乘數(shù)i(1~9)第1個(gè)乘數(shù)j(1~9)3.4跳轉(zhuǎn)結(jié)構(gòu)3.4.1break語句兩種用途:(1)用在switch語句中終止某個(gè)case語句。(2)立即結(jié)束當(dāng)前所在層的循環(huán),程序從循環(huán)語句后面的第一個(gè)語句繼續(xù)執(zhí)行。3.4.1break語句功能:在循環(huán)語句和switch語句中,終止并跳出循環(huán)體,即提前結(jié)束循環(huán),接著執(zhí)行循環(huán)下面的語句。說明:break只能終止并跳出最近一層的結(jié)構(gòu)break不能用于循環(huán)語句和switch語句之外的任何其它語句之中。
expr……break;……假(0)真(非0)whiledo……break;…...expr假(0)真(非0)whileexpr2……break;…...假(0)真(非0)forexpr1expr3switchexpr語句組1break;語句組2break;語句組nbreak;語句組break;…...const1const2constndefaultcase【例】青蛙與井——用break終止所在循環(huán)。井深5米,青蛙每次跳2米高,它有兩次機(jī)會(huì),每次可以連跳兩回,兩回所跳的高度可以累加,但跳不出來就會(huì)被清零,請(qǐng)問青蛙能否跳出深井。#include<iostream>usingnamespacestd;intmain(){ intheight; for(inttimes=0;times<2;times++) { intround=0; height=0; while(1) { height+=2; cout<<"當(dāng)前高度:"<<height<<"米"<<endl; if(++round==2)break; } } return0;}3.4.2continue語句功能:結(jié)束本次循環(huán),跳過循環(huán)體中尚未執(zhí)行的語句,進(jìn)行下一次是否執(zhí)行循環(huán)體的判斷。僅用于循環(huán)語句中。expr……continue;……假(0)真(非0)while真(非0)do……continue;…...expr假(0)whileexpr2……continue;…...假(0)真(非0)forexpr1expr3【例】漁夫的新一周——用continue終止本次循環(huán)。#include<iostream>usingnamespacestd;intmain(){ intday; for(day=1;day<=7;day++) { if(day%3) continue; cout<<"第"<<day<<"天打魚!\n"; } return0;}3.4.3goto語句功能:無條件轉(zhuǎn)移語句說明(語句標(biāo)號(hào)):不能用整數(shù)作標(biāo)號(hào);只能出現(xiàn)在goto所在函數(shù)內(nèi),且唯一;限制使用goto語句;goto語句一般格式:
goto語句標(biāo)號(hào);
….…..標(biāo)號(hào):語句;【例】用if和goto語句構(gòu)成循環(huán),求1+2+3+……+100intmain(){i=1;
sum=0;loopLabel: //標(biāo)號(hào),其命名遵從標(biāo)識(shí)符命名規(guī)則sum+=i++;if(i<=100)gotoloopLabel;
cout<<sum<<endl;
return0;}3.4.4return語句return語句用來明確地從一個(gè)函數(shù)中返回。ANSIC++標(biāo)準(zhǔn)將它歸入跳轉(zhuǎn)結(jié)構(gòu),因?yàn)樗钩绦蚍祷氐剑刺氐剑┱{(diào)用函數(shù)的地方繼續(xù)執(zhí)行。return帶回的數(shù)值即為函數(shù)的返回值。3.5應(yīng)用實(shí)例【例】百錢買百雞“今雞翁一值錢五,雞母一值錢三,雞雛三值錢一。凡百錢買雞百只,問:雞翁、母、雛各幾何?”第一次改進(jìn)#include<iostream>usingnamespacestd;intmain(){
intcocks,hens,chickens;
cout<<"公雞\t母雞\t小雞\n";
for(cocks=0;cocks<=20;cocks++)
for(hens=0;hens<=33;hens++)
{chickens=100-cocks-hens;
if(chickens%3==0&&5*cocks+3*hens+chickens/3==100)
cout<<cocks<<"\t"<<hens<<"\t"<<chickens<<endl;
} return0;}#include<iostream>usingnamespacestd;intmain(){intcocks,hens,chickens;cout<<"公雞\t母雞\t小雞\n";for(cocks=0;cocks<=14;cocks++){ if((100-7*cocks)%4==0) {hens=(100-7*cocks)/4; chickens=100–cocks-hens; if(chickens%3==0) cout<<cocks<<"\t"<<hens<<"\t"<<chickens<<endl; }}return0;}3.5應(yīng)用實(shí)例
while(fabs(t)>1e-8){pi=pi+t;n=n+2;s=-s;t=s/n;}8#include<iostream>#include<cmath>#include<iomanip>usingnamespacestd;intmain(){ doubles=0,t=1;
longn=1; intsign=1; while(fabs(t)>1e-8)
{ s+=t;
n+=2; sign*=-1; t=sign/double(n);
} s*=4;cout<<"π="<<setiosflags(ios::fixed)<<setprecision(8)<<s<<endl; return0;}3.5 應(yīng)用實(shí)例【例】判斷正整數(shù)是否為素?cái)?shù)。#include<iostream>#include<cmath>usingnamespacestd;intmain(){ inti,b,x; cout<<"請(qǐng)輸入一個(gè)正整數(shù):\n"; cin>>x; b=sqrt(x);
for(i=2;i<=b;i++) if(x%i==0) break; if(i>=b+1) cout<<x<<"是素?cái)?shù)"; else cout<<x<<"不是素?cái)?shù)"; return0;}常用的I/O流控制符控制符含義dec數(shù)值數(shù)據(jù)采用十進(jìn)制表示hex數(shù)值數(shù)據(jù)采用十六進(jìn)制表示oct數(shù)值數(shù)據(jù)采用八進(jìn)制表示setbase(n)設(shè)置整數(shù)的基數(shù)為n(n只能是16,10,8之一)setiosflags(ios::uppercase)十六進(jìn)制數(shù)大寫輸出setiosflags(ios::lowercase)十
溫馨提示
- 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è)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 2025年中國黃銅閥芯市場調(diào)查研究報(bào)告
- 仿制抗抑郁藥行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 2025年中國高純沒食子酸市場調(diào)查研究報(bào)告
- 2025年中國高壓鈉燈用電感鎮(zhèn)流器市場調(diào)查研究報(bào)告
- 定制化減肥餐企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 女士服裝企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 衛(wèi)生用紙制品企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 鞣劑3N企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報(bào)告
- 2025年中國腳指甲鉗市場調(diào)查研究報(bào)告
- 江蘇省2024-2025年跨地區(qū)職業(yè)學(xué)校職教高考一輪聯(lián)考(機(jī)械專業(yè)綜合理論試卷含答案)
- 2024年事業(yè)單位租車服務(wù)滿意度調(diào)查及改進(jìn)協(xié)議3篇
- 露天礦邊坡穩(wěn)定課件所有章節(jié)整合
- 運(yùn)用PDCA提高吞咽障礙患者護(hù)理措施落實(shí)率
- 《法學(xué)概論》課程教學(xué)大綱
- JGJ-T188-2009施工現(xiàn)場臨時(shí)建筑物技術(shù)規(guī)范
- 教師資格考試高級(jí)中學(xué)美術(shù)學(xué)科知識(shí)與教學(xué)能力試題與參考答案(2024年)
- TGDCMA 022-2024 信用園區(qū)評(píng)價(jià)規(guī)范
- 以諾書-中英對(duì)照
- 安徽法院聘用制書記員招聘真題
- 主題班會(huì):小學(xué)生交通安全教育
評(píng)論
0/150
提交評(píng)論