1 of 30

條件判斷敘述

2 of 30

條件判斷流程圖

身高>110

看人玩遊樂設施

玩遊樂設施

True

False

回家

3 of 30

條件判斷 (if)

if(條件式){

成立敘述;

……

}

……

若成立,True

若不成立,False

int a=4;

if(a<10){

a++;

}

cout <<a;

int a=11;

if(a<10){

a++;

}

cout <<a;

輸出結果:___________ ___________

5

11

4 of 30

{}的有無

int a = 5;

if ( a < 3 ){

a++;

a*=2;

}

cout << a;

int a = 5;

if ( a < 3 )

a++;

a*=2;

cout << a;

結果:___________ _____________

int a = 5;

if ( a < 3 ){

a++;

}

a*=2;

cout <<a;

為if判斷式外的敘述

仍然被執行

5

10

成立敘述只有一行

若要執行多行須用{}

5 of 30

條件判斷 (if-else)

if(條件式){

成立敘述;

}else{

不成立敘述;

}

…….

若成立,True

若不成立,False

int a=4;

if(a<10){

a++;

}else{

a--;

}

cout <<a;

int a=11;

if(a<10){

a++;

}else{

a--;

}

cout <<a;

輸出結果:___________ ___________

5

10

6 of 30

a011: 及格

題目描述一般來說,我們會以60分做為及格與否的標準,60分(含)以上為及格,不滿60分則是不及格,現在給你一個分數,請你判斷是否及格。

若輸入的是及格的分數,請輸出 PASS,否則輸出 FAIL。

輸入範例:

輸入1:

80

輸入2:

40

輸出1:

PASS

輸出2:

FAIL

7 of 30

a012: 奇數與偶數

題目描述輸入一個整數 N,即為要判斷的數。

若輸入的整數為奇數,則輸出 ODD,若為偶數則輸出 EVEN。

輸入範例:

輸入1:

1

輸入2:

2

輸出1:

ODD

輸出2:

EVEN

8 of 30

關係運算子

執行優先順序

比較運算子

意義

範例

結果(a=5,b=3)

1

<

小於

a<b

False (0)(假)

>

大於

a>b

True (1) (真)

<=

小於等於

a<=b

False (0) (假)

>=

大於等於

a>=b

True (1) (真)

2

==

等於

a==b

False (0) (假)

!=

不等於

a!=b

True (1) (真)

9 of 30

邏輯運算子

執行優先順序

邏輯運算子

意義

範例

1

!

NOT(不) (否)

!(a == 100)

2

&&

AND (且)

(a>=0 && a<=100)

3

||

OR (或)

(a<0 || a>100)

10 of 30

a

b

a&&b

a||b

0

0

0

0

0

1

0

1

1

0

0

1

1

1

1

1

邏輯運算-真值表(truth table)

&&(且)-像乘法

|| (或)-像加法

0:false

1:true

11 of 30

int a=30,b=80;

if(a>=0 && b<40){

cout << "true";

}else{

cout << "false";

}

a>=0

b<40

true

false

&&

false

int a=30,b=80;

if(a>=0 || b<40){

cout << "true";

}else{

cout << "false";

}

a>=0

b<40

true

false

||

true

12 of 30

int a=30,b=80;

if(a>=0 || b<40 && a> 40){

cout << "true";

}else{

cout << "false";

}

a>=0

b<40

a>40

true

false

false

||

true

&&

false

13 of 30

int a=30,b=80;

if(a>=0 || b<40 && a> 40){

cout << "true";

}else{

cout << "false";

}

a>=0

b<40

a>40

true

false

false

||

true

&&

false

14 of 30

int a=30,b=80;

if((a>=0 || b<40) && a> 40){

cout << "true";

}else{

cout << "false";

}

(a>=0

b<40)

a>40

true

false

false

||

true

&&

false

15 of 30

運算子優先順序(截至目前)

順序

運算子

說明

結合順序

1

()

左至右

2

!

邏輯NOT

右至左

++、- -

遞增、遞減(前置)

3

*、/、%

乘、除、求餘

左至右

4

+、-

加、減

左至右

5

<、<=、>、>=

關係運算

左至右

6

==、!=

關係運算

左至右

7

&&

邏輯AND

左至右

8

||

邏輯OR

左至右

9

=、+=、-=、*=、/=、%=

指定運算子

右至左

16 of 30

a013: 成績分佈

題目描述輸入一個整數 N (0<=N<=100) 代表要判斷的成績。若這個分數是落在 75~90 之間(包括75和90),則輸出 YES,否則輸出 NO。

輸入範例:

輸入1:

80

輸入2:

60

輸出1:

YES

輸出2:

NO

17 of 30

巢狀if敘述

int math,eng;

cin >> math >> eng;

if(math>=60){

if(eng>=60){

cout << "class A";

}else{

cout << "class B";

}

}else{

if(eng>=60){

cout << "class C";

}else{

cout << "class D";

}

}

縮排

math

english

class

70

20

B

50

20

D

75

65

A

10

80

C

18 of 30

可讀性—排版不良的錯誤

19 of 30

多向選擇(if-else if-else)

int n; //骰子點數

cin >> n;

