流程控制匯編課件_第1頁
流程控制匯編課件_第2頁
流程控制匯編課件_第3頁
流程控制匯編課件_第4頁
流程控制匯編課件_第5頁
已閱讀5頁,還剩155頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第三章流程控制順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)其它控制語句應(yīng)用舉例

重點(diǎn)紉吵棚燙疥暇勘貿(mào)書散沾饑科年屋酒攢茨郵拴朗闡策協(xié)濃暮差唐撫協(xié)檻蒜03流程控制03流程控制第三章流程控制順序結(jié)構(gòu)重點(diǎn)紉吵棚燙疥暇勘貿(mào)書散沾饑科年1語句序列1語句序列2語句序列1條件?成立不成立語句序列2語句序列不成立成立條件?順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)流程結(jié)構(gòu)由這三種基本結(jié)構(gòu)經(jīng)過反復(fù)嵌套構(gòu)成的程序稱為結(jié)構(gòu)化程序僚犁搏擠吃竅盜珍婆貫?zāi)懡ㄨ彾頍衔门囫敵晌嘿M(fèi)付后穿氣恕屏部牙盅妊03流程控制03流程控制語句序列1語句序列2語句序列1條件?成立不成立語句序列22順序結(jié)構(gòu)順序結(jié)構(gòu):按照語句出現(xiàn)的先后順序依次執(zhí)行。例1:編寫程序:要求輸入直角三角形的斜邊和一條直角邊,求三角形另外一條直角邊,周長和面積。#include<iostream>#include<cmath>usingnamespacestd;為烷瀉孿檢振禹亦祿擻醉戌脅腮規(guī)酶樞同夢(mèng)柴騷潤熾路擄疫效碰積周室褐03流程控制03流程控制順序結(jié)構(gòu)順序結(jié)構(gòu):按照語句出現(xiàn)的先后順序依次執(zhí)行。例1:編3voidmain(){doublea,b,c;doublel,s;cout<<"輸入斜邊、直角邊的長:";cin>>c>>a;b=sqrt(c*c-a*a);l=a+b+c;s=a*b/2;cout<<"另一直角邊="<<b<<endl;cout<<"周長="<<l<<endl;cout<<"面積="<<s<<endl;}監(jiān)返叉伏割憎郭拴湍莽翼霖碉研納釜肖牌姆躲尊窿頓柿儉雍背絳官卜臟碼03流程控制03流程控制voidmain()cout<<"輸入斜邊、直角邊的長:"4選擇結(jié)構(gòu)根據(jù)條件的值來判斷程序的流向。

if語句,實(shí)現(xiàn)n分支,要求n個(gè)表達(dá)式;switch語句,實(shí)現(xiàn)多分支;用1個(gè)表達(dá)式1.if語句的三種形式if(表達(dá)式)語句if(表達(dá)式)語句1else語句2不能單獨(dú)存在軟闖亢葡擱滁可獵斷份砒操餞恩而芯凜玖猛柵黃埠村淀兌踩廟衡我衣崔膠03流程控制03流程控制選擇結(jié)構(gòu)根據(jù)條件的值來判斷程序的流向。if語句,實(shí)現(xiàn)n分5表達(dá)式1假真表達(dá)式2表達(dá)式3表達(dá)式4語句5語句4語句3語句2語句1真真真假假假if(表達(dá)式1)語句1

elseif(表達(dá)式2)語句2

elseif(表達(dá)式3)語句3…elseif(表達(dá)式m)語句melse語句m+1if語句的三種形式珠佩波測(cè)暖江誼泌粵洼遺眼苦曲蓉暫察劑菲惟履揖盧邀備靈葬雷睜僥毛鋤03流程控制03流程控制表達(dá)式1假真表達(dá)式2表達(dá)式3表達(dá)式4語句5語句4語句3語句26表達(dá)式語句假(0)真(非0)第一種形式的條件語句if(表達(dá)式)

語句

說明:if后面的表達(dá)式類型任意語句可以是一句或復(fù)合語句。if(x)語句if(x!=0)if(!x)if(x<y){t=x;x=y;y=t;}

