第2章 控制結(jié)構(gòu)_第1頁
第2章 控制結(jié)構(gòu)_第2頁
第2章 控制結(jié)構(gòu)_第3頁
第2章 控制結(jié)構(gòu)_第4頁
第2章 控制結(jié)構(gòu)_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第2章控制結(jié)構(gòu)第2章控制結(jié)構(gòu)程序的三種基本結(jié)構(gòu)條件和選擇(if,switch)循環(huán)(while,do-while,for)控制和跳轉(zhuǎn)(break,continue,goto)第2章控制結(jié)構(gòu)——程序的三種基本結(jié)構(gòu)順序結(jié)構(gòu):順序執(zhí)行分支結(jié)構(gòu):按條件選擇性執(zhí)行循環(huán)結(jié)構(gòu):按條件循環(huán)多次執(zhí)行語句體1條件語句體2成立不成立分支結(jié)構(gòu)語句體1語句體2順序結(jié)構(gòu)第2章控制結(jié)構(gòu)——程序的三種基本結(jié)構(gòu)(退出循環(huán))條件循環(huán)體成立不成立條件循環(huán)體成立不成立循環(huán)結(jié)構(gòu)第2章控制結(jié)構(gòu)C++提供一些控制結(jié)構(gòu)語句(controlstructures)來實(shí)現(xiàn)順序、分支和循環(huán)執(zhí)行。先介紹一個新概念:語句塊(blockofinstructions)。一個語句塊是一組互相之間由分號;

分隔開但整體被花括號{}括起來的語句。大多數(shù)控制結(jié)構(gòu)允許一個通用的statement做參數(shù),這個statement根據(jù)需要可以是一條語句,也可以是一組語句組成的語句塊。如果只需要一條語句做statement,它可以不被括在花括號({})內(nèi)。但如果我們需要多條語句共同做statement,則必須把它們括在花括號內(nèi)({})以組成一個語句塊。第2章控制結(jié)構(gòu)程序的三種基本結(jié)構(gòu)條件和選擇(if,switch)循環(huán)(while,do-while,for)控制和跳轉(zhuǎn)(break,continue,goto)第2章控制結(jié)構(gòu)——條件(

ifandelse)condition是一個將被計(jì)算的表達(dá)式。如果條件(condition)為true,statement將被執(zhí)行。否則,statement將被忽略(不被執(zhí)行),程序從整個條件結(jié)構(gòu)之后的下一條語句繼續(xù)執(zhí)行。例:if(condition)statement當(dāng)變量x存儲的值為100時,輸出"xis100"執(zhí)行一條以上的語句,可以用花括號{}將語句括起來組成一個語句塊。第2章控制結(jié)構(gòu)——條件(

ifandelse)用關(guān)鍵字else來指定當(dāng)條件不能被滿足時需要執(zhí)行的語句多個if+else的結(jié)構(gòu)可以連接起來使用if(condition)statement1elsestatement2題目:輸入一個正整數(shù)。若該數(shù)為偶數(shù),求立方值后輸出;若為奇數(shù),求平方值后輸出。#include<iostream.h>voidmain(){inta,value;cout<<"輸入一個正整數(shù):";cin>>a;if(a%2==0)value=a*a*a;

else

value=a*a;cout<<"value="<<value<<endl;}第1次執(zhí)行程序:第2次執(zhí)行程序:輸入一個正整數(shù):4value=64輸入一個正整數(shù):5

value=25

if_else.cpp#include<iostream.h>#include<math.h>voidmain(){doublea,b,c,x1,x2,t;cout<<“輸入方程系數(shù):";cin>>a>>b>>c;t=b*b-4*a*c;

if(t<0) cout<<“沒有實(shí)數(shù)根";

else

{

if(t==0) {

x1=-b/(2*a); cout<<“唯一實(shí)根x=”<<x1<<endl;

}

else { t=sqrt(t); x1=(-b+t)/(2*a); x2=(-b-t)/(2*a); cout<<“實(shí)根x1=”<<x1<<“,實(shí)根x2=”<<x2<<endl;

}

}if_else.cpp嵌套時else總是與離它最近的且尚未匹配的if相匹配#include<iostream.h>#include<math.h>voidmain(){doublea,b,c,x1,x2,t;cout<<“輸入方程系數(shù):";cin>>a>>b>>c;t=b*b-4*a*c;

if(t<0) cout<<“沒有實(shí)數(shù)根";

