---
# System prepended metadata

title: 第二堂社課

---


# 第二堂社課

---

## zerojudge
![image](https://hackmd.io/_uploads/SybleFHhex.png)

----

## zerojudge簡介
zerojudge全稱高中生程式解題系統，是目前台灣已知最廣泛使用的系統，擁有最多中文題目的題庫。

----

## 使用說明
![image](https://hackmd.io/_uploads/H1PExtr2lg.png)

----

![image](https://hackmd.io/_uploads/r1sLxtHhgg.png)
如果想填學校去找"國"開頭的那排

----

![image](https://hackmd.io/_uploads/rJD-WKHhgg.png)

----

![image](https://hackmd.io/_uploads/rkH7WKHheg.png)
課程代碼 : +cYejX 
(等等傳到你們桌面)

----

![image](https://hackmd.io/_uploads/H1aCWFH2gg.png)

----

![image](https://hackmd.io/_uploads/BkIzzFHhgl.png)

----

![image](https://hackmd.io/_uploads/Skr4GYB3gl.png)

----

![image](https://hackmd.io/_uploads/BJH5ftBnxl.png)

----

![image](https://hackmd.io/_uploads/Bk96GKH3gl.png)

----

## 其他題目
![image](https://hackmd.io/_uploads/ryd7XFr2lg.png)

----

![image](https://hackmd.io/_uploads/Bk8rmYBnee.png)
建議從基礎題目開始寫
但如果你很電的話可以直接去刷APCS的題目

---

## 關係運算子&邏輯運算子

----

## 關係運算子
用來比較兩值的關係(誰大誰小)
比較過後會輸出布林值(對or錯)

----

| 符號 | 意義 | 例子 |
| :--------: | :--------: | :--------: |
| > | 大於 | 2>1(true) |
| < | 小於 | 2<1(false) |
| >= | 大於等於 | 2>=1(true) |
| <= | 小於等於 | 2<=1(false) |
| == | 等於 | 2==1(false) |
| != | 不等於 | 2!=1(true) |

----

## 邏輯運算子

用來在固有條件上做變化(且、或、相反)
比較過後會輸出布林值

----

| 符號 | 意義 | 例子 |
| :--------: | :--------: | :--------: |
| && | 且 | 2>1&&2<1(false) |
| ｜｜ | 或 | 2>1｜｜2<1(true) |
| ! | 相反 | !(2<1)(true)|

----

## 判斷看看以下條件式的對與錯
1. ! (2 > 1 && 1 > 1)
2. 2 <= 1 || 1 == 2
3. 1 >= 2 == 0
4. 0 == 0 == 0

----

## 解答

1. ! (2 > 1 && 1 > 1) (true)
2. 2 <= 1 || 1 == 2 (false)
3. 1 >= 2 == 0 (true)
4. 0 == 0 == 0 (false)

---

## if...else...判斷式

----

## 基本語法
```cpp=
if(條件1){
    //陳述 
}
else if(條件2){
    //陳述
}
else{
    //陳述
}
```

解答上節課有人好奇的， "//" 和 "/* 註解 */" 是C++裡面的註解方式，不會被執行

----

## 範例
```cpp=
#include<iostream>
using namespace std;
int main(){
    int A,B;
    cin>>A>>B;
    if(A>B){
        cout<<"A>B"<<endl;
    }
    else if(A<B){
        cout<<"A<B"<<endl;
    }
    else{
        cout<<"A=B"<<endl;
    }
}

```

----

## 範例(更簡潔)
```cpp=
#include<iostream>
using namespace std;
int main(){
    int A,B;
    cin>>A>>B;
    if(A>B)cout<<"A>B"<<endl;
    else if(A<B)cout<<"A<B"<<endl;
    else cout<<"A=B"<<endl;
}
```

**請注意:只有陳述句為一行時，大括號{}才可以省略**

----

## 範例(再濃縮)
```cpp=
#include<iostream>
using namespace std;
int main(){
    int A,B;
    cin>>A>>B;
    if(A>B)cout<<"A>B";
    else if(A<B)cout<<"A<B";
    else cout<<"A=B";
    cout<<endl;//把endl拉出來統一輸出
}

```

---

## Q1.比大小
#### 小誠意(ChengYi)、凱凱(KaiKai)跟卷王(Roller)放學後相約打牌，但因為凱凱太菜了，所以決定玩比大小。牌號由小到大依序是1到13，而小誠毅、凱凱和卷王會依序出牌，如果三人出的牌號碼大小相同則平局(No one)。
請判斷這局是誰贏了，並輸出"某某某 is the Champion!!。
輸入範例1: ``` 8 4 13 ```
輸出範例1: ``` Roller is the Champion!!```
輸入範例2: ``` 13 13 13 ```
輸出範例2: ``` No one is the Champion!! ```

----

## 解答

```cpp=
#include<iostream>
using namespace std;
int main(){
    int ChengYi,KaiKai,Roller;
    cin>>ChengYi>>KaiKai>>Roller;
    if(ChengYi>KaiKai&&ChengYi>Roller){
        cout<<"ChengYi is the Champion!!"<<endl;
    }
    
    else if(KaiKai>Chengyi&&KaiKai>Roller){
        cout<<"KaiKai is the Champion!!"<<endl;
    }
    else if(Roller>Chengyi&&Roller>KaiKai){
        cout<<"Roller is the Champion!!"<<endl;
    }
    else{
        cout<<"No one is the Champion!!"<<endl;    
    }
}
```

----

## 解答(簡潔+濃縮)

```cpp=
#include<iostream>
using namespace std;
int main(){
    int ChengYi,KaiKai,Roller;
    cin>>ChengYi>>KaiKai>>Roller;
    if(ChengYi>KaiKai&&ChengYi>Roller)cout<<"ChengYi";
    else if(KaiKai>ChengYi&&KaiKai>Roller)cout<<"KaiKai";
    else if(Roller>ChengYi&&Roller>KaiKai)cout<<"Roller";
    else cout<<"No one"; 
    cout<<" is the Champion!!"<<endl;
}
```

---

## switch...case...判斷式

----

## 基本語法
```cpp=
switch (變數/運算式) {
    case 值1:
        //陳述
        break;
    case 值2:
        //陳述
        break;
    default:
        //陳述
        break;//可省略 
}
```

----

## 範例
```cpp=
#include<iostream>
using namespace std;
int main(){
    int A,B;
    cin>>A>>B;
    switch(A+B){
        case 1:
            cout<<"one";
            break;
        case 2:
            cout<<"two";
            break;
        default:
            cout<<"IDK";
    }
    cout<<endl;
}
```

----

## 範例(if...else...版)
```cpp=
#include<iostream>
using namespace std;
int main(){
    int A,B;
    cin>>A>>B;
    if(A+B==1)cout<<"one";
    else if(A+B==2)cout<<"two";
    else cout<<"IDK";
    cout<<endl;
}
```

---

## Q2.簡易計算機
#### 卷王的資訊老師今天出了一個任務，要求他用switch...case...的語法做出一個可以加減乘除簡易計算機。但因為卷王都在卷數物化生，沒有時間寫，所以就將這個任務交給了你!
說明:輸入三個資料，依序是一個整數、一個符號字元、一個整數，輸出其整數運算結果(無條件捨棄)。如果輸入的符號並非```'+'```、```'-'```、```'*'```、```'/'```，則輸出```"ERROR"```

輸入範例1:```1+2``` 輸出範例1:```3```
輸入範例2:```1%2``` 輸出範例2:```ERROR```

----

## 解答
```cpp=
#include<iostream>
using namespace std;
int main(){
    int A,B;
    char C;
    cin>>A>>C>>B;
    switch(C){
        case '+':
            cout<<A+B;
            break;
        case '-':
            cout<<A-B;
            break;
        case '*':
            cout<<A*B;
            break;
        case '/':
            cout<<A/B;
            break;
        default:
            cout<<"ERROR";
    }
    cout<<'\n';
}
```