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

下載本文檔

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

文檔簡(jiǎn)介

流程控制2024/4/17流程控制[1]語(yǔ)句序列1語(yǔ)句序列2語(yǔ)句序列1條件?成立不成立語(yǔ)句序列2語(yǔ)句序列不成立成立條件?順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)流程結(jié)構(gòu)由這三種基本結(jié)構(gòu)經(jīng)過(guò)反復(fù)嵌套構(gòu)成的程序稱(chēng)為結(jié)構(gòu)化程序流程控制[1]順序結(jié)構(gòu)順序結(jié)構(gòu):按照語(yǔ)句出現(xiàn)的先后順序依次執(zhí)行。例1:編寫(xiě)程序:要求輸入直角三角形的斜邊和一條直角邊,求三角形另外一條直角邊,周長(zhǎng)和面積。#include<iostream>#include<cmath>usingnamespacestd;流程控制[1]voidmain(){doublea,b,c;doublel,s;cout<<"輸入斜邊、直角邊的長(zhǎng):";cin>>c>>a;b=sqrt(c*c-a*a);l=a+b+c;s=a*b/2;cout<<"另一直角邊="<<b<<endl;cout<<"周長(zhǎng)="<<l<<endl;cout<<"面積="<<s<<endl;}流程控制[1]選擇結(jié)構(gòu)根據(jù)條件的值來(lái)判斷程序的流向。

if語(yǔ)句,實(shí)現(xiàn)n分支,要求n個(gè)表達(dá)式;switch語(yǔ)句,實(shí)現(xiàn)多分支;用1個(gè)表達(dá)式1.if語(yǔ)句的三種形式if(表達(dá)式)語(yǔ)句if(表達(dá)式)語(yǔ)句1else語(yǔ)句2不能單獨(dú)存在流程控制[1]表達(dá)式1假真表達(dá)式2表達(dá)式3表達(dá)式4語(yǔ)句5語(yǔ)句4語(yǔ)句3語(yǔ)句2語(yǔ)句1真真真假假假if(表達(dá)式1)語(yǔ)句1

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

elseif(表達(dá)式3)語(yǔ)句3…elseif(表達(dá)式m)語(yǔ)句melse語(yǔ)句m+1if語(yǔ)句的三種形式流程控制[1]表達(dá)式語(yǔ)句假(0)真(非0)第一種形式的條件語(yǔ)句if(表達(dá)式)

語(yǔ)句

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

cout<<x<<y;

if(x==0)流程控制[1]#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;}流程控制[1]第二種形式的條件語(yǔ)句表達(dá)式語(yǔ)句1語(yǔ)句2真假if(表達(dá)式)語(yǔ)句else語(yǔ)句2不能單獨(dú)存在非00例2:計(jì)算分段函數(shù):if(x)y=sin(x)+sqrt(x*x+1);elsey=cos(x)-x*x+3*x;流程控制[1]思考:要使max存放x、y中大者,min存放小者,分析下面程序段正確否?if(x>y)max=x;min=y;elsemax=y;min=x;{復(fù)合語(yǔ)句}{}{}流程控制[1]第三種形式的條件語(yǔ)句if(表達(dá)式)語(yǔ)句1elseif語(yǔ)句2例:計(jì)算分?jǐn)?shù)mark屬于優(yōu)良中及格不及格。表達(dá)式1假真表達(dá)式2表達(dá)式3表達(dá)式4語(yǔ)句5語(yǔ)句4語(yǔ)句3語(yǔ)句2語(yǔ)句1真真真假假假elseif語(yǔ)句3else語(yǔ)句4流程控制[1]if(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不能寫(xiě)成elseif。③當(dāng)多分支中有多個(gè)表達(dá)式同時(shí)滿(mǎn)足,只執(zhí)行第一個(gè)與之匹配的語(yǔ)句。流程控制[1]例:編程實(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ǔ)句流程控制[1]

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; } }流程控制[1]if語(yǔ)句的嵌套if(表達(dá)式1)if(表達(dá)表2)語(yǔ)句1else語(yǔ)句2elseif(表達(dá)表3)語(yǔ)句3else語(yǔ)句4if(表達(dá)式1)if(表達(dá)式2)語(yǔ)句1else語(yǔ)句2