elseif(t==0){

x1=-b/(2*a); cout<<“x1=”<<x1<<endl;}else{ t=sqrt(t); x1=(-b+t)/(2*a); x2=(-b-t)/(2*a); cout<<“x1=”<<x1; cout<<“,x2=”<<x2<<endl;

}}可以寫成elseif的形式if(表達(dá)式)中的表達(dá)式可以是任意形式,任意類型,只要結(jié)果是0或非0值,即條件成立或不成立。if(5)if(‘a(chǎn)’)if(!x)if(m=x)if(m==x)if(m>0)if(a>b?a:b)if(m>10&&m<20)if(a++,b++,a+b)各種可能的表達(dá)式:(會計(jì)算表達(dá)式的值是關(guān)鍵?。┑?章控制結(jié)構(gòu)——選擇(

switch)計(jì)算表達(dá)式的值,依次與常量1~n比較,遇到相等的常量,執(zhí)行其后的語句塊,直到break;如與各常量都不相等,執(zhí)行default后面的語句。default選項(xiàng)是可以不提供的。switch(表達(dá)式){case常量值1:語句塊1;break;

case常量值2:語句塊2;break;

……case常量值n:語句塊n;break;

default:語句n+1;}No計(jì)算表達(dá)式值常量1常量2常量n┋選default語句1語句2語句n語句n+1選break選break選break┋┋選break======≠≠≠YesYesNoNoNoYesYesYescasecasecasedefalut第2章控制結(jié)構(gòu)——選擇(

switch)注意:switch只能被用來比較表達(dá)式和整數(shù)型常量的值。不能夠把變量或范圍放在case之后,例如(case(n*2):)或(case(1..3):)都不可以,因?yàn)樗鼈儾皇怯行У某A?。如果需要檢查范圍或非常量數(shù)值,需使用連續(xù)的if和elseif語句。第2章控制結(jié)構(gòu)——選擇(

switch)如果語句塊的結(jié)尾沒有break,程序?qū)⒉粫?zhí)行跳轉(zhuǎn)到switch選擇結(jié)構(gòu)的結(jié)尾處

,而是繼續(xù)執(zhí)行下面的語句塊,直到第一次遇到break語句或一直執(zhí)行到switch選擇結(jié)構(gòu)的結(jié)尾。因此,不需要在每一個case區(qū)域內(nèi)加花括號{}

。這個特點(diǎn)同時可以幫助實(shí)現(xiàn)對不同的可能值執(zhí)行相同的語句塊。各case語句塊的先后順序可以變動,而不會影響程序執(zhí)行結(jié)果。在case后的各常量表達(dá)式的值不能相同,否則會出現(xiàn)錯誤。#include<iostream.h>voidmain(){intx,a,b,c,d;a=b=c=d=0;cin>>x;switch(x){default:d=1;case2:b++;break;case3:c++;break;case1:a++;break;

}cout<<a<<b<<c<<d<<endl;}P37例2.5switch.cpp#include<iostream.h>voidmain(){intx,a,b,c,d;a=b=c=d=0;cin>>x;switch(x){case1:case2:cout<<“小于3”;break;case3:cout<<“等于3”;

}}P37例2.5switch.cpp注意:可以沒有default,所有case都不符合時,直接跳過switch結(jié)構(gòu)。第2章控制結(jié)構(gòu)程序的三種基本結(jié)構(gòu)條件和選擇(if,switch)循環(huán)(while,do-while,for)控制和跳轉(zhuǎn)(break,continue,goto)第2章控制結(jié)構(gòu)——while循環(huán)循環(huán)的目的是重復(fù)執(zhí)行一組語句滿足一定的次數(shù)或某種條件。while循環(huán)它的功能是當(dāng)expression的值為true時重復(fù)執(zhí)行statement。while(expression)statement

while語句屬于當(dāng)型循環(huán),即當(dāng)條件成立時執(zhí)行循環(huán)。

while語句是先判斷,再執(zhí)行,如果第一次判斷時表達(dá)式的值就不成立,則循環(huán)體一次也不執(zhí)行。第2章控制結(jié)構(gòu)——while循環(huán)倒計(jì)數(shù)程序:如果用戶輸入的數(shù)值滿足條件n>0,后面跟的語句塊將會被執(zhí)行,直到條件(n>0)不再滿足(變?yōu)閒alse)。While_test.cpp第2章控制結(jié)構(gòu)——while循環(huán)必須考慮到循環(huán)必須在某個點(diǎn)結(jié)束,因此在語句塊之內(nèi)必須提供一些方法使得條件可以在某個時刻變?yōu)榧賔alse,否則循環(huán)將無限重復(fù)下去。這個例子里,用語句--n;使得循環(huán)在重復(fù)一定的次數(shù)后變?yōu)閒alse:當(dāng)n變?yōu)?,倒計(jì)數(shù)結(jié)束。第2章控制結(jié)構(gòu)——while循環(huán)例:假設(shè)在銀行存款1000元,年息為2.25%,多少年后,變?yōu)?0萬元?#include<iostream.h>voidmain(){

doublex=1000; inti=0; doubler=0.0225; while(x<=100000) { x*=1+r; i++; } cout<<i<<“年"<<endl;}While_test.cpp第2章控制結(jié)構(gòu)——while循環(huán)例:求自然數(shù)1~100的累加和。#include<iostream.h>voidmain(){inti(0),sum(0);

