版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
本講知識(shí)點(diǎn):三種循環(huán)結(jié)構(gòu)的掌握開關(guān)語句的掌握跳轉(zhuǎn)語句、返回語句的掌握重點(diǎn):流程控制結(jié)構(gòu)難點(diǎn):for循環(huán)結(jié)構(gòu)的執(zhí)行順序第四講流程控制一、流程控制對于算法設(shè)計(jì)、算法描述中所出現(xiàn)的條件分支、循環(huán)等結(jié)構(gòu),C++語言需要有與之相應(yīng)語句實(shí)現(xiàn)。已經(jīng)證明:任何復(fù)雜的計(jì)算流程均可以被分解為以下3種結(jié)構(gòu)及其嵌套。順序結(jié)構(gòu)分支結(jié)構(gòu)(C++支持兩路分支、多分支)循環(huán)結(jié)構(gòu)(C++提供3種基本循環(huán)語句)C++還提供以下流程跳轉(zhuǎn)語句(break,continue,return,goto等),以方便程序結(jié)構(gòu)控制。條件分支(if)語句條件分支整個(gè)結(jié)構(gòu)“單入口、單出口”
if(表達(dá)式)語句1;else
語句2;
if(表達(dá)式){語句串1;}else
{
語句串2;}表達(dá)式語句1語句2假(零)真(非零)while循環(huán)語句
表達(dá)式為是否繼續(xù)循環(huán)的條件;先判斷條件,循環(huán)體可能執(zhí)行0次、1次或多次。
while(表達(dá)式)循環(huán)體語句;
while(表達(dá)式){循環(huán)體語句串;}表達(dá)式循環(huán)體語句假(零)真(非零)do…while循環(huán)先執(zhí)行循環(huán)體,使循環(huán)體至少被執(zhí)行一次;建議用一對花括號(hào)將循環(huán)體語句包圍起來(即使循環(huán)體為單語句),并且將右花括號(hào)寫在while前(見上面的第二種寫法),以明顯地區(qū)別于while循環(huán)。
do
循環(huán)體語句;
while(表達(dá)式);
do
{
循環(huán)體語句;
}while(表達(dá)式);表達(dá)式循環(huán)體語句假(零)真#include<iostream>//4-1.cppusingnamespacestd;intmain(){inti,sum;
i=1;
while(i<=100){ sum+=i;}cout<<"sum="<<sum<<endl;
return0;}程序改錯(cuò)請用do-while改寫!sum=0;i++;#include<iostream>//4-2.cppusingnamespacestd;intmain(){inti,sum=0;
i=1;
do{ sum+=i;i++;}while(i<=100);cout<<"sum="<<sum<<endl;
return0;}用do-while改寫實(shí)戰(zhàn)練習(xí)輸出正整數(shù)n的所有約數(shù)。#include<iostream>//4-3.cpp#include<cstdlib>usingnamespacestd;intmain(){ inti,n; cout<<"請輸入一個(gè)正整數(shù):"; cin>>n; if(n<1)exit(0); cout<<n<<"的所有約數(shù)為:"; i=0; while(i<n) { i++; if(n%i==0)cout<<i<<""; } cout<<endl;return0;}for循環(huán)表達(dá)式1被且僅被執(zhí)行一次;3個(gè)表達(dá)式均可缺省,缺省表達(dá)式2表示true,但兩個(gè)分號(hào)不能缺??;可以將循環(huán)體語句與表達(dá)式3合并。for(表達(dá)式1;表達(dá)式2;表達(dá)式3)循環(huán)體語句;for(表達(dá)式1;表達(dá)式2;表達(dá)式3){循環(huán)體語句串;}表達(dá)式2循環(huán)體語句假(零)真(非零)表達(dá)式3表達(dá)式1用公式:π/4≈1-1/3+1/5-1/7+…
求π的近似值,直到最后一項(xiàng)的絕對值小于10^-6為止實(shí)戰(zhàn)練習(xí)#include<iostream>//4-4.cpp#include<cmath>usingnamespacestd;intmain(){ floatn,t,pi; ints; t=1; pi=0; s=1; for(n=1.0;fabs(t)>1e-6;n=n+2) { pi=pi+t; s=-s; t=s/n; } pi=pi*4; cout<<"pi="<<pi<<endl;return0;}開關(guān)語句switch(整型或枚舉型表達(dá)式){case
常量表達(dá)式1:語句組1;case
常量表達(dá)式2:語句組2;…case
常量表達(dá)式n:語句組n;default:語句組n+1;}整型或枚舉型表達(dá)式常量1語句組1常量2語句組2常量n語句組n其他語句組n+1break;break;break;實(shí)戰(zhàn)練習(xí)輸入一個(gè)十進(jìn)制數(shù),根據(jù)輸入的數(shù)輸出所對應(yīng)的星期幾,若所輸入的數(shù)小于1或大于7,則輸出“出錯(cuò)”。#include<iostream>//4-5.cppusingnamespacestd;intmain(){ intday; cout<<"請輸入一個(gè)整數(shù):"; cin>>day; switch(day) { case1:cout<<"星期一"<<endl; case2:cout<<"星期二"<<endl; case3:cout<<"星期三"<<endl; case4:cout<<"星期四"<<endl; case5:cout<<"星期五"<<endl; case6:cout<<"星期六"<<endl; case7:cout<<"星期天"<<endl; default:cout<<"超出范圍!"<<endl; } return0;}#include<iostream>//改進(jìn)后的程序4-6.cppusingnamespacestd;intmain(){ intday; cout<<"請輸入一個(gè)整數(shù):"; cin>>day; switch(day) { case1:cout<<"星期一"<<endl;break; case2:cout<<"星期二"<<endl;break; case3:cout<<"星期三"<<endl;break; case4:cout<<"星期四"<<endl;break; case5:cout<<"星期五"<<endl;break; case6:cout<<"星期六"<<endl;break; case7:cout<<"星期天"<<endl;break; default:cout<<"超出范圍!"<<endl; } return0;}實(shí)戰(zhàn)練習(xí)題目:將百分制的分?jǐn)?shù)轉(zhuǎn)換為5個(gè)等級(jí)90分以上為‘A’,80~89分為‘B’,70~79分為‘C’,60~69分為‘D’,60分以下為‘E’。例如,輸入75,則顯示C?!痉治觥肯扰袛噍斎氲臄?shù)據(jù)是否在合理的分?jǐn)?shù)范圍(0~100)內(nèi),然后再判斷是哪個(gè)分?jǐn)?shù)段:90分以上輸出A,80~89分輸出B,70~79分輸出C,60~69分輸出D,否則顯示E。用if語句實(shí)現(xiàn)if(s<0||s>100) cout<<"Inputdataerror\n"; else if(s>=90) cout<<"A\n"; else if(s>=80) cout<<"B\n"; else if(s>=70) cout<<"C\n"; else if(s>=60) cout<<"D\n"; else cout<<"E\n";#include<iostream>//4-7.cppusingnamespacestd;intmain(){ ints; cout<<"Pleaseinputthescore:"; cin>>s; if(s<0||s>100)cout<<"error\n"; else {
用switch語句實(shí)現(xiàn)使用switch語句,當(dāng)然最笨的辦法是每一個(gè)分?jǐn)?shù)一個(gè)case分支。有沒有簡化的辦法呢?
switch(s/10)//根據(jù)轉(zhuǎn)換值進(jìn)行分支選擇
{ case10: case9: cout<<"A\n"; break; case8: cout<<"B\n"; break; case7: cout<<"C\n"; break; case6: cout<<"D\n"; break; default: cout<<"E\n"; } } return0;}跳轉(zhuǎn)語句
break僅結(jié)束其所在的一層循環(huán)語句或者開關(guān)語句
continue提前結(jié)束本輪循環(huán),準(zhǔn)備進(jìn)入下一輪循環(huán)
return
返回語句,用于函數(shù)結(jié)束時(shí)return;對應(yīng)與返回類型為
void
的函數(shù)return表達(dá)式;表達(dá)式的數(shù)據(jù)類型對應(yīng)于函數(shù)的返回類型
goto不提倡使用。建議不要使用。for循環(huán)中的break及continue
C++支持大型軟件開發(fā)顯然,不宜將所有的語句都寫入主函數(shù)其實(shí),應(yīng)該使主函數(shù)盡可能地簡單。主要起調(diào)度作用,
控制其他功能模塊(即其他函數(shù)的調(diào)用);函數(shù)逐個(gè)調(diào)用及返回,實(shí)現(xiàn)多種功能。啟動(dòng)程序執(zhí)行時(shí),將使主函數(shù)自動(dòng)執(zhí)行;在主函數(shù)中遇到return語句將引起程序結(jié)束。二、基本程序擴(kuò)展主函數(shù)功能函數(shù)1功能函數(shù)2功能函數(shù)3功能函數(shù)4功能函數(shù)5功能函數(shù)6例如:改編“算術(shù)測驗(yàn)”程序之二設(shè)計(jì)“加法測驗(yàn)”功能函數(shù)首先將原來的主函數(shù)名改成
add_test;去掉輸出成績語句,將測驗(yàn)成績作為該函數(shù)的返回值returnscore;
設(shè)計(jì)主函數(shù),調(diào)用add_test函數(shù)今后可擴(kuò)展主函數(shù)加法測驗(yàn)減法測驗(yàn)…………
//test3.cpp
#include<iostream>
usingnamespacestd;
intadd_test(); //①函數(shù)聲明intmain() //主函數(shù)盡可能地簡單
{
intscore;score=add_test(); //②函數(shù)調(diào)用(執(zhí)行語句)
cout<<”成績:”<<score<<”分”<<endl;return0;}
intadd_test() //③函數(shù)定義(函數(shù)實(shí)現(xiàn))
{
intx,y,z;
inti,score;time_tt;srand(time(&t)); //為了獲得更好的隨機(jī)性
score=0;
i=0;
while(i<10){x=rand()%21;y=rand()%21;cout<<x<<”+”<<y<<”=”;cin>>z;
if(x+y==z)score+=10;i++;
}returnscore; //返回測試成績}//test3.cpp 增加減法測驗(yàn)功能(請參見2.3.2小節(jié))
#include<iostream>
usingnamespacestd;
intadd_test(),sub_test(); //①函數(shù)聲明intmain() //主函數(shù)起調(diào)度作用
{
intscore,choice=1;
while(choice){cout<<”\n1----加法測試”
<<”\n2----減法測試”
<<”\n0----退出”<<endl;cin>>choice;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 臨時(shí)用電專項(xiàng)方案
- 2026年文藝批評音樂能力考核標(biāo)準(zhǔn)試題及答案
- 空乘護(hù)理技巧培訓(xùn)
- 2025-2030物聯(lián)網(wǎng)技術(shù)應(yīng)用場景分析及產(chǎn)業(yè)投資規(guī)模預(yù)估評估報(bào)告
- 2025-2030物流行業(yè)倉儲(chǔ)機(jī)器人技術(shù)應(yīng)用現(xiàn)狀及發(fā)展前景研究報(bào)告
- 2025-2030牛羊肉產(chǎn)業(yè)經(jīng)濟(jì)價(jià)值分析及市場消費(fèi)預(yù)測研究
- 職業(yè)生涯規(guī)劃辯論賽策劃方案
- 新聞寫作培訓(xùn)課件網(wǎng)
- 新金融準(zhǔn)則培訓(xùn)
- 2025年蓋州市招聘教師考試真題
- 2025年江蘇省泰州市保安員理論考試題庫及答案(完整)
- 公司酶制劑發(fā)酵工工藝技術(shù)規(guī)程
- 2025省供銷社招聘試題與答案
- 大數(shù)據(jù)分析在供熱中的應(yīng)用方案
- 污泥安全管理制度范本
- 開題報(bào)告范文基于人工智能的醫(yī)學(xué)像分析與診斷系統(tǒng)設(shè)計(jì)
- 大黃附子細(xì)辛湯課件
- 單位內(nèi)部化妝培訓(xùn)大綱
- 高校行政管理流程及案例分析
- 高效節(jié)水灌溉方式課件
- 基坑安全工程題庫及答案解析
評論
0/150
提交評論