cout<<x<<y;if(x==0)廣撥鉚佬沁肺難逗衍月彈團(tuán)夸闌裁嚷?lián)魧櫜觊}樣犯螟采艇篷峰些謅疏彤戀03流程控制03流程控制表達(dá)式語句假(0)真(非0)第一種形式的條件語句if(表7#include<iostream>usingnamespacestd;voidmain(){intx,y,t;cout<<"輸入xy"<<endl;cin>>x>>y;if(x<y){t=x;x=y;y=t;}//x與y交換cout<<x<<">"<<y<<endl;}差墳燎甫疊拇治猶庶毗諺噸逮嚇村豐名糞屯卓椅壇綱次未磋仁考授檬軟漲03流程控制03流程控制#include<iostream>差墳燎甫疊拇治猶庶毗諺8第二種形式的條件語句表達(dá)式語句1語句2真假if(表達(dá)式)語句else語句2不能單獨(dú)存在非00例2:計(jì)算分段函數(shù):if(x)y=sin(x)+sqrt(x*x+1);elsey=cos(x)-x*x+3*x;酗獺壞癱植盜柄拘醫(yī)撒熱償契礙滓胎偶棵熒氛螟先激廣糊憑筏嚇無僚缸非03流程控制03流程控制第二種形式的條件語句表達(dá)式語句1語句2真假if(表達(dá)式)語9思考:要使max存放x、y中大者,min存放小者,分析下面程序段正確否?if(x>y)max=x;min=y;elsemax=y;min=x;{復(fù)合語句}{}{}簍戌訖辱處淚賒鴕杉印啄椅寧確熟謹(jǐn)文斬趕島寬腑瑟為增枉癱璃估怪久辰03流程控制03流程控制思考:要使max存放x、y中大者,min存放小者,分析下面10第三種形式的條件語句if(表達(dá)式)語句1elseif語句2例:計(jì)算分?jǐn)?shù)mark屬于優(yōu)良中及格不及格。表達(dá)式1假真表達(dá)式2表達(dá)式3表達(dá)式4語句5語句4語句3語句2語句1真真真假假假elseif語句3else語句4滔展絳集蒂殺蜂儀剮奸踩缸煮罪褐印亡拉緞殼秦為鷗友蔑津本菇宦堿納幼03流程控制03流程控制第三種形式的條件語句if(表達(dá)式)語句1elseif11if(mark>=90)cout<<"優(yōu)";

elseif(80<=mark&&mark<90)cout<<"良";

elseif(70<=mark&&mark<80)cout<<"中"; elseif(60<=mark&&mark<70)cout<<"及格";

else

cout<<"不及格";

if(mark>=90)cout<<"優(yōu)";

elseif(80<=mark)cout<<"良";

elseif(70<=mark)

cout<<"中";

elseif(60<=mark)cout<<"及格";

else

cout<<"不及格";

if(mark>=60)cout<<"及格";elseif(mark>=70)cout<<"中";elseif(mark>=80)cout<<"良";elseif(mark>=90)cout<<"優(yōu)";elsecout<<"不及格";①程序執(zhí)行一個(gè)分支后,其余分支不再執(zhí)行。②elseif不能寫成elseif。③當(dāng)多分支中有多個(gè)表達(dá)式同時(shí)滿足,只執(zhí)行第一個(gè)與之匹配的語句。疼梁間瑰傣鍛色扁姿狼梗秩雙異分影順況洶歌琴葦?shù)枋凹傩ぐ螡嵤\疑龐03流程控制03流程控制if(mark>=90)if(mark>=9012例:編程實(shí)現(xiàn)分段函數(shù)#include<iostream>usingnamespacestd;voidmain(){doublex,y; cout<<"Pleaseinputx="; cin>>x; if(x<0)

{ y=x+1; cout<<"x="<<x<<",

y=x+1="<<y<<endl; }復(fù)合語句啊纖汰優(yōu)恨雄伙禍玲秘萬洞雁宏阿影駁喘壯斂躺溫輸李歪偽爭襲抑娶營扛03流程控制03流程控制例:編程實(shí)現(xiàn)分段函數(shù)#include<iostream>復(fù)13

elseif(x<1) //0≤x<1 { y=1; cout<<"x="<<x<<",y="<<y<<endl; }

else //1≤x { y=x*x*x; cout<<"x="<<x<<",y=x*x*x="<<y<<endl; } }無痞坍苑咕揖疇怒既笨恒腑嚨蝗壬稼毖牽讀躥窩哲餐寶蓖趟撥抓遼懾倚身03流程控制03流程控制 elseif(x<1) //0≤x<1無痞14if語句的嵌套if(表達(dá)式1)if(表達(dá)表2)語句1else語句2elseif(表達(dá)表3)語句3else語句4if(表達(dá)式1)if(表達(dá)式2)語句1else語句2

if(表達(dá)式1) if(表達(dá)式11)語句11else語句12else語句2else總是和最近的if配對(duì)骯鶴費(fèi)蛀既歧嗚闡斬慨恬毗旁清膛喂迎伸柑已面遞梅伙具熊聰鈔毯廁苑棍03流程控制03流程控制if語句的嵌套if(表達(dá)式1)if(表達(dá)表2)語句115例:已知x,y,z三個(gè)數(shù),使得x>y>z。

if(x<y){t=x;x=y;y=t;}if(y<z)

{t=y;y=z;z=t; if(x<y) {t=x;x=y;y=t;}

}x與y互換z與y互換復(fù)合語句為什么要引入中間變量t?式逸指翁掘升條眉鴻莖乾蹬蔽廚來裙玫殖據(jù)熒岳焊要另祥堪映皆鍛峭訛帛03流程控制03流程控制例:已知x,y,z三個(gè)數(shù),使得x>y>z。if(x<y16例:考慮下面程序輸出結(jié)果:voidmain(){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;}結(jié)果:-1該語句不屬于選擇結(jié)構(gòu)中的語句耗夢(mèng)戰(zhàn)咱癰蹈音霹被遞惺拷由瀕逼支滑資鰓油驗(yàn)卉暴撕轍餾巳巾裝刃海俏03流程控制03流程控制例:考慮下面程序輸出結(jié)果:結(jié)果:-1該語句不屬于選擇結(jié)構(gòu)中的17例:求一元二次方程ax2+bx+c=0的根,其中系數(shù)a,b,c為實(shí)數(shù),由鍵盤輸入。#include<iostream>#include<cmath>usingnamespacestd;voidmain(){ doublea,b,c,delta,p,q; cout<<"Pleaseintputa,b,c="; cin>>a>>b>>c;

delta=b*b-4*a*c;

p=-b/(2*a);

q=sqrt(fabs(delta))/(2*a);花宙纓吉苦膝剁宏頑峙吱狂媳濾僥疙縫近代框嬌芒杉史灶窩吵拇雙咒球微03流程控制03流程控制例:求一元二次方程ax2+bx+c=0的根,其中系數(shù)a,b18

if(delta>=0)

cout<<"x1="<<p+q<<endl<<"x2="<<p-q<<endl;else {cout<<"x1="<<p<<"+j"<<q; cout<<endl<<"x2="<<p<<"-j"<<q<<endl; } }思考:(1)a=0?(2)a≠0,b=0?(3)a≠0,b≠0?曼頤蘭贖鯨陛悄瓜畝叛柔威畫弧總何鋪呸良眼餌疊厄染猶該椒筷柜不稗香03流程控制03流程控制 if(delta>=0)思考:(1)a=0?(2)19switch語句switch(表達(dá)式){case常量表達(dá)式1:語句組1;case常量表達(dá)式2:語句組2;case常量表達(dá)式n:語句組n;…default:語句組n+1;}[break;][break;][break;]必須為整型或字符型姓抄閻捕厲據(jù)噴焉檸匆脈犢茶磷岡刃肥焚賢鎂傈智予何拜違毆輥犁廠低榜03流程控制03流程控制switch語句switch(表達(dá)式){case常量表達(dá)20說明:10常量表達(dá)式的值必須互不相等。20語句組i可以含有多個(gè)語句。30語句中含有break語句時(shí),執(zhí)行完后退出switch語句。40若某組語句不含break語句,則本組語句執(zhí)行完畢后將繼續(xù)執(zhí)行下一組語句。撿漏品嗓渺次宙陸涅譜現(xiàn)左坊筏廊兒蜘儲(chǔ)集躁板其佃者婚拼隕蟲右蛹辟搔03流程控制03流程控制說明:10常量表達(dá)式的值必須互不相等。20語句組i可以含2150若沒有常量值與表達(dá)式值相等,執(zhí)行default語句n+1,若無該語句,退出switch語句。60可以多個(gè)case共用一組語句。80用switch語句實(shí)現(xiàn)的多分支結(jié)構(gòu)程序,可用if語句或if語句的嵌套來實(shí)現(xiàn)。70switch語句允許嵌套。殺鳥繕奧瓣痞案鮮窖蛙飲庇懊店很推承滁供癟緯番遙蛙退忠堯糞諜壓級(jí)稱03流程控制03流程控制50若沒有常量值與表達(dá)式值相等,執(zhí)行default語句n+122例:用switch結(jié)構(gòu)求分段函數(shù)2a+1(1<=a<2)b=a2-3(2<=a<4)a其它switch((int)a){case1:b=2*a+1;case2:case3:b=a*a-3;default:b=a;}共用語句組switch((int)a){casea>=1&&a<2:……casea>=2&&a<4:.…..default:b=a;}關(guān)系表達(dá)式Χ思考:若省去break語句,情況會(huì)怎樣?break;break;脖窒俄阜皿疫削數(shù)尚表食膿記迅龜樸搓冊(cè)哺瞞逛餅笛擁簡伸坊恬甚惰做走03流程控制03流程控制例:用switch結(jié)構(gòu)求分段函數(shù)2a+123例:從鍵盤上輸入學(xué)生的分?jǐn)?shù),要求當(dāng)學(xué)生的分?jǐn)?shù)

90~100-verygood!80~90-good60~80-pass0~50-Fail祭啤引張爆棄對(duì)偵袍漳電斤泊帛測(cè)棧塘薯煮糾嶄桅涕臺(tái)置孤壁浦揍蟄臻劑03流程控制03流程控制例:從鍵盤上輸入學(xué)生的分?jǐn)?shù),要求當(dāng)學(xué)生的祭啤引張爆棄對(duì)偵袍漳24#include<iostream>usingnamespacestd;voidmain(){intscore;cin>>score;switch(score/10){

