專業(yè)C4講流程控制課件教學(xué)講義_第1頁
專業(yè)C4講流程控制課件教學(xué)講義_第2頁
專業(yè)C4講流程控制課件教學(xué)講義_第3頁
專業(yè)C4講流程控制課件教學(xué)講義_第4頁
專業(yè)C4講流程控制課件教學(xué)講義_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

本講知識點:三種循環(huán)結(jié)構(gòu)的掌握開關(guān)語句的掌握跳轉(zhuǎn)語句、返回語句的掌握重點:流程控制結(jié)構(gòu)難點:for循環(huán)結(jié)構(gòu)的執(zhí)行順序第四講流程控制一、流程控制對于算法設(shè)計、算法描述中所出現(xiàn)的條件分支、循環(huán)等結(jié)構(gòu),C++語言需要有與之相應(yīng)語句實現(xiàn)。已經(jīng)證明:任何復(fù)雜的計算流程均可以被分解為以下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)語句條件分支整個結(jié)構(gòu)“單入口、單出口”

if(表達式)語句1;else

語句2;

if(表達式){語句串1;}else

{

語句串2;}表達式語句1語句2假(零)真(非零)while循環(huán)語句

表達式為是否繼續(xù)循環(huán)的條件;先判斷條件,循環(huán)體可能執(zhí)行0次、1次或多次。

while(表達式)循環(huán)體語句;

while(表達式){循環(huán)體語句串;}表達式循環(huán)體語句假(零)真(非零)do…while循環(huán)先執(zhí)行循環(huán)體,使循環(huán)體至少被執(zhí)行一次;建議用一對花括號將循環(huán)體語句包圍起來(即使循環(huán)體為單語句),并且將右花括號寫在while前(見上面的第二種寫法),以明顯地區(qū)別于while循環(huán)。

do

循環(huán)體語句;

while(表達式);

do

{

循環(huán)體語句;

}while(表達式);表達式循環(huán)體語句假(零)真#include<iostream>//4-1.cppusingnamespacestd;intmain(){inti,sum;

i=1;

while(i<=100){ sum+=i;}cout<<"sum="<<sum<<endl;

return0;}程序改錯請用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改寫實戰(zhàn)練習輸出正整數(shù)n的所有約數(shù)。#include<iostream>//4-3.cpp#include<cstdlib>usingnamespacestd;intmain(){ inti,n; cout<<"請輸入一個正整數(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)表達式1被且僅被執(zhí)行一次;3個表達式均可缺省,缺省表達式2表示true,但兩個分號不能缺??;可以將循環(huán)體語句與表達式3合并。for(表達式1;表達式2;表達式3)循環(huán)體語句;for(表達式1;表達式2;表達式3){循環(huán)體語句串;}表達式2循環(huán)體語句假(零)真(非零)表達式3表達式1用公式:π/4≈1-1/3+1/5-1/7+…

求π的近似值,直到最后一項的絕對值小于10^-6為止實戰(zhàn)練習#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(整型或枚舉型表達式){case

常量表達式1:語句組1;case

常量表達式2:語句組2;…case

常量表達式n:語句組n;default:語句組n+1;}整型或枚舉型表達式常量1語句組1常量2語句組2常量n語句組n其他語句組n+1break;break;break;實戰(zhàn)練習輸入一個十進制數(shù),根據(jù)輸入的數(shù)輸出所對應(yīng)的星期幾,若所輸入的數(shù)小于1或大于7,則輸出“出錯”。#include<iostream>//4-5.cppusingnamespacestd;intmain(){ intday; cout<<"請輸入一個整數(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>//改進后的程序4-6.cppusingnamespacestd;intmain(){ intday; cout<<"請輸入一個整數(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;}實戰(zhàn)練習題目:將百分制的分數(shù)轉(zhuǎn)換為5個等級90分以上為‘A’,80~89分為‘B’,70~79分為‘C’,60~69分為‘D’,60分以下為‘E’。例如,輸入75,則顯示C?!痉治觥肯扰袛噍斎氲臄?shù)據(jù)是否在合理的分數(shù)范圍(0~100)內(nèi),然后再判斷是哪個分數(shù)段:90分以上輸出A,80~89分輸出B,70~79分輸出C,60~69分輸出D,否則顯示E。用if語句實現(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語句實現(xiàn)使用switch語句,當然最笨的辦法是每一個分數(shù)一個case分支。有沒有簡化的辦法呢?

switch(s/10)//根據(jù)轉(zhuǎ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),準備進入下一輪循環(huán)

return

返回語句,用于函數(shù)結(jié)束時return;對應(yīng)與返回類型為

void

的函數(shù)return表達式;表達式的數(shù)據(jù)類型對應(yīng)于函數(shù)的返回類型

goto不提倡使用。建議不要使用。for循環(huán)中的break及continue

C++支持大型軟件開發(fā)顯然,不宜將所有的語句都寫入主函數(shù)其實,應(yīng)該使主函數(shù)盡可能地簡單。主要起調(diào)度作用,

控制其他功能模塊(即其他函數(shù)的調(diào)用);函數(shù)逐個調(diào)用及返回,實現(xiàn)多種功能。啟動程序執(zhí)行時,將使主函數(shù)自動執(zhí)行;在主函數(shù)中遇到return語句將引起程序結(jié)束。二、基本程序擴展主函數(shù)功能函數(shù)1功能函數(shù)2功能函數(shù)3功能函數(shù)4功能函數(shù)5功能函數(shù)6例如:改編“算術(shù)測驗”程序之二設(shè)計“加法測驗”功能函數(shù)首先將原來的主函數(shù)名改成

add_test;去掉輸出成績語句,將測驗成績作為該函數(shù)的返回值returnscore;

設(shè)計主函數(shù),調(diào)用add_test函數(shù)今后可擴展主函數(shù)加法測驗減法測驗…………

//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ù)實現(xiàn))

{

intx,y,z;

inti,score;time_tt;srand(time(&t)); //為了獲得更好的隨機性

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 增加減法測驗功能(請參見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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論