if(表達(dá)式1) if(表達(dá)式11)語(yǔ)句11else語(yǔ)句12else語(yǔ)句2else總是和最近的if配對(duì)流程控制[1]例:已知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ù)合語(yǔ)句為什么要引入中間變量t?流程控制[1]例:考慮下面程序輸出結(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該語(yǔ)句不屬于選擇結(jié)構(gòu)中的語(yǔ)句流程控制[1]例:求一元二次方程ax2+bx+c=0的根,其中系數(shù)a,b,c為實(shí)數(shù),由鍵盤(pán)輸入。#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);流程控制[1]

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?流程控制[1]switch語(yǔ)句switch(表達(dá)式){case常量表達(dá)式1:語(yǔ)句組1;case常量表達(dá)式2:語(yǔ)句組2;case常量表達(dá)式n:語(yǔ)句組n;…default:語(yǔ)句組n+1;}[break;][break;][break;]必須為整型或字符型流程控制[1]說(shuō)明:10常量表達(dá)式的值必須互不相等。20語(yǔ)句組i可以含有多個(gè)語(yǔ)句。30語(yǔ)句中含有break語(yǔ)句時(shí),執(zhí)行完后退出switch語(yǔ)句。40若某組語(yǔ)句不含break語(yǔ)句,則本組語(yǔ)句執(zhí)行完畢后將繼續(xù)執(zhí)行下一組語(yǔ)句。流程控制[1]50若沒(méi)有常量值與表達(dá)式值相等,執(zhí)行default語(yǔ)句n+1,若無(wú)該語(yǔ)句,退出switch語(yǔ)句。60可以多個(gè)case共用一組語(yǔ)句。80用switch語(yǔ)句實(shí)現(xiàn)的多分支結(jié)構(gòu)程序,可用if語(yǔ)句或if語(yǔ)句的嵌套來(lái)實(shí)現(xiàn)。70switch語(yǔ)句允許嵌套。流程控制[1]例:用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;}共用語(yǔ)句組switch((int)a){casea>=1&&a<2:……casea>=2&&a<4:.…..default:b=a;}關(guān)系表達(dá)式Χ思考:若省去break語(yǔ)句,情況會(huì)怎樣?break;break;流程控制[1]例:從鍵盤(pán)上輸入學(xué)生的分?jǐn)?shù),要求當(dāng)學(xué)生的分?jǐn)?shù)

90~100-verygood!80~90-good60~80-pass0~50-Fail流程控制[1]#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;}}流程控制[1]例:執(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**流程控制[1]#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流程控制[1]循環(huán)結(jié)構(gòu)while 表達(dá)式語(yǔ)句假(0)真(非0)do-while while(表達(dá)式)

語(yǔ)句do語(yǔ)句while(表達(dá)式);forfor(表達(dá)式1;表達(dá)式2;表達(dá)式3)語(yǔ)句流程控制[1]While語(yǔ)句while(表達(dá)式)語(yǔ)句;可以是復(fù)合語(yǔ)句,其中常含有改變條件表達(dá)式值的語(yǔ)句執(zhí)行過(guò)程:先計(jì)算表達(dá)式的值,當(dāng)表達(dá)式的值為非0時(shí)執(zhí)行語(yǔ)句;為0時(shí)執(zhí)行循環(huán)的后繼(退出循環(huán))流程控制[1]說(shuō)明:循環(huán)體可為任意類(lèi)型語(yǔ)句下列情況,退出while循環(huán)條件表達(dá)式不成立(為零)循環(huán)體內(nèi)break,return,goto表達(dá)式始終為真:while(1)流程控制[1]例1:程序的功能?#include<iostream>usingnamespacestd;voidmain(){intn,sum=0;n=1;while(n<=100)