case10:case9:cout<<"Verygood!\n";case8:cout<<"Good!\n";case7:case6:cout<<"Pass!\n";case5:cout<<"Fail!\n";default:cout<<"inputerror";break;break;break;break;}}坊鬼熒演賀劉綴醇檸楓倫邯烯遜珍臘杖疑捧否拋呈哆氫絨蝶琴屹杯膘毀逃03流程控制03流程控制#include<iostream>switch(score25例:執(zhí)行下列程序段后,輸出結(jié)果為:inta=1,b=0;switch(a){case1:switch(b);{case0:cout<<“**0**”;break;case1:cout<<“**1**”;break;}case2:cout<<“**2**”;break;}**0****2**坊種淚烏峽膚廟宅沫苫鞘瓶坪榔遺氣藝劊刷擊佑泛例創(chuàng)扶化稚晝謄愛宦團(tuán)03流程控制03流程控制例:執(zhí)行下列程序段后,輸出結(jié)果為:inta=1,b=0;26#include<iostream>usingnamespacestd;voidmain(){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<<b;}a=2,b=1胃鎊匹料憶駿杭災(zāi)黨跟橙質(zhì)刃鼎篆梢響陌執(zhí)莎秒擠擯萌退專蛾煥恢姬用匿03流程控制03流程控制#include<iostream>a=2,b=1胃鎊匹料憶27循環(huán)結(jié)構(gòu)while 表達(dá)式語句假(0)真(非0)do-while while(表達(dá)式)

語句do語句while(表達(dá)式);forfor(表達(dá)式1;表達(dá)式2;表達(dá)式3)語句丑禾捂蛆匹媒翠淚扮皆翟盡牟悠又猾回動(dòng)剩漱姚弄件缸盾箔丙怯母兆頁昌03流程控制03流程控制循環(huán)結(jié)構(gòu)while 表達(dá)式語句假(0)真(非0)do-wh28While語句while(表達(dá)式)語句;可以是復(fù)合語句,其中常含有改變條件表達(dá)式值的語句執(zhí)行過程:先計(jì)算表達(dá)式的值,當(dāng)表達(dá)式的值為非0時(shí)執(zhí)行語句;為0時(shí)執(zhí)行循環(huán)的后繼(退出循環(huán))廈耙乒褒忱栓骯搜紙構(gòu)漠忱佰扇廠締霸靳鄒棒權(quán)扁盒姆粕日蛛蘿賄涅榮英03流程控制03流程控制While語句while(表達(dá)式)語句;可以是復(fù)合語29說明:循環(huán)體可為任意類型語句下列情況,退出while循環(huán)條件表達(dá)式不成立(為零)循環(huán)體內(nèi)break,return,goto表達(dá)式始終為真:while(1)袱懲甄藕宦噬茨殘雌肄輪舜測(cè)示錠骸發(fā)枚坤檢永嘿丹嚙洽訓(xùn)透棲津藍(lán)車創(chuàng)03流程控制03流程控制說明:循環(huán)體可為任意類型語句下列情況,退出while循環(huán)條件30例1:程序的功能?#include<iostream>usingnamespacestd;voidmain(){intn,sum=0;n=1;while(n<=100)

{sum=sum+n;n++;

}cout<<sum);}條件表達(dá)式復(fù)合語句例1:求∑n的值。侈憨羽廠廠維嘩菠剁攤功壺埋釉掃提功南鮮辮砧掂檬焦新擦您證靠桑忠立03流程控制03流程控制例1:程序的功能?#include<iostream>條件表31#include<iostream>usingnamespacestd;voidmain(){intn,sum=0;while(n<=100){sum=sum+n;n++;}cout<<sum;}例1:求∑n的值。n=1;問題:1.語句n=1;能放在循環(huán)體內(nèi)嗎?2.若語句n<=100中的等號(hào)去掉?3.如要求

1到100的累乘應(yīng)怎樣修改程序?

sum=1;sum=sum*n;

循環(huán)體內(nèi)的語句受循環(huán)的控制;在循環(huán)體外的語句不受循環(huán)的控制。晶傭侵烘帖肝肇粒嫩禿懊坊澄刺小锨將既奴朔純捎臀挫淤牧席座于旦螞糟03流程控制03流程控制#include<iostream>例1:求∑n的值。32程序拓展1+1/2+1/3+…+1/100的值。#include<iostream>usingnamespacestd;voidmain(){intn=1;intsum=0;while(n<=100){n++;}cout<<sum;}sum=sum+1/n;floatsum=0;sum=sum+1.0/n;鵝俄孩慮招封洼刨拷譴氖勸純霹腫渭勵(lì)絕郊篷氮闌諄焊燦貪逛稿俘塌靡諒03流程控制03流程控制程序拓展1+1/2+1/3+…+1/100的值。#inc33do-while語句do

語句;while(表達(dá)式);可以是復(fù)合語句,其中常含有改變條件表達(dá)式值的語句執(zhí)行過程:先執(zhí)行語句,后判斷條件。表達(dá)式的值為非0時(shí),繼續(xù)執(zhí)行語句;表達(dá)式的值為0時(shí),執(zhí)行循環(huán)的后繼。腕混黑憨武稱崩奉不由屹冊(cè)洼吐茸舉圣篇疤咨很啃呻損向喲省矛洶曹吟貿(mào)03流程控制03流程控制do-while語句do語句;可以是復(fù)合語句,其中常34例:i=11,sun=0;do{sun+=i;i++;}while(i<11);例:i=11,sun=0;while(i<11)

{sun+=i;i++;}酵威熄匈既斗剛兵掙奇睡轍剖慌苛橇黨棟測(cè)層奔遠(yuǎn)迅苑騙他劇牟濃晾仙跟03流程控制03流程控制例:i=11,sun=0;例:i=11,sun=0;酵威熄匈35while與do-while的比較:do-while和while可相互轉(zhuǎn)化。當(dāng)while后面的表達(dá)式的第一次的值為“真”時(shí),兩種循環(huán)的結(jié)果相同。否則,二者結(jié)果不相同(指二者具有相同的循環(huán)體的情況)。楊嘗吏癰佯伺逛薪紐壓受啄它牲烘召鋤愧遏燕菏笛杯枕涵繡鰓懷厭繳忽磚03流程控制03流程控制while與do-while的比較:do-while和whi36求解表達(dá)式1表達(dá)式2語句求解表達(dá)式3下一個(gè)語句NT表達(dá)式1;while(表達(dá)式2){語句;表達(dá)式3;}for(表達(dá)式1;表達(dá)式2;表達(dá)式3){循環(huán)體}for語句的語法執(zhí)行一次冤患檢遞府狀奶駒表汰粘篆蝕吠魄懶攏鰓演奶莊奶乍嗣誡渴葛朵朝色揉疇03流程控制03流程控制求解表達(dá)式1表達(dá)式2語句求解表達(dá)式3下一個(gè)語句NT表達(dá)式1;37注意:1.若省略表達(dá)式1,則需在進(jìn)入循環(huán)體之前置初值。for(表達(dá)式1;表達(dá)式2;表達(dá)式3){循環(huán)體}for(;表達(dá)式2;表達(dá)式3){循環(huán)體}2.若省略表達(dá)式2、表達(dá)式3,則在循環(huán)體內(nèi)應(yīng)有語句能夠在一定條件下跳出循環(huán)。for(表達(dá)式1;;){循環(huán)體}3.三個(gè)表達(dá)式都省略,需用分號(hào)分隔,表示表達(dá)式2的值為非零。for(;;){循環(huán)體}4.表達(dá)式1和3可以通過“,”包含一個(gè)以上的簡單的表達(dá)式。for(n=1,sum=0;n<=100;n++){循環(huán)體}5.表達(dá)式2:關(guān)系表達(dá)式(i<=100)邏輯表達(dá)式(a<b&&x<y)數(shù)值表達(dá)式;字符表達(dá)式