if(n==1){

cout << "A";

}else if(n==2){

cout << "B";

}else if(n==3){

cout << "C";

}else if(n==4){

cout << "D";

}else if(n==5){

cout << "E";

}else{

cout << "again";

}

n==1

True

選A

False

n==2

True

選B

False

n==3

True

選C

False

n==4

True

選D

False

n==5

True

選E

False

再一次

20 of 30

int n; //骰子點數

cin >> n;

switch(n){

case 1:

cout << "A";

break;

case 2:

cout << "B";

break;

case 3:

cout << "C";

break;

case 4:

cout << "D";

break;

case 5:

cout << "E";

break;

default:

cout << "again“;

}

多向選擇(switch-case)

n=3

遇到break,離開switch

沒有break

則會執行其他case的敘述

直到遇到break才離開switch

21 of 30

switch-語法

switch (運算式 或 變數){

  case 值1:

          敘述1;

          break;

  case 值2:

          敘述2;

          break;

          ...........

  default:

          敘述;

須為整數或字元,不能為浮點數

若為值1,執行敘述1

若以上的值都不符合,執行以下敘述

22 of 30

switch-多值

int month;

cin >> month;

switch(month){

case 1:

case 2:

case 3:

cout << "spring";

break;

case 4:

case 5:

case 6:

cout << "summer";

break;

case 7:

case 8:

case 9:

cout << "fall";

break;

default:

cout << "winter";

}

值為1,2,3時

值為4,5,6時

值為7,8,9時

其他

23 of 30

switch-少了break

int n; //骰子點數

cin >> n;

switch(n){

case 1:

cout << "A";

break;

case 2:

cout << "B";

case 3:

cout << "C";

break;

case 4:

cout << "D";

break;

case 5:

cout << "E";

default:

cout << "again“;

}

n=1

A

n=2

BC

n=3

C

n=4

D

n=5

Eagain

n=6

again

24 of 30

a014: 貨比三家

題目描述輸入三個正整數,代表這件商品的三個售價。

請輸出最便宜的售價,也就是三個售價中最小的那一個是多少。

輸入範例:

輸入1:

1 2 3

輸入2:

2 2 3

輸出1:

1

輸出2:

2

25 of 30

a015: 大小關係

題目描述輸入兩個整數 A、B,即要判斷大小關係的兩個數。

請依照下面範例輸出的格式,輸出其大小關係。

輸入範例:

輸入1:

1 1

輸入2:

1 2

輸入3:

2 1

輸出1:

1=1

輸出2:

1<2

輸出3:

2>1

26 of 30

a016: 閏年判斷

題目描述輸入一個正整數 N,代表這是西元 N 年。

若這一年是閏年,則輸出 YES,否則輸出 NO。

如果這一年不是4的倍數,則它是平年。

如果這一年是4的倍數,但不是100的倍數,則它是閏年。

如果這一年是100的倍數,但不是400的倍數,則它是平年。

如果這一年是400的倍數,則它是閏年

輸入範例:

輸入1:

1997

輸入2:

2012

輸出1:

NO

輸出2:

YES

27 of 30

a017: 成績等第

題目描述輸入一個整數 N (0<=N<=100) 代表要判斷的成績。

請輸出其對應的等第。

90分(含)~100分(含)為A等

80分(含)~90分(不含)為B等

70分(含)~80分(不含)為C等

60分(含)~70分(不含)為D等

不滿60分者為E等

輸入範例:

輸入1:

95

輸入2:

85

輸出1:

A

輸出2:

B

28 of 30

a018: 下午茶時間

題目描述輸入兩個整數 H、M (0<=H<24、0<=M<60),分別代表這個時間的小時和分鐘,其中小時是24小時制。若這個時間是下午茶的時間(14:20(含)~16:40(含)),則輸出 YES,否則輸出 NO。

輸入範例:

輸入1:

10 10

輸入2:

15 10

輸出1:

NO

輸出2:

YES

29 of 30

a019: 刮刮樂兌獎(一)

題目描述輸入兩個0~9的整數,代表刮刮樂上的兩個數字。

請輸出這張刮刮樂最高可以得到多少獎金,而如果沒有中獎,則輸出 0。

每張刮刮樂上面有兩個0~9的數字。

如果第一個數字是奇數,則可以得到100元。

如果第二個數字是2、5、8,則可以得到200元。

如果第一個和第二個的數字相同,則可以得到50元。

以上三種得獎方式,你只能選擇獎金最高的一種來領取。

輸入範例:

輸入1:

1 3

輸入2:

2 5

輸出1:

100

輸出2:

200

30 of 30

a020: 刮刮樂兌獎(二)

題目描述輸入兩個0~9的整數,代表刮刮樂上的兩個數字。

請輸出這張刮刮樂最高可以得到多少獎金,而如果沒有中獎,則輸出 0。

每張刮刮樂上面有兩個0~9的數字。

如果第一個數字是奇數,則可以得到100元。

如果第二個數字是2、5、8,則可以再得到200元。

如果第一個和第二個的數字相同,則可以再得到50元。

以上三種得獎方式的獎金是累加的,也就是說如果三種方式都中獎的話

你就可以得到最高獎金 350元。

輸入範例:

輸入1:

1 3

輸入2:

2 5

輸出1:

100

輸出2:

200