《选择判断》PPT课件.ppt
1,第四章,選擇判斷(Decision),2,大綱,4.1 if 單一選擇 4.2ifelse雙重選擇 巢狀ifelse巢狀ifelse if else if4.3 switch.case 多重選擇 4.4 break,continue 之用途,3,4.1 if 單一選擇,格式1:單一敘述 if(條件式)敘述;格式2:多敘述 if(條件式)敘述1;敘述2;條件式為真則執行敘述式;否則不執行。,條件式,敘述,下一敘述,0,1,4,#include/coutusing namespace std;int main()int a,b,c,max;cout a b c;max=a;/以a當最大 if(b max)/max與b比較 max=b;if(c max)/max與c比較 max=c;cout最大值為maxendl;return 0;,例題:任意輸入a,b,c三個數,求此三數之最大值後輸出。,5,例題:輸入三角形三邊長,判斷該三邊長可否構成一三角形,若可以則求其面積後輸出。,#include/coutusing namespace std;int main()float a,b,c,area,s;cout a b c;if(a+bc,6,例題:任意輸入a,b,c三數,將此三數由小到大排序後輸出。,#include/coutusing namespace std;int main()short a,b,c,t;cout a b c;cout b)/若ab則互換 t=a;a=b;b=t;if(b c)/若bc則互換 t=b;b=c;c=t;if(a b)/若ab則互換 t=a;a=b;b=t;cout排序後:a,b,cendl;return 0;,7,4.2ifelse雙重選擇,格式:if(條件式)敘述1;else 敘述2;(條件式)?敘述1;:敘述2;條件式為真則執行敘述1;否則執行敘述2。,條件式,敘述1,敘述2,下一敘述,0,1,8,例題:輸入分數(0-100),若大於等於60分則印出”及格”,否則印出”不及格”。,#include/coutusing namespace std;int main()int score;cout score;if(score=60)cout“及格”;else cout“不及格”;cout endl;return 0;,9,4.2.1 巢狀ifelse,巢狀的ifelse是一層又一層的判斷if內有if或ifelse else內有if或ifelse 每一層內可能為單一敘述或多個敘述 該層敘述被執行就結束不具重複性,10,巢狀ifelse之流程圖,條件1,條件2,敘述1,敘述3,敘述2,敘述4,下一敘述,1,1,0,0,if(條件1)敘述1;if(條件2)敘述2;else 敘述3;else 敘述4;,11,例題:,#include/coutusing namespace std;int main()int price;cout price;if(price 1000)if(price 500)cout“Buy this”endl;else cout“Ask Mother”endl;else cout“Donot buy this”endl;return 0;,12,if(條件1)敘述1;else if(條件2)敘述2;else if(條件3)敘述3 else 敘述4;1.(條件1)為真時執行(敘述1)。2.(條件1)為假且(條件2)為真時執行(敘述2)。3.(條件1)為假且(條件2)為假且(條件3)為真時執行(敘述3)。4.(條件1)為假且(條件2)為假且(條件3)為假時執行(敘述4)。,4.2.2 巢狀ifelse ifelse,13,if else if else之流程圖,條件一,條件二,條件三,敘述一,敘述二,敘述三,下一敘述,1,1,1,0,0,0,敘述四,14,例題:用亂數函數產生任一整數,再自鍵盤輸入數字進行猜數字遊戲,若猜得太大則輸出提示太大了,否則輸出太小了,若5次以內猜對,則輸出”你很聰明”。,#include/cout#include/rand()using namespace std;int main()int i,num;srand(time(NULL);/設定亂數種子 i=rand()%100;/產生099亂數 cout num;if(num i)cout“太大了!”;else if(num=i)cout“你猜對了!共猜了”cnt“次!”endl;break;else cout“太小了!”;if(cnt 5)cout“你很聰明喔!”endl;return 0;,15,格式 switch(變數或表示式)case 常數1:敘述;break;case 常數2:敘述;break;case 常數3:敘述;break;default:敘述;變數或表示式最後之資料型態需為字元char或整數integer資料。,4.3 switch.case 多重選擇,16,switch.case之流程圖,case 1,case 2,case 3,default,常數1,常數2,常數3,.,敘述1,敘述2,敘述3,敘述,break;,break;,break;,下一敘述,1,1,1,0,0,0,17,例題:任意輸入一個數字(09)並將其轉為國字(零玖)。,#include/coutusing namespace std;int main()int n;cout n;switch(n)case 0:cout“零”;break;case 1:cout“壹”;break;case 2:cout“貳”;break;case 3:cout“參”;break;case 4:cout肆;break;case 5:cout“伍”;break;case 6:cout“陸”;break;case 7:cout“柒”;break;case 8:cout“捌”;break;case 9:cout“玖”;break;return 0;,18,4.4 break,continue 之用途,break(中斷):跳出迴圈之工作。continue(繼續):繼續迴圈上層之敘述。,break,continue,19,例題:輸入除數與被除數求商與餘數,若除數為0則重新要求輸入。,#include/coutusing namespace std;int main()long divisor,dividen;char ch;do cout divisor;cout dividen;if(divisor=0)cout ch;while(ch!=n);return 0;,20,習題,撰寫一個程式輸入6位整數密碼,再輸入6位整數確認密碼,並輸出密碼正確或密碼不正確,請重新輸入。利用(1)if;(2)if else,撰寫一個程式:任意輸入一個整數分數(0 100),並判斷是否及格(大於等於60印出passed;否則印出failed)。利用if else,撰寫一個程式:任意輸入一整數分數(0 100),並判斷成績等級。(100分印出A;9099印出B;80 89印出C;70 79印出D;60 69印出E;60以下印出F)試寫一程式,由鍵盤輸入用水量,然後依據下表求初應繳的水費,其基本水費為90元。(10度以下,每度10元;1120度,每度12元;2140度,每度15元;4150度,每度18元;50度以上,每度20元),21,習題,撰寫一個輸入商品代號查詢該商品名稱及價錢的程式,商品代號名稱及價錢如下:(如無該商品代號則輸出:查無該商品代號請重新輸入)輸出結果如下:請輸入商品代號(15),終止查詢請輸入01鉛筆 5 元請輸入商品代號(15),終止查詢請輸入06查無該商品代號請重新輸入請輸入商品代號(15),終止查詢請輸00謝謝使用,22,