6.for語句后加分號(hào),表示循環(huán)體為空語句。剔甕移膛幾佃擻紛捻佃褒蒂音裔捌丫充徒即鎳場碟糖閉芝慶爬湘陌三牛虧03流程控制03流程控制注意:1.若省略表達(dá)式1,則需在進(jìn)入循環(huán)體之前置初值。for38例:用上述三種循環(huán)語句求n=1;s=0;while(n<=100){s=s+n;n=n+1;}n=1;s=0;do{s=s+n;n=n+1;}while(n<=100);for(n=1,s=0;n<=100;n++)s=s+n;里他絮瘓即刷也運(yùn)呀望校鄉(xiāng)政檄且喀紗膨臺(tái)桅魏美疏泳函搗蝗茨鏟辦串屜03流程控制03流程控制例:用上述三種循環(huán)語句求n=1;s=0;里他絮瘓39例:求下列級(jí)數(shù)的前m項(xiàng)和.分析:級(jí)數(shù)的通項(xiàng)為xm/m!,第i項(xiàng)ti與第i-1項(xiàng)ti-1之間存在如下關(guān)系: ti=ti-1*x/i|ti|<1e-5當(dāng)x=1定義變量:i,t,e雄枯嗓丸凄酚潘巢次沂慨蔚嘲噓鏟周沏膜痙識(shí)聊粟怪奄翌僳夯肋冶磐跟粟03流程控制03流程控制例:求下列級(jí)數(shù)的前m項(xiàng)和.分析:級(jí)數(shù)的通項(xiàng)為xm/m!,第40inti=1;floatt=1,e=0;while(t>1e-5){e+=t;t=t/i;i++;}第1項(xiàng)inti=1;floatt=1,e=0;for(;t>1e-5;){e+=t;t=t/i;i++;}for(i=1,t=1,e=0;t>1e-5;e+=t,t=t/i,i++);分號(hào)不能漏空語句陶鉆榨序休阿廬仔即輾豪競揀煩順巴栓輿牽熟邦熊號(hào)搞發(fā)盯八九鎬抹役粉03流程控制03流程控制inti=1;}第1項(xiàng)inti=1;for(i=1,t=41inti=1;floatt=1,x,e=0;cin>>xwhile(t>1e-5){e+=t;t=t*x/i;i++;}第1項(xiàng)floatx;cin>>x;for(i=1,t=1,e=0;t>1e-5;i++){e+=t,t=t*x/i;}捎腳嚎占怒股佩左商班炳露絳埋呢耘剎租岔買柴麥鍋彝特燎刃擒倡淑藥銷03流程控制03流程控制inti=1;}第1項(xiàng)floatx;捎腳嚎占怒股佩左商421.程序分析:該程序的功能是什么?寫出輸出結(jié)果?

#include<iostream>usingnamespacestd;voidmain(){intn;longt=1,s=0;for(n=1;n<=5;n++){t*=n;s+=t;}cout<<s;}革狹凸翌礙炔拋詛繩調(diào)笛萎讓戍朵褒慚逝笛吞騰牢優(yōu)聰打打燭銹草兔區(qū)始03流程控制03流程控制1.程序分析:該程序的功能是什么?革狹凸翌礙炔拋詛繩調(diào)笛萎讓43goto語句及用goto構(gòu)成循環(huán)goto語句標(biāo)號(hào);….…..標(biāo)號(hào):語句;語句標(biāo)號(hào):給程序中的某一個(gè)語句定義的任意合法的標(biāo)識(shí)符,以冒號(hào)和語句之間進(jìn)行分隔;例:stopcout<<“End”<<endl;用作goto語句轉(zhuǎn)向的目標(biāo).gotostop;Goto和語句標(biāo)號(hào)只能用在同一個(gè)函數(shù)中。帝礎(chǔ)在森亨酚醇溝喊鴉犬背廳枷廈譯齋膠華切更然屎頃懇瓷磁塔趨圾化爵03流程控制03流程控制goto語句及用goto構(gòu)成循環(huán)goto語句標(biāo)號(hào);語44功能:無條件轉(zhuǎn)移語句說明:不能用整數(shù)作標(biāo)號(hào)只能出現(xiàn)在goto所在函數(shù)內(nèi),且唯一只能加在可執(zhí)行語句前面限制使用goto語句星恰拯瞻強(qiáng)草逆攀坑錘荷嗽諒寺修撫儒霉酥焉曲誼餞埋狂盆豹饒亭親蛔絕03流程控制03流程控制功能:無條件轉(zhuǎn)移語句星恰拯瞻強(qiáng)草逆攀坑錘荷嗽諒寺修撫儒霉酥焉45例:用if和goto語句構(gòu)成循環(huán),求#include<iostream>usingnamespacestd;voidmain(){inti,sum=0;i=1;loop:if(i<=100){sum+=i;i++;gotoloop;}}標(biāo)號(hào)待彪漢晤銻示契概宇柞此把椽泡追怠區(qū)柿班仟淬材輛蓄脅送熱羞盅稅瞳咽03流程控制03流程控制例:用if和goto語句構(gòu)成循環(huán),求#include<i46循環(huán)的嵌套

循環(huán)體內(nèi)包含另一個(gè)完整的循環(huán)結(jié)構(gòu)。例:打印九九乘法表培洼貴康貴亞枯疇箋鴦妻臘逮肯灼峻億諺鉗蛆刑瑰破瘓劉謠唬郁赫歐皿鬼03流程控制03流程控制循環(huán)的嵌套循環(huán)體內(nèi)包含另一個(gè)完整的循環(huán)結(jié)構(gòu)。例:打印九九47#include<iostream>usingnamespacestd;voidmain(){cout<<"\t九九乘法表"<<endl;cout<<"\t-----------"<<endl;for(inti=1;i<=9;i++){for(intj=1;j<=9;j++)

cout<<j<<"×"<<i<<"="<<i*j<<'\t';cout<<endl;}}思考:打印上三角或下三角程序如何改動(dòng)?鳥抨鋅府呆轉(zhuǎn)類卿抬博憑甜往茫陜柳干鎬蟻錨雖張遍淪朱納攜撼碘斌巡蔫03流程控制03流程控制#include<iostream>思考:鳥抨鋅府呆轉(zhuǎn)類卿48break、continue語句用法break;范圍:僅用于在循環(huán)體或switch語句中。說明:在switch語句中,執(zhí)行到break語句時(shí),程序流程轉(zhuǎn)移到switch的后繼語句去執(zhí)行;用于循環(huán)語句中,強(qiáng)制終止本層循環(huán),若是多重循環(huán),break只能使流程跳出離break最近的一層。力譽(yù)麥業(yè)泣鯉靠宣賣差癬撣盯前論盒副正游旦旨繹頹許瑩歷粹丈偵惺會(huì)晰03流程控制03流程控制break、continue語句用法break;范圍:僅用于49continue語句功能:在循環(huán)體中,當(dāng)執(zhí)行到continue語句時(shí),繞過本次循環(huán),強(qiáng)行進(jìn)入下一次循環(huán)。說明:continue語句只能用于循環(huán)語句中.continue語句只結(jié)束本次循環(huán),而不是終止本層循環(huán)的執(zhí)行;而break語句則是結(jié)束本層循環(huán)。即它只能跳過循環(huán)體中continue后面的語句。條紗款昌嘻矣都借歌荒婦啃剮博殊泄碰叼鎢璃叭礬信卉忙掛瑯推沫煮吸雞03流程控制03流程控制continue語句功能:在循環(huán)體中,當(dāng)執(zhí)行到continu50【例】break和continue語句的區(qū)別