{sum=sum+n;n++;

}cout<<sum);}條件表達(dá)式復(fù)合語(yǔ)句例1:求∑n的值。流程控制[1]#include<iostream>usingnamespacestd;voidmain(){intn,sum=0;while(n<=100){sum=sum+n;n++;}cout<<sum;}例1:求∑n的值。n=1;問(wèn)題:1.語(yǔ)句n=1;能放在循環(huán)體內(nèi)嗎?2.若語(yǔ)句n<=100中的等號(hào)去掉?3.如要求

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

sum=1;sum=sum*n;

循環(huán)體內(nèi)的語(yǔ)句受循環(huán)的控制;在循環(huán)體外的語(yǔ)句不受循環(huán)的控制。流程控制[1]程序拓展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;流程控制[1]do-while語(yǔ)句do

語(yǔ)句;while(表達(dá)式);可以是復(fù)合語(yǔ)句,其中常含有改變條件表達(dá)式值的語(yǔ)句執(zhí)行過(guò)程:先執(zhí)行語(yǔ)句,后判斷條件。表達(dá)式的值為非0時(shí),繼續(xù)執(zhí)行語(yǔ)句;表達(dá)式的值為0時(shí),執(zhí)行循環(huán)的后繼。流程控制[1]例:i=11,sun=0;do{sun+=i;i++;}while(i<11);例:i=11,sun=0;while(i<11)

{sun+=i;i++;}流程控制[1]while與do-while的比較:do-while和while可相互轉(zhuǎn)化。當(dāng)while后面的表達(dá)式的第一次的值為“真”時(shí),兩種循環(huán)的結(jié)果相同。否則,二者結(jié)果不相同(指二者具有相同的循環(huán)體的情況)。流程控制[1]求解表達(dá)式1表達(dá)式2語(yǔ)句求解表達(dá)式3下一個(gè)語(yǔ)句N(xiāo)T表達(dá)式1;while(表達(dá)式2){語(yǔ)句;表達(dá)式3;}for(表達(dá)式1;表達(dá)式2;表達(dá)式3){循環(huán)體}for語(yǔ)句的語(yǔ)法執(zhí)行一次流程控制[1]注意: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)有語(yǔ)句能夠在一定條件下跳出循環(huán)。for(表達(dá)式1;;){循環(huán)體}3.三個(gè)表達(dá)式都省略,需用分號(hào)分隔,表示表達(dá)式2的值為非零。for(;;){循環(huán)體}4.表達(dá)式1和3可以通過(guò)“,”包含一個(gè)以上的簡(jiǎn)單的表達(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語(yǔ)句后加分號(hào),表示循環(huán)體為空語(yǔ)句。流程控制[1]例:用上述三種循環(huán)語(yǔ)句求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;流程控制[1]例:求下列級(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流程控制[1]inti=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)不能漏空語(yǔ)句流程控制[1]inti=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;}流程控制[1]1.程序分析:該程序的功能是什么?寫(xiě)出輸出結(jié)果?

#include<iostream>usingnamespacestd;voidmain(){intn;longt=1,s=0;for(n=1;n<=5;n++){t*=n;s+=t;}cout<<s;}流程控制[1]goto語(yǔ)句及用goto構(gòu)成循環(huán)goto語(yǔ)句標(biāo)號(hào);….…..標(biāo)號(hào):語(yǔ)句;語(yǔ)句標(biāo)號(hào):給程序中的某一個(gè)語(yǔ)句定義的任意合法的標(biāo)識(shí)符,以冒號(hào)和語(yǔ)句之間進(jìn)行分隔;例:stopcout<<“End”<<endl;用作goto語(yǔ)句轉(zhuǎn)向的目標(biāo).gotostop;Goto和語(yǔ)句標(biāo)號(hào)只能用在同一個(gè)函數(shù)中。流程控制[1]功能:無(wú)條件轉(zhuǎn)移語(yǔ)句說(shuō)明:不能用整數(shù)作標(biāo)號(hào)只能出現(xiàn)在goto所在函數(shù)內(nèi),且唯一只能加在可執(zhí)行語(yǔ)句前面限制使用goto語(yǔ)句流程控制[1]例:用if和goto語(yǔ)句構(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)流程控制[1]循環(huán)的嵌套

