條件判斷敘述
條件判斷流程圖
身高>110
看人玩遊樂設施
玩遊樂設施
True
False
回家
條件判斷 (if)
if(條件式){
成立敘述;
……
}
……
若成立,True
若不成立,False
int a=4;
if(a<10){
a++;
}
cout <<a;
int a=11;
if(a<10){
a++;
}
cout <<a;
輸出結果:___________ ___________
5
11
{}的有無
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
成立敘述只有一行
若要執行多行須用{}
條件判斷 (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
a011: 及格
題目描述:一般來說,我們會以60分做為及格與否的標準,60分(含)以上為及格,不滿60分則是不及格,現在給你一個分數,請你判斷是否及格。
若輸入的是及格的分數,請輸出 PASS,否則輸出 FAIL。
輸入範例:
輸入1:
80
輸入2:
40
輸出1:
PASS
輸出2:
FAIL
a012: 奇數與偶數
題目描述:輸入一個整數 N,即為要判斷的數。
若輸入的整數為奇數,則輸出 ODD,若為偶數則輸出 EVEN。
輸入範例:
輸入1:
1
輸入2:
2
輸出1:
ODD
輸出2:
EVEN
關係運算子
執行優先順序 | 比較運算子 | 意義 | 範例 | 結果(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) (真) |
�
邏輯運算子
執行優先順序 | 邏輯運算子 | 意義 | 範例 |
1 | ! | NOT(不) (否) | !(a == 100) |
2 | && | AND (且) | (a>=0 && a<=100) |
3 | || | OR (或) | (a<0 || a>100) |
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
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
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
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
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
運算子優先順序(截至目前)
順序 | 運算子 | 說明 | 結合順序 |
1 | () | | 左至右 |
2 | ! | 邏輯NOT | 右至左 |
++、- - | 遞增、遞減(前置) | ||
3 | *、/、% | 乘、除、求餘 | 左至右 |
4 | +、- | 加、減 | 左至右 |
5 | <、<=、>、>= | 關係運算 | 左至右 |
6 | ==、!= | 關係運算 | 左至右 |
7 | && | 邏輯AND | 左至右 |
8 | || | 邏輯OR | 左至右 |
9 | =、+=、-=、*=、/=、%= | 指定運算子 | 右至左 |
a013: 成績分佈
題目描述:輸入一個整數 N (0<=N<=100) 代表要判斷的成績。若這個分數是落在 75~90 之間(包括75和90),則輸出 YES,否則輸出 NO。
輸入範例:
輸入1:
80
輸入2:
60
輸出1:
YES
輸出2:
NO
巢狀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
可讀性—排版不良的錯誤
多向選擇(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
再一次
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
switch-語法
switch (運算式 或 變數){
case 值1:
敘述1;
break;
case 值2:
敘述2;
break;
...........
default:
敘述;
}
須為整數或字元,不能為浮點數
若為值1,執行敘述1
若以上的值都不符合,執行以下敘述
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時
其他
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
a014: 貨比三家
題目描述:輸入三個正整數,代表這件商品的三個售價。
請輸出最便宜的售價,也就是三個售價中最小的那一個是多少。
輸入範例:
輸入1:
1 2 3
輸入2:
2 2 3
輸出1:
1
輸出2:
2
a015: 大小關係
題目描述:輸入兩個整數 A、B,即要判斷大小關係的兩個數。
請依照下面範例輸出的格式,輸出其大小關係。
輸入範例:
輸入1:
1 1
輸入2:
1 2
輸入3:
2 1
輸出1:
1=1
輸出2:
1<2
輸出3:
2>1
a016: 閏年判斷
題目描述:輸入一個正整數 N,代表這是西元 N 年。
若這一年是閏年,則輸出 YES,否則輸出 NO。
如果這一年不是4的倍數,則它是平年。
如果這一年是4的倍數,但不是100的倍數,則它是閏年。
如果這一年是100的倍數,但不是400的倍數,則它是平年。
如果這一年是400的倍數,則它是閏年
輸入範例:
輸入1:
1997
輸入2:
2012
輸出1:
NO
輸出2:
YES
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
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
a019: 刮刮樂兌獎(一)
題目描述:輸入兩個0~9的整數,代表刮刮樂上的兩個數字。
請輸出這張刮刮樂最高可以得到多少獎金,而如果沒有中獎,則輸出 0。
每張刮刮樂上面有兩個0~9的數字。
如果第一個數字是奇數,則可以得到100元。
如果第二個數字是2、5、8,則可以得到200元。
如果第一個和第二個的數字相同,則可以得到50元。
以上三種得獎方式,你只能選擇獎金最高的一種來領取。
輸入範例:
輸入1:
1 3
輸入2:
2 5
輸出1:
100
輸出2:
200
a020: 刮刮樂兌獎(二)
題目描述:輸入兩個0~9的整數,代表刮刮樂上的兩個數字。
請輸出這張刮刮樂最高可以得到多少獎金,而如果沒有中獎,則輸出 0。
每張刮刮樂上面有兩個0~9的數字。
如果第一個數字是奇數,則可以得到100元。
如果第二個數字是2、5、8,則可以再得到200元。
如果第一個和第二個的數字相同,則可以再得到50元。
以上三種得獎方式的獎金是累加的,也就是說如果三種方式都中獎的話
你就可以得到最高獎金 350元。
輸入範例:
輸入1:
1 3
輸入2:
2 5
輸出1:
100
輸出2:
200