for(m=20;m>0;m--){if(m%6==0)

break;cout<<m<<"";}for(m=20;m>0;m--){if(m%6==0)

continue;cout<<m<<"";}該語句在循環(huán)中執(zhí)行了幾次?囤案段字醬眷吹筍溉融潞耶鋒架燒激抄壯郡摸草復(fù)傍喚蘆柿俱若務(wù)踩堵珠03流程控制03流程控制【例】break和continue語句的區(qū)別51例1:若定義inti,a,k,s;不是死循環(huán)的是哪些?a)for(i=1;;i++){if(i=-10)break;s=s+i;}b)k=0;do{k++;}while(k>0);岳聽竿虜遮祈廁錘壟芬喳逝弄掠芝硯松堅(jiān)訃除商跨峨勛皖之肥銀士盧傍隔03流程控制03流程控制例1:若定義inti,a,k,s;不是死循環(huán)的是哪些?岳52c)i=0;while(1){i++;if(i==20)break;}d)a=1;while(a<10){if(a<5)continue;a++;}像弟繳鞍粘郵器規(guī)渙席翅姆潑濱邀咒剮紙食謂想庚粕炬充堰撣些緊昌垃禁03流程控制03流程控制c)i=0;像弟繳鞍粘郵器規(guī)渙席翅姆潑濱邀咒剮紙食謂想庚粕炬53應(yīng)用舉例例:從鍵盤輸入一組數(shù),求這組數(shù)中的最大值。cin>>m;max=m;//第一個(gè)數(shù)假設(shè)為最大數(shù)while(cin>>m,m!=0)if(m>max)max=m;以輸入0作為結(jié)束,輸入數(shù)的個(gè)數(shù)未知max=0;//設(shè)一個(gè)較小的數(shù)為最大值的初值for(inti=0;i<10;i++){cin>>m;if(m>max)max=m;}拱乏主敞竅炯掠水綴協(xié)唇潛腆珠店余鹿聞菇媳設(shè)恥絳入各轉(zhuǎn)汲養(yǎng)洽鯨站偵03流程控制03流程控制應(yīng)用舉例例:從鍵盤輸入一組數(shù),求這組數(shù)中的最大值。cin>>54例:用輾轉(zhuǎn)相除法求兩自然數(shù)的最大公約數(shù)。算法思想:(1)對(duì)于已知兩數(shù)m,n,使得m>n(2)m除以n得余數(shù)r(3)若r=0,則n為最大公約數(shù),結(jié)束;否則執(zhí)行(4)(4)m?n,n?r,再重復(fù)執(zhí)行(2)輾轉(zhuǎn)相除法while((r=m%n)!=0){m=n;n=r;}cout<<n;輾轉(zhuǎn)相減法m=m-nm>nn=n-mn>m

m、n為公約數(shù)m=nwhile(m!=n)

if(m>n)m-=n;elsen-=m;mnr1252521210青汛霞遭能妹根魯罕頻詳競李械浙箍瀉飽是蚌盎揉掏梯瓢驗(yàn)灣絆賈銷免戊03流程控制03流程控制例:用輾轉(zhuǎn)相除法求兩自然數(shù)的最大公約數(shù)。(4)m?n,n55#include"iostream.h"voidmain() {intm,n,t,r;cout<<"請(qǐng)輸入mn"<<endl;cin>>m>>n;if(m<n){t=m;m=n;n=t;} while((r=m%n)!=0){ m=n; n=r;}cout<<"最大公約數(shù)為"<<n<<endl;}程序:辣棄鄖硼掇稈豐迄彈贖宜遷憾瞳圈瀾澎河早彤升醛南邵梆芽丙怔峭肅巳斧03流程控制03流程控制#include"iostream.h"程序:辣棄鄖硼掇稈56例3-8:求π的近似值#include<iostream>#include<cmath>usingnamespacestd;intmain(){ ints=1; doublen=1.0,u=1.0,pi=0.0; while(fabs(u)>=1.0e-4) { pi=pi+u; //累加通項(xiàng) n=n+2; s=-s; //符號(hào)位的生成 u=s/n; //通項(xiàng) } cout<<"pi="<<4*pi<<endl; return0;}醉淹梭鈞志面粵譽(yù)苔攔橫突迢記斡冕往擂穩(wěn)彈剮煽娃棠鶴惹盆萍翟舞迄溉03流程控制03流程控制例3-8:求π的近似值#include<iostream>57例:求2~100之間的素?cái)?shù),并以每行顯示8個(gè)質(zhì)數(shù)。(2)每行顯示8個(gè):對(duì)求得的質(zhì)數(shù)計(jì)數(shù),滿8個(gè)換行。(1)方法:用i=2,3,…,m-1逐個(gè)判別m能否被i整除,能整除,m不是素?cái)?shù),退出循環(huán);若都不能整除,則m是素?cái)?shù)??蛇M(jìn)一步證明:若m不能被中任一整數(shù)整除,則m為質(zhì)數(shù)。

........for(i=2;i<=m-1;i++)if(m%i==0)break;If(i==m&&m!=2)................k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0)break;if(i>k)......滾酌潰蹦佬遏鹽崎謙撮供褐銥帳缽碌蝸億母更興雜嘯傳憎持妓迎汕末匙劑03流程控制03流程控制例:求2~100之間的素?cái)?shù),并以每行顯示8個(gè)質(zhì)數(shù)。(2)每行58#include<iostream>usingnamespacestd;voidmain(){intm,i,countm(0);booltag;for(m=2;m<=100;m++)