while(i<=100){sum+=i;i++;}//循環(huán)體

cout<<"sum="<<sum<<endl;}While_test.cpp第2章控制結(jié)構(gòu)——do-while循環(huán)do-while循環(huán)功能與while循環(huán)相同,不過,是先執(zhí)行statement然后才檢查條件condition這樣,即使條件condition從來沒有被滿足過,statement仍至少被執(zhí)行一次。dostatementwhile(condition)dowhile語句屬于直到型循環(huán),直至條件不成立時結(jié)束循環(huán)。dowhile語句先執(zhí)行循環(huán)體,然后再判斷條件。直到型循環(huán)的循環(huán)體至少執(zhí)行一次。第2章控制結(jié)構(gòu)——do-while循環(huán)例:重復(fù)輸出用戶輸入的任何數(shù)值,直到用戶輸入0為止。do-while

循環(huán)通常被用在判斷循環(huán)結(jié)束的條件是在循環(huán)語句內(nèi)部被決定的情況下。在本例中在循環(huán)的語句塊內(nèi)用戶的輸入決定了循環(huán)是否結(jié)束。如果用戶永遠(yuǎn)不輸入0,則循環(huán)永遠(yuǎn)不會結(jié)束。do_while_test.cpp第2章控制結(jié)構(gòu)——for循環(huán)for循環(huán)for(initialization;condition;increase)statement;執(zhí)行初始化initialization。通常它是設(shè)置一個計(jì)數(shù)器變量的初始值,初始化僅被執(zhí)行一次。檢查條件condition,如果條件為真true,繼續(xù)循環(huán),否則循環(huán)結(jié)束循環(huán)中語句statement被跳過。執(zhí)行語句statement。像以前一樣,它可以是一個單獨(dú)的語句,也可以是一個由花括號{}括起來的語句塊。最后增值域(increasefield)中的語句被執(zhí)行,循環(huán)返回第2步。注意增值域中可能是任何語句,而不一定只是將計(jì)數(shù)器增加的語句。第2章控制結(jié)構(gòu)——for循環(huán)例:倒計(jì)數(shù)第2章控制結(jié)構(gòu)——for循環(huán)初始化initialization和增值increase域是可選的(即可以為空)。但這些域?yàn)榭盏臅r候,它們和其他域之間間隔的分號不可以省略。例如:for(;n<10;)表示沒有初始化和增值語句;for(;n<10;n++)

表示有增值語句但沒有初始化語句。初始化或增值域中可以放一條以上的語句,中間用逗號(,)隔開。這個循環(huán)將被執(zhí)行50次,如果n和i在循還內(nèi)部都不被改變的話`#include<iostream.h>#include<iomanip.h>voidmain(){charletter;intcount(0);cout<<"大寫英文字母表\n";for(letter='A';letter<='Z';letter++){cout<<setw(5)<<letter;

count++;

if(count%6==0)cout<<endl;}}輸出大寫26個英文字母,每行打印6個字母for_test.cpp#include<iostream.h>voidmain(){inti;

double

sum=0;for(i=1;i<=100;i++) sum+=1.0/i;cout<<"sum="<<sum<<endl;}練習(xí):求#include<iostream.h>voidmain(){ inti;

intt=1;

doublesum=0; for(i=1;i<=100;i++)

{

sum+=1.0/i*t; t=-t; } cout<<"sum="<<sum<<endl;}練習(xí):求第2章控制結(jié)構(gòu)——多重循環(huán)多重循環(huán)是在一個循環(huán)語句的循環(huán)體內(nèi)又包含另一個循環(huán)語句。上述三種循環(huán)語句既可以自身嵌套,也可以互相嵌套。嵌套時要注意必須將一個完整的循環(huán)結(jié)構(gòu)整體放在另一個循環(huán)體內(nèi)。二重循環(huán)….for(){…while(){…..}….}….三重循環(huán)….for(){….for(){….for(){….}}….}….第2章控制結(jié)構(gòu)程序的三種基本結(jié)構(gòu)條件和選擇(if,switch)循環(huán)(while,do-while,for)控制和跳轉(zhuǎn)(break,continue,goto)第2章控制結(jié)構(gòu)——跳轉(zhuǎn)語句跳轉(zhuǎn)語句是輔助性語句,不單獨(dú)使用,一般與選擇語句或循環(huán)語句結(jié)合起來使用,起到控制程序結(jié)構(gòu)的作用。跳轉(zhuǎn)語句包括:break語句continue語句goto語句第2章控制結(jié)構(gòu)——break語句通過使用break語句,即使在結(jié)束條件沒有滿足的情況下,也可以跳出一個循環(huán)。它可以被用來結(jié)束一個無限循環(huán),或強(qiáng)迫循環(huán)在其自然結(jié)束之前結(jié)束。}break_test.cpp第2章控制結(jié)構(gòu)——break語句break

語句,可用于循環(huán)語句,也可用于switch語句第2

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論