版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年7月國開電大行管專科《社會調(diào)查研究與方法》期末紙質(zhì)考試試題及答案
- 教師結(jié)構(gòu)化面試常見問題及答案
- 獻(xiàn)縣公安輔警招聘知識考試題庫附答案
- 行政后勤筆試題及答案
- 質(zhì)檢員《專業(yè)管理實(shí)務(wù)》備考沖刺題及答案
- 助理營銷師高級模擬習(xí)題(附答案)
- 醫(yī)院感染管理相關(guān)法律法規(guī)培訓(xùn)試題附答案
- 文物修復(fù)招聘考試題及答案
- 入黨測試題庫及答案
- 公路道路養(yǎng)護(hù)工晉升高級技師模擬綜合試題練習(xí)及答案
- 2026海南安??毓捎邢挢?zé)任公司招聘11人筆試模擬試題及答案解析
- 裝飾裝修工程施工組織設(shè)計(jì)方案(二)
- 2026上海碧海金沙投資發(fā)展有限公司社會招聘參考題庫必考題
- 2026年張家界航空工業(yè)職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性考試模擬測試卷新版
- 2026遼寧機(jī)場管理集團(tuán)校招面筆試題及答案
- 2025徽銀金融租賃有限公司社會招聘筆試歷年典型考題及考點(diǎn)剖析附帶答案詳解
- 2026年遼寧軌道交通職業(yè)學(xué)院單招綜合素質(zhì)筆試備考題庫帶答案解析
- 檢驗(yàn)科內(nèi)控制度
- DB44-T 2771-2025 全域土地綜合整治技術(shù)導(dǎo)則
- 碳排放核算及企業(yè)減排策略
- 冬季電氣設(shè)備安全培訓(xùn)課件
評論
0/150
提交評論