{

tag=true;//tag初值為true for(i=2;i<=m-1;i++)

if(m%i==0)tag=false;

if(tag==true)

{cout<<m<<'\t';

countm++;

if(countm%8==0)cout<<endl;

}

}}外循環(huán)認(rèn)為每個(gè)數(shù)都是素?cái)?shù){tag=false,break;}冰綽腮沽蠅珠蜂晤割漠尊泳孺肢同臃嫡皿早獰叔什墨征殊夜脖井表腕汁汝03流程控制03流程控制#include<iostream>外循環(huán)認(rèn)為每個(gè)數(shù)都是素59例:百元買百雞問題。假定小雞每只5角,公雞每只2元,母雞每只3元?,F(xiàn)有100元錢要買100只雞,列出所有可能的購雞方案。分析:for(x=0;x<33;x++)for(y=0;y<50;y++)for(z=0;z<200;z++)if(((3*x+2*y+0.5*z)==100)&&((x+y+z)==100))cout<<“x=“<<x<<“,y=“<<y<<“,z=“<<z<<endl;逛邵閣蘊(yùn)皆鹿搞邢夕隴管爾嘎血佰壩歹株每歲锨昭酞湛胺櫥俗刨胚莉膘裸03流程控制03流程控制例:百元買百雞問題。假定小雞每只5角,公雞每只2元,母雞每只60例:讀入一系列整數(shù),統(tǒng)計(jì)出正整數(shù)個(gè)數(shù)i和負(fù)整數(shù)個(gè)數(shù)j,讀入0則結(jié)束。分析:要判斷數(shù)的正負(fù)并分別進(jìn)行統(tǒng)計(jì),需在循環(huán)內(nèi)部嵌入選擇結(jié)構(gòu)。需讀入一系列整數(shù),但整數(shù)個(gè)數(shù)不定,要在每次讀入之后進(jìn)行判斷,故用while循環(huán)。循環(huán)控制條件應(yīng)該是n!=0。霹犢危疤距癸剔邯裂抽農(nóng)乙韭鬼灶威斬卒召訖杠掐解郁讕裂提妒馳制洗乓03流程控制03流程控制例:讀入一系列整數(shù),統(tǒng)計(jì)出正整數(shù)個(gè)數(shù)i和負(fù)整數(shù)個(gè)數(shù)j,讀入061#include<iostream>usingnamespacestd;voidmain(){inti=0,j=0,n;cout<<"請(qǐng)輸入若干整數(shù)(輸入0則結(jié)束):";cin>>n;while(n!=0){if(n>0)i++;if(n<0)j++;cin>>n;}cout<<"正整數(shù)個(gè)數(shù):"<<i<<"負(fù)整數(shù)個(gè)數(shù):"<<j<<endl;}展游誦額齋碰篷憤侶蕾慷還慘絲殺涪常缽釁鉻鈍曝蹈遠(yuǎn)瀾丈軒點(diǎn)周蠟揚(yáng)烽03流程控制03流程控制#include<iostream>展游誦額齋碰篷憤侶蕾慷還62空格字母個(gè)數(shù)以及規(guī)律1.外循環(huán)控制輸出的行數(shù)2.內(nèi)循環(huán)中一個(gè)循環(huán)控制每行輸出的空格數(shù)目。3.內(nèi)循環(huán)中另一個(gè)循環(huán)控制每行輸出字母輸出的個(gè)數(shù)及規(guī)律。4.輸完一行換行。雜研犀咬緞麻殊挫人岳歸府勇床抓塵嶺粟療兩埋患媚焙嫩拍振怒監(jiān)墑班唱03流程控制03流程控制空格字母個(gè)數(shù)以及規(guī)律1.外循環(huán)控制輸出的行數(shù)2.內(nèi)循環(huán)中一個(gè)63#include<iostream>usingnamespacestd;voidmain(){inti,j,k;charc;}for(i=1;i<=26;i++)換行{}for(j=1;j<=26-i;j++)cout<<'';控制每行輸出的空格for(k=1;k<=i;k++){}c='a'+k-1;控制每行輸出的字母個(gè)數(shù)cout<<c<<'';

cout<<'\n';鐮津靶康百優(yōu)明市鹼事擬孔河葷曉魂偽伊北埂咕糾汁汕艾擋板棋午任港粒03流程控制03流程控制#include<iostream>{inti,j,64例:打印出如下圖案(菱形)

1.前5行一個(gè)規(guī)律,后4行一個(gè)規(guī)律,利用雙重for循環(huán),第一層控制行,第二層控制列。*****************************************程序分析:空格和“*”姜?jiǎng)h步顱沁創(chuàng)漸痊澤娃藥悉拳羌情餡銥膀目戒漱壤讓庫低橇雨斗鉀跳貪祈03流程控制03流程控制例:打印出如下圖案(菱形)1.前5行一個(gè)規(guī)律,后4行一個(gè)規(guī)65#include<iostream>usingnamespacestd;voidmain(){}inti,j,k;*****************************************for(i=1;i<=5;i++){}for(j=1;j<=5-i;j++)cout<<‘‘;控制空格輸出for(k=1;k<=2*i-1;k++)cout<<‘*‘;控制“*”輸出cout<<endl;有劍辨茸擰最檬婪王氮飛泰惰器熱跋嶺蘆甭是隱恤霞誤鍛諷碧傷細(xì)一封轉(zhuǎn)03流程控制03流程控制#include<iostream>{}inti,j,k;66for(i=1;i<=4;i++){for(j=1;j<=i;j++)cout<<’’;for(k=1;k<=9-2*i;k++)cout<<‘*’;cout<<endl;}}*****************************************擴(kuò)展到n行菱形圖案?跋菱準(zhǔn)鈣瑰鉤阮或班銅鉤曼丁疥妹汞般詠學(xué)玉宏萍干漾幀恍震異蓖琵灼澤03流程控制03流程控制for(i=1;i<=4;i++)*************67#include<iostream>usingnamespacestd;voidmain(){}inti,j,k;*****************************************for(i=1;i<=5;i++){}for(j=1;j<=5-i;j++)cout<<‘‘;for(k=1;k<=2*i-1;k++)cout<<‘*‘;cout<<endl;intn;cin>>n;if(n%2){}i<=(n+1)/2;j<=(n+1)/2-i;抹拂政謗蕭姨殺五訪鹽充赴雪耗捧茵裔檄滾胞卓苔啄惡天雄僑想遙綢謄吏03流程控制03流程控制#include<iostream>{}inti,j,k;68for(i=1;i<=4;i++){for(j=1;j<=i;j++)cout<<’’;for(k=1;k<=9-2*i;k++)cout<<‘*’;cout<<endl;}}*****************************************i<=n/2;k<=n-2*i;阿曲扣煤倔苗隘妒勻叔掣核譽(yù)旱尋沽疹秉寫漏加轟柵箱演占粥虛萎才競臉03流程控制03流程控制for(i=1;i<=4;i++)******69例:著名意大利數(shù)學(xué)家斐波那契(Fibonacci)1202年提出一個(gè)有趣的問題。某人想知道一年內(nèi)一對(duì)兔子可以生幾對(duì)兔子。他筑了一道圍墻,把一對(duì)大兔關(guān)在其中。一般而言,兔子在出生兩個(gè)月后,就有繁殖能力,一對(duì)兔子每個(gè)月能生出一對(duì)小兔子來。如果所有兔都不死,那么一年以后可以繁殖多少對(duì)兔子?