循環(huán)體內(nèi)包含另一個(gè)完整的循環(huán)結(jié)構(gòu)。例:打印九九乘法表流程控制[1]#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)?流程控制[1]break、continue語(yǔ)句用法break;范圍:僅用于在循環(huán)體或switch語(yǔ)句中。說(shuō)明:在switch語(yǔ)句中,執(zhí)行到break語(yǔ)句時(shí),程序流程轉(zhuǎn)移到switch的后繼語(yǔ)句去執(zhí)行;用于循環(huán)語(yǔ)句中,強(qiáng)制終止本層循環(huán),若是多重循環(huán),break只能使流程跳出離break最近的一層。流程控制[1]continue語(yǔ)句功能:在循環(huán)體中,當(dāng)執(zhí)行到continue語(yǔ)句時(shí),繞過(guò)本次循環(huán),強(qiáng)行進(jìn)入下一次循環(huán)。說(shuō)明:continue語(yǔ)句只能用于循環(huán)語(yǔ)句中.continue語(yǔ)句只結(jié)束本次循環(huán),而不是終止本層循環(huán)的執(zhí)行;而break語(yǔ)句則是結(jié)束本層循環(huán)。即它只能跳過(guò)循環(huán)體中continue后面的語(yǔ)句。流程控制[1]【例】break和continue語(yǔ)句的區(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<<"";}該語(yǔ)句在循環(huán)中執(zhí)行了幾次?流程控制[1]例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);流程控制[1]c)i=0;while(1){i++;if(i==20)break;}d)a=1;while(a<10){if(a<5)continue;a++;}流程控制[1]應(yīng)用舉例例:從鍵盤(pán)輸入一組數(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;}流程控制[1]例:用輾轉(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流程控制[1]#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;}程序:流程控制[1]例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;}流程控制[1]例:求2~100之間的素?cái)?shù),并以每行顯示8個(gè)質(zhì)數(shù)。(2)每行顯示8個(gè):對(duì)求得的質(zhì)數(shù)計(jì)數(shù),滿(mǎn)8個(gè)換行。(1)方法:用i=2,3,…,m-1逐個(gè)判別m能否被i整除,能整除,m不是素?cái)?shù),退出循環(huán);若都不能整除,則m是素?cái)?shù)。可進(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)......流程控制[1]#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;}流程控制[1]例:百元買(mǎi)百雞問(wèn)題。假定小雞每只5角,公雞每只2元,母雞每只3元?,F(xiàn)有100元錢(qián)要買(mǎi)100只雞,列出所有可能的購(gòu)雞方案。分析: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;流程控制[1]例:讀入一系列整數(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。流程控制[1]#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;}流程控制[1]空格字母?jìng)€(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.輸完一行換行。流程控制[1]#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;控制每行輸出的字母?jìng)€(gè)數(shù)cout<<c<<'';

cout<<'\n';流程控制[1]例:打印出如下圖案(菱形)

1.前5行一個(gè)規(guī)律,后4行一個(gè)規(guī)律,利用雙重for循環(huán),第一層控制行,第二層控制列。*****************************************程序分析:空格和“*”流程控制[1]#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;流程控制[1]for(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行菱形圖案?流程控制[1]#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;流程控制[1]for(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;流程控制[1]例:著名意大利數(shù)學(xué)家斐波那契(Fibonacci)1202年提出一個(gè)有趣的問(wèn)題。某人想知道一年內(nèi)一對(duì)兔子可以生幾對(duì)兔子。他筑了一道圍墻,把一對(duì)大兔關(guān)在其中。一般而言,兔子在出生兩個(gè)月后,就有繁殖能力,一對(duì)兔子每個(gè)月能生出一對(duì)小兔子來(lái)。如果所有兔都不死,那么一年以后可以繁殖多少對(duì)兔子?

用循環(huán)該如何實(shí)現(xiàn)呢?流程控制[1]分析:▲表示大兔,△表示小兔1月2月3月4月5月6月7月11235813流程控制[1]#include<iostream>usingnamespacestd;voidmain(){}inta,b,c,i;for(i=3;i<=12;i++){}c=a+b;a=b;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論