# 條件判斷
## 2021/09/24 電算社第二堂社課
---
## 複習基本的程式架構
```cpp=
#include<iostream>
using namespace std;
int main()
{
}
```
----
```cpp=
#include<xxxxxxxxx> //導入資料庫
using namespace std; //以後code 不用打 std::
// 使用命名空間(? 間單來說就是偷懶
int main()
{
//主程式
}
```
---
## 複習上次學過的條件運算
----
### 條件運算
算完的結果會是一個布林值
不是True就是False

----
### 邏輯運算
多條件的條件運算
得到的結果也是一個布林值

----
Examples
```cpp=
int a = 5 , b = 3 , c = 1;
cout << (a > b); // 1
cout << (b > a); // 0
cout << (a > b && c > b); // 0
cout << (a > b || c > b); // 1
cout << ((a > b) && !(c > b)); // 1
```
---
## 條件判斷
---
### if
```cpp=
// a 為 bool
if(a){
...
//裡面放a成立的時候要做的事
}
```
----
### else
```cpp=
// a 為 bool
if(a){
...
}
else{ //只要a不成立就會做這件事
...
}
```
有 else 就一定會有 if,
所以在打Code的時候記得要注意喔
----
### else if
```cpp=
// a,b,c,d 都是 bool
if(a){
...
}
else if(b){ //如果a不成立,且b成立,就會做
...
}
else if(c){ //如果a、b不成立,且c成立,就會做
...
}
else{ //如果a、b、c都不成立就會做
...
}
```
----
### 巢狀if : if裡面再包if
```cpp=
if(a){
if(b){ //如果a、b都成立就會做
...
}
}
//上面的式子相當於
if(a && b){
}
```
---
### 三元預算子(Question mark operator)
----
#### 基本結構
```cpp=
(a)? b : c
//如果a是真,就會執行b,如果a是假,就會執行c
```
回傳值類型會依據b和c的類型改變,
盡量不要使用不同的類型
----
#### 什麼時候會用到?
在只有單行if - else的時候
```cpp=
#include<iostream>
using namespace std;
int main(){
int a;
cin >> a;
if(a % 2 == 0)
cout << "a是偶數";
else
cout << "a是奇數";
}
```
----
比起那樣寫,你也可以選擇這個:
```cpp=
#include<iostream>
using namespace std;
int main(){
int a;
cin >> a;
cout << ( (a % 2 == 0) ? "a是偶數" : "a是奇數" );
}
```
---
### 小練習
電算社想要針對每個社員的表現進行評分,
在經過了兩次考試之後,
決定讓總和90分以上的得A,
總和80分以上得B,
總和70分以上得C,
總和60分以上得D,
總和59分以下得F。
----
輸入說明:輸入兩個整數m,n。(0<=m,n<=50)
輸出說明:輸出等第。
範例輸入:42 45
範例輸出:B
----
我是防雷頁:D
----
解答
```cpp=
#include<iostream>
using namespace std;
int main(){
int m, n;
cin >> m >> n;
int total = m + n;
if(total >= 90)
cout << "A\n";
else if(total >= 80)
cout << "B\n";
else if(total >= 70)
cout << "C\n";
else if(total >= 60)
cout << "D\n";
else
cout << "F\n";
return 0;
}
```
---
### 練習題
* [GeeenJudge a014 : 貨比三家](http://www.tcgs.tc.edu.tw:1218/ShowProblem?problemid=a014)
* [GeeenJudge a016 : 閏年判斷](http://www.tcgs.tc.edu.tw:1218/ShowProblem?problemid=a016)
----
閏年判斷-巢狀判斷
```cpp=
#include <iostream>
using namespace std;
int main() {
int Year;
cin >> Year;
if(Year % 4 == 0)
{
if(Year % 400 == 0) cout << "YES";
else if(Year % 100 == 0) cout << "NO";
else cout << "YES";
}
else cout << "NO";
cout << "\n";
}
```
----
閏年判斷-條件判斷
```cpp=
#include<iostream>
using namespace std;
int main(){
int Year;
cin >> Year;
if( Year % 4 == 0 && Year % 100 != 0){
cout << "YES\n";
}
else if(Year % 400 == 0){
cout << "YES\n";
}
else{
cout << "NO\n";
}
return 0;
}
```
{"metaMigratedAt":"2023-06-16T10:40:01.403Z","metaMigratedFrom":"YAML","title":"判斷結構","breaks":true,"slideOptions":"{\"transition\":\"slide\",\"theme\":null}","contributors":"[{\"id\":\"4f731eff-9d88-41f4-af56-2e3e02f20cfc\",\"add\":2030,\"del\":380},{\"id\":\"68c94489-3c2e-4879-b847-e982f360b03c\",\"add\":580,\"del\":41},{\"id\":\"efc43b79-1b19-4cb1-9b18-ce50fad56214\",\"add\":1,\"del\":1},{\"id\":\"9e7d687a-83f2-4e8a-8ee6-8846394e69a5\",\"add\":938,\"del\":214},{\"id\":\"4a2636eb-4e67-4bed-8022-8aa0dfe853fb\",\"add\":182,\"del\":1}]"}