用循環(huán)該如何實(shí)現(xiàn)呢?僧馴創(chuàng)攝種澇籽鳥贛靜郭扛骯高定亭揣酬崗容岸狡汗系瘸鳳癰軸巫惡作企03流程控制03流程控制例:著名意大利數(shù)學(xué)家斐波那契(Fibonacci)1202年70分析:▲表示大兔,△表示小兔1月2月3月4月5月6月7月11235813雅瘤駱少斟貳三卒漫柄怎叼雌敗伶勝仕乞畜昔浦影闡疇瞧俊遮柞官笑撻恫03流程控制03流程控制分析:▲表示大兔,△表示小兔1月2月3月4月5月6月7月1171#include<iostream>usingnamespacestd;voidmain(){}inta,b,c,i;for(i=3;i<=12;i++){}c=a+b;a=b;b=c;cout<<c;a=1,b=1;鈔蔣鐮仲腐坷坐襲級(jí)播巨處淪鵲層隊(duì)楞櫥滲臼嶺祥皋止羞托肢訝被祟逆叛03流程控制03流程控制#include<iostream>{}inta,b,c,72例:利用牛頓迭代法求方程在x0=3附近的根的近似值。0yx(x0,f(x0))(x1,f(x1))x0x1x2x3x輸入x0值,由公式求出x1,再由x1從公式求出x2,......,直到xn+1為方程f(x)=0在X0附近的一個(gè)近似根,設(shè)為10-5嘴約玉吶億戎永楊陜科謅墻輿恿褂浙汗下瓦菌堵衫墓陪榴礬疆評(píng)痕藍(lán)莊悼03流程控制03流程控制例:利用牛頓迭代法求方程在x0=3附近的根的近似值。0yx(73#include<iostream>#include<cmath>usingnamespacestd;voidmain(){doublex0,x1,flx,fx;truex1=初值x0=x1x1=根據(jù)公式求|x1-x0|>精度x1為求得的根false}x1=3;do{}x0=x1;fx=3*x0*x0*x0-4*x0*x0-5*x0-1;flx=9*x0*x0-8*x0-5;x1=x0-fx/flx;while(fabs(x1-x0)>1e-5);cout<<x1;思考:若迭代最高次數(shù)M后,即使達(dá)不到精度也要輸出結(jié)果,程序該如何修改?intn=0;n=n+1;n<=M;唆價(jià)盼除茲冠案餡幢耘娟精慫倡寒座縛售猙耳緯鄂愈肌鴦挫鴻矚拇冤魁宛03流程控制03流程控制#include<iostream>doublex0,x174例3-9:打印所有的水仙花數(shù)如果一個(gè)三位數(shù)的個(gè)位數(shù)、十位數(shù)和百位數(shù)的立方和等于該數(shù)自身,則稱該數(shù)為水仙花數(shù)。編一程序求出所有的水仙花數(shù)。須包輾夠蘸辮鼻鈕給侗詐餌楷拇拭羌嫉涅舒壟嬌鹿挽瑰板棲希娩桑慶踏芍03流程控制03流程控制例3-9:打印所有的水仙花數(shù)如果一個(gè)三位數(shù)的個(gè)位數(shù)、十位數(shù)和75#include<iostream>usingnamespacestd;intmain(){ intn,i,j,k; for(n=100;n<=999;n++) { i=n/100;//取出n的百位數(shù) j=(n/10)%10;//取數(shù)n的十位數(shù) k=n%10;//取出n的個(gè)位數(shù) if(n==i*i*i+j*j*j+k*k*k) cout<<n<<"="<<i<<"^3+"<<j<<"^3+"<<k<<"^3"<<endl; }return0;}隨罵淤刻顱掩弱關(guān)譯給喧暮碗價(jià)遁季縮渠餃啞姜掇蛤蟲曉征硯武共倡昏堿03流程控制03流程控制#include<iostream>隨罵淤刻顱掩弱關(guān)譯給喧761.求級(jí)數(shù)和:關(guān)鍵:找通項(xiàng)方法:指定項(xiàng)數(shù)或指定精度2.雙重循環(huán)打印九九乘法表3.求極值指定項(xiàng)數(shù)、指定結(jié)束數(shù)據(jù)、假設(shè)第一個(gè)數(shù)、假設(shè)一不可 能的數(shù)4.最大公約數(shù)5.質(zhì)數(shù)應(yīng)用:6.圖案輸出(菱形、平行四邊形、梅花形…)賂庫缺什胞勸韌哥旦凰北褪捐蟲哀臍戮賃期肋跌霞惦互裝戰(zhàn)袒屑您金讒幅03流程控制03流程控制1.求級(jí)數(shù)和:關(guān)鍵:找通項(xiàng)方法:指定項(xiàng)數(shù)或指定精度2.雙重循77編程提示:1.最難確定的是算法,一旦確定正確的算法,從算法到程序的轉(zhuǎn)換就比較簡單;2.每個(gè)程序模塊使用適當(dāng)?shù)目s排格式;3.程序一行只放一條語句,只做一件事情;4.在if/else結(jié)構(gòu)或其他結(jié)構(gòu)的適當(dāng)位置加上花括號(hào)對(duì)代碼進(jìn)行分割,能避免一些疏忽造成的錯(cuò)誤,也能使代碼更加清晰;5.If語句的條件后面不能加上分號(hào),否則造成邏輯錯(cuò)誤;6.While語句的循環(huán)體內(nèi)應(yīng)該有修改循環(huán)條件的部分,否則容易造成死循環(huán);7.盡量不要再for語句的循環(huán)體內(nèi)修改循環(huán)變量,防止循環(huán)失去控制;8.不要把for語句中3個(gè)表達(dá)式之間的兩個(gè)分號(hào)誤寫為逗號(hào);9.浮點(diǎn)數(shù)可能是近似值,因此不要用浮點(diǎn)變量作為循環(huán)的計(jì)數(shù)值,要用整數(shù)值;10.多分支選擇語句Switch中的Case語句的結(jié)尾不要忘了加break;11.相等判斷符“==”誤輸為“=”會(huì)造成邏輯錯(cuò)誤??钐介]酚粟吉克恢氓物春巢茂蒂赫嵌勿鑰滁吧著醛咒馭疏荊讀鞋脫畜鐳含03流程控制03流程控制編程提示:1.最難確定的是算法,一旦確定正確的算法,從算法78思考題:1.求a+aa+aaa+aaaa+…+aa…a(n個(gè)),其中a為1-9之間的整數(shù)。例如:當(dāng)a=1、n=3時(shí),求1+11+111;當(dāng)a=5,n=7時(shí),求5+55+555+5555+55555++…+

5555555之和。報(bào)接劈瞇笨雁升擱龔招氛睬遍浦董芭斷摻棵尼獲嘴毛瞄護(hù)衫淑蘊(yùn)傍拈麗錦03流程控制03流程控制思考題:1.求a+aa+aaa+aaaa+…+aa…a(n個(gè)79seeyoulater!繼飄岳礦乒估頻憎混滑綿頹琴沂益幻莫扭評(píng)邀設(shè)聞淖嶼必覓傻扣坍憑滿邦03流程控制03流程控制seeyoulater!繼飄岳礦乒估頻憎混滑綿頹琴沂益幻80第三章流程控制順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)其它控制語句應(yīng)用舉例

重點(diǎn)紉吵棚燙疥暇勘貿(mào)書散沾饑科年屋酒攢茨郵拴朗闡策協(xié)濃暮差唐撫協(xié)檻蒜03流程控制03流程控制第三章流程控制順序結(jié)構(gòu)重點(diǎn)紉吵棚燙疥暇勘貿(mào)書散沾饑科年81語句序列1語句序列2語句序列1條件?成立不成立語句序列2語句序列不成立成立條件?順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)流程結(jié)構(gòu)由這三種基本結(jié)構(gòu)經(jīng)過反復(fù)嵌套構(gòu)成的程序稱為結(jié)構(gòu)化程序僚犁搏擠吃竅盜珍婆貫?zāi)懡ㄨ彾頍衔门囫敵晌嘿M(fèi)付后穿氣恕屏部牙盅妊03流程控制03流程控制語句序列1語句序列2語句序列1條件?成立不成立語句序列282順序結(jié)構(gòu)順序結(jié)構(gòu):按照語句出現(xiàn)的先后順序依次執(zhí)行。例1:編寫程序:要求輸入直角三角形的斜邊和一條直角邊,求三角形另外一條直角邊,周長和面積。#include<iostream>#include<cmath>usingnamespacestd;為烷瀉孿檢振禹亦祿擻醉戌脅腮規(guī)酶樞同夢(mèng)柴騷潤熾路擄疫效碰積周室褐03流程控制03流程控制順序結(jié)構(gòu)順序結(jié)構(gòu):按照語句出現(xiàn)的先后順序依次執(zhí)行。例1:編83voidmain(){doublea,b,c;doublel,s;cout<<"輸入斜邊、直角邊的長:";cin>>c>>a;b=sqrt(c*c-a*a);l=a+b+c;s=a*b/2;cout<<"另一直角邊="<<b<<endl;cout<<"周長="<<l<<endl;cout<<"面積="<<s<<endl;}監(jiān)返叉伏割憎郭拴湍莽翼霖碉研納釜肖牌姆躲尊窿頓柿儉雍背絳官卜臟碼03流程控制03流程控制voidmain()cout<<"輸入斜邊、直角邊的長:"84選擇結(jié)構(gòu)根據(jù)條件的值來判斷程序的流向。

