《算法的基本控制結(jié)構(gòu).ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《算法的基本控制結(jié)構(gòu).ppt(19頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、算法的基本控制結(jié)構(gòu),基本結(jié)構(gòu),順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu),1.順序結(jié)構(gòu):按照語(yǔ)句的先后順序執(zhí)行即為順序結(jié)構(gòu),是算法中最簡(jiǎn)單的一種結(jié)構(gòu)。,2.選擇結(jié)構(gòu):根據(jù)條件的不同,程序執(zhí)行不同的語(yǔ)句,即為選擇結(jié)構(gòu)。選擇結(jié)構(gòu)的語(yǔ)句有兩種:if語(yǔ)句和switch語(yǔ)句。,3.循環(huán)語(yǔ)句:根據(jù)約束條件的不同,多次重復(fù)執(zhí)行某一條或多條語(yǔ)句的結(jié)構(gòu),稱為循環(huán)結(jié)構(gòu)。循環(huán)結(jié)構(gòu)的語(yǔ)句有for語(yǔ)句、while語(yǔ)句、dowhile語(yǔ)句三種語(yǔ)句。,為了用符號(hào)來表述不同的控制結(jié)構(gòu)或者程序,人們?cè)O(shè)計(jì)了流程圖,簡(jiǎn)單的可以理解為示意圖。,流程圖常用符號(hào):,1.選擇結(jié)構(gòu),if (表達(dá)式) 語(yǔ)句1 else 語(yǔ)句2;,執(zhí)行順序:先計(jì)算表達(dá)式的值
2、,若表達(dá)式為true,則執(zhí)行語(yǔ)句1,否則執(zhí)行語(yǔ)句2。語(yǔ)句1和語(yǔ)句2也可以是用大括號(hào)括起來的多條語(yǔ)句,流程圖,火車托運(yùn)行李,要根據(jù)行李的重量按不同標(biāo)準(zhǔn)收費(fèi)。50kg以內(nèi)(含50kg),按每千克0.35元收費(fèi),超出50kg的部分按每千克0.50元收費(fèi)?,F(xiàn)輸入托運(yùn)行李的重量,計(jì)算并輸出運(yùn)費(fèi)。,if weight=50 pay=weight*50; else pay=pay+(weight-50)*0.5;,if weight=50 pay=weight*0.35; else pay=50*0.35+(weight-50)*0.5;,輸入a,b兩個(gè)整數(shù),如果ab的話,交換a,b的值,并輸出a,b的值。
3、 輸入: 15 8 輸出: 15 8,if (ab) c=a; a=b; b=c; ,if語(yǔ)句的嵌套:多次的選擇判斷,需要在if語(yǔ)句內(nèi)多次調(diào)用if語(yǔ)句,稱為if語(yǔ)句的嵌套,不同的嵌套形式:,if (表達(dá)式1) if (表達(dá)式2) 語(yǔ)句1; else 語(yǔ)句2; else if (表達(dá)式3) 語(yǔ)句3; else 語(yǔ)句4;,輸入x,y兩個(gè)整數(shù),比較兩個(gè)數(shù)字的大小,根據(jù)它們的大小,分別輸出:xy,xy,x=y。 輸入: 8 9 輸出: xy,#include using namespace std; int main() int x,y; cinxy; if (x!=y) if (xy) couty“
4、endl; else cout“xy“endl; else cout“x=y“endl; return 0; ,#include using namespace std; int main() int x,y; cinxy; if (xy) couty“endl; else if (xy) cout“xy“endl; else cout“x=y“endl; return 0; ,輸入一個(gè)整數(shù)a,判斷是否為偶數(shù)。是的話輸出“YES”否則輸出“NO”。 輸入: 13 輸出: NO,輸入三角形的三邊,判斷它是否直角三角形,若是則輸出“yes”,否則輸出“no”,若根本形成不了三解形則輸出“not a
5、 triangle”。 輸入: 3 4 5 輸出: yes,從鍵盤上讀入三個(gè)數(shù),按由大到小的順序把它們打印出來。 輸入: 13 12 14 輸出: 14 13 12,輸入一個(gè)三位數(shù)的整數(shù),將數(shù)字位置重新排列,組成一個(gè)盡可大的三位數(shù)。 輸入: 213 輸出: 321,#include using namespace std; int main() char ch1,ch2,ch3,t; cinch1ch2ch3; if (ch1t; ,switch語(yǔ)句:根據(jù)同一表達(dá)式的多個(gè)不同的結(jié)果,分別進(jìn)行不同的選擇,由switch語(yǔ)句來解決,避免if語(yǔ)句的反復(fù)嵌套。,switch (表達(dá)式) case 常量
6、1:語(yǔ)句1; case 常量2:語(yǔ)句2; case 常量n:語(yǔ)句n; default:語(yǔ)句n+1; ,switch語(yǔ)句的執(zhí)行順序:首先計(jì)算switch語(yǔ)句中表達(dá)式的值,然后在case語(yǔ)句中找值相等的常量,則以此為入口,開始順序執(zhí)行,執(zhí)行結(jié)束后必須加break。如果沒有找到相等的值,則從default開始執(zhí)行。,switch語(yǔ)句后面的表達(dá)式的值必須是整型、字符型、枚舉型之一。 每個(gè)常量的值不能相同,但次序不影響執(zhí)行結(jié)果。 每個(gè)case分支可以有多條語(yǔ)句,但不必用。 每個(gè)case分支要以break結(jié)束,用以結(jié)束switch語(yǔ)句。 當(dāng)有若干分支需要執(zhí)行相同操作時(shí),多個(gè)case可以用執(zhí)行相同的語(yǔ)句。,通過鍵盤輸入06,轉(zhuǎn)換成星期輸出。 輸入:0 輸出:Sunday,通過鍵盤輸入年份和月份,輸出該月共有多少天。 輸入:2011 11 輸出:30,