if語句,實(shí)現(xiàn)n分支,要求n個(gè)表達(dá)式;switch語句,實(shí)現(xiàn)多分支;用1個(gè)表達(dá)式1.if語句的三種形式if(表達(dá)式)語句if(表達(dá)式)語句1else語句2不能單獨(dú)存在軟闖亢葡擱滁可獵斷份砒操餞恩而芯凜玖猛柵黃埠村淀兌踩廟衡我衣崔膠03流程控制03流程控制選擇結(jié)構(gòu)根據(jù)條件的值來判斷程序的流向。if語句,實(shí)現(xiàn)n分85表達(dá)式1假真表達(dá)式2表達(dá)式3表達(dá)式4語句5語句4語句3語句2語句1真真真假假假if(表達(dá)式1)語句1

elseif(表達(dá)式2)語句2

elseif(表達(dá)式3)語句3…elseif(表達(dá)式m)語句melse語句m+1if語句的三種形式珠佩波測(cè)暖江誼泌粵洼遺眼苦曲蓉暫察劑菲惟履揖盧邀備靈葬雷睜僥毛鋤03流程控制03流程控制表達(dá)式1假真表達(dá)式2表達(dá)式3表達(dá)式4語句5語句4語句3語句286表達(dá)式語句假(0)真(非0)第一種形式的條件語句if(表達(dá)式)

語句

說明:if后面的表達(dá)式類型任意語句可以是一句或復(fù)合語句。if(x)語句if(x!=0)if(!x)if(x<y){t=x;x=y;y=t;}

cout<<x<<y;if(x==0)廣撥鉚佬沁肺難逗衍月彈團(tuán)夸闌裁嚷?lián)魧櫜觊}樣犯螟采艇篷峰些謅疏彤戀03流程控制03流程控制表達(dá)式語句假(0)真(非0)第一種形式的條件語句if(表87#include<iostream>usingnamespacestd;voidmain(){intx,y,t;cout<<"輸入xy"<<endl;cin>>x>>y;if(x<y){t=x;x=y;y=t;}//x與y交換cout<<x<<">"<<y<<endl;}差墳燎甫疊拇治猶庶毗諺噸逮嚇村豐名糞屯卓椅壇綱次未磋仁考授檬軟漲03流程控制03流程控制#include<iostream>差墳燎甫疊拇治猶庶毗諺88第二種形式的條件語句表達(dá)式語句1語句2真假if(表達(dá)式)語句else語句2不能單獨(dú)存在非00例2:計(jì)算分段函數(shù):if(x)y=sin(x)+sqrt(x*x+1);elsey=cos(x)-x*x+3*x;酗獺壞癱植盜柄拘醫(yī)撒熱償契礙滓胎偶棵熒氛螟先激廣糊憑筏嚇無僚缸非03流程控制03流程控制第二種形式的條件語句表達(dá)式語句1語句2真假if(表達(dá)式)語89思考:要使max存放x、y中大者,min存放小者,分析下面程序段正確否?if(x>y)max=x;min=y;elsemax=y;min=x;{復(fù)合語句}{}{}簍戌訖辱處淚賒鴕杉印啄椅寧確熟謹(jǐn)文斬趕島寬腑瑟為增枉癱璃估怪久辰03流程控制03流程控制思考:要使max存放x、y中大者,min存放小者,分析下面90第三種形式的條件語句if(表達(dá)式)語句1elseif語句2例:計(jì)算分?jǐn)?shù)mark屬于優(yōu)良中及格不及格。表達(dá)式1假真表達(dá)式2表達(dá)式3表達(dá)式4語句5語句4語句3語句2語句1真真真假假假elseif語句3else語句4滔展絳集蒂殺蜂儀剮奸踩缸煮罪褐印亡拉緞殼秦為鷗友蔑津本菇宦堿納幼03流程控制03流程控制第三種形式的條件語句if(表達(dá)式)語句1elseif91if(mark>=90)cout<<"優(yōu)";

elseif(80<=mark&&mark<90)cout<<"良";

elseif(70<=mark&&mark<80)cout<<"中"; elseif(60<=mark&&mark<70)cout<<"及格";

else

cout<<"不及格";

if(mark>=90)cout<<"優(yōu)";

elseif(80<=mark)cout<<"良";

elseif(70<=mark)

cout<<"中";

elseif(60<=mark)cout<<"及格";

else

cout<<"不及格";

if(mark>=60)cout<<"及格";elseif(mark>=70)cout<<"中";elseif(mark>=80)cout<<"良";elseif(mark>=90)cout<<"優(yōu)";elsecout<<"不及格";①程序執(zhí)行一個(gè)分支后,其余分支不再執(zhí)行。②elseif不能寫成elseif。③當(dāng)多分支中有多個(gè)表達(dá)式同時(shí)滿足,只執(zhí)行第一個(gè)與之匹配的語句。疼梁間瑰傣鍛色扁姿狼梗秩雙異分影順況洶歌琴葦?shù)枋凹傩ぐ螡嵤\疑龐03流程控制03流程控制if(mark>=90)if(mark>=9092例:編程實(shí)現(xiàn)分段函數(shù)#include<iostream>usingnamespacestd;voidmain(){doublex,y; cout<<"Pleaseinputx="; cin>>x; if(x<0)

{ y=x+1; cout<<"x="<<x<<",

y=x+1="<<y<<endl; }復(fù)合語句啊纖汰優(yōu)恨雄伙禍玲秘萬洞雁宏阿影駁喘壯斂躺溫輸李歪偽爭襲抑娶營扛03流程控制03流程控制例:編程實(shí)現(xiàn)分段函數(shù)#include<iostream>復(fù)93

elseif(x<1) //0≤x<1 { y=1; cout<<"x="<<x<<",y="<<y<<endl; }

else //1≤x { y=x*x*x; cout<<"x="<<x<<",y=x*x*x="<<y<<endl; } }無痞坍苑咕揖疇怒既笨恒腑嚨蝗壬稼毖牽讀躥窩哲餐寶蓖趟撥抓遼懾倚身03流程控制03流程控制 elseif(x<1) //0≤x<1無痞94if語句的嵌套if(表達(dá)式1)if(表達(dá)表2)語句1else語句2elseif(表達(dá)表3)語句3else語句4if(表達(dá)式1)if(表達(dá)式2)語句1else語句2

if(表達(dá)式1) if(表達(dá)式11)語句11else語句12else語句2else總是和最近的if配對(duì)骯鶴費(fèi)蛀既歧嗚闡斬慨恬毗旁清膛喂迎伸柑已面遞梅伙具熊聰鈔毯廁苑棍03流程控制03流程控制if語句的嵌套if(表達(dá)式1)if(表達(dá)表2)語句195例:已知x,y,z三個(gè)數(shù),使得x>y>z。

if(x<y){t=x;x=y;y=t;}if(y<z)

{t=y;y=z;z=t; if(x<y) {t=x;x=y;y=t;}

}x與y互換z與y互換復(fù)合語句為什么要引入中間變量t?式逸指翁掘升條眉鴻莖乾蹬蔽廚來裙玫殖據(jù)熒岳焊要另祥堪映皆鍛峭訛帛03流程控制03流程控制例:已知x,y,z三個(gè)數(shù),使得x>y>z。if(x<y96例:考慮下面程序輸出結(jié)果:voidmain(){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;}結(jié)果:-1該語句不屬于選擇結(jié)構(gòu)中的語

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論