---
# System prepended metadata

title: 0920 第一次社課

---

# 0920 第一次社課

:::info
盡量**先想過一次**，如果真的想不出來，再參考解答
**不要複製貼上程式碼**，要多練習才會進步喔 !

好啦但還是希望有人會看 TAT 我寫得很辛苦
:::

**上課內容**：基礎I/O、變數、運算子
~~這次的題目根本就是挑戰數字敏銳度~~


### [zj a001 哈囉](https://zerojudge.tw/ShowProblem?problemid=a001)

**題目簡述：**

寫一個程式，可以讀入指定的字串，並且輸出指定的字串。
例如：輸入字串 "world"，輸出 "hello, world"。

**程式碼：**
```cpp=
#include <iostream>   //標頭檔，這個標頭檔管輸入與輸出
using namespace std;  //使用命名空間 std

//程式，啟動!!
int main()  
{   //0. 大括號記得下放
    
    //1. 宣告一個string(字串)，命名為str
    string str;  
    
    //2. 輸入string，並存進str
    cin >> str;  
    
    //3. 輸出"hello, " + str (輸入的內容)
    cout << "hello, " << str << endl;
    
    return 0;
    // main 回傳 0，程式結束
}
```

---
### [zj a002 簡易加法](https://zerojudge.tw/ShowProblem?problemid=a002)

**題目簡述：**

請寫一個程式，讀入兩個數字，並求出它們的和。
例如：輸入 3、4，輸出 7。


**程式碼：**
```cpp=
#include <iostream>
using namespace std;

int main()
{
    int a, b;
    cin >> a >> b;
    cout << a + b << endl;
    return 0;
}
```
---
### [zj d049 中華民國萬歲！](https://zerojudge.tw/ShowProblem?problemid=d049)

**題目簡述：**

請寫一程式，將輸入的西元年份轉換成民國年份後輸出。
例如：輸入 2023，輸出 112。

> 小提示：
> 民國年 = 西元年 - 1911

**程式碼：**
```cpp=
#include <iostream>
using namespace std;

int main()
{
    int y;
    cin >> y;
    cout << y - 1911 << endl;
    return 0;
}
```
---
### [zj d827 買鉛筆](https://zerojudge.tw/ShowProblem?problemid=d827)

**題目簡述：**

鉛筆一支 5 元，一打 50 元。
幫班上每位同學買一枝鉛筆，請問要多少錢？

輸入班上同學人數，輸出所需的錢有多少。
例如：輸入 42，輸出 180。

> 小提示：
> 利用運算子 「/」「%」來計算
> 42 = 12 * 3 + 6
> /：取商
> %：取餘數


:::spoiler **程式碼：**
```cpp=
#include <iostream>
using namespace std;

int main() 
{
    int n;
    cin >> n;
    cout << (n / 12) * 50 + (n % 12) * 5 << endl;
    return 0;
}
```
:::
---
### [zj d063 0與1](https://zerojudge.tw/ShowProblem?problemid=d063)

**題目簡述：**

輸入 0 或 1，把 1 變成 0、0 變成 1。

> 小提示：
> 0 = - 0

:::spoiler **程式碼：**
```cpp=
#include <iostream>
using namespace std;

int main()
{
    int n;
    cin >> n;
    cout << -n + 1 << endl;
    return 0;
}
```
:::
<br>

:::warning
經驗談與垃圾話：
我覺得這個題目的想法非常實用，我現在解題偶爾也會用到
當然你也可以用 if / else 做這題，不過能用運算子完成的事，為什麼要這麼麻煩呢 ?
:::

---
### [zj d073 分組報告](https://zerojudge.tw/ShowProblem?problemid=d073)

**題目簡述：**

分組依座號順序，每 3 個人一組。
例如：1、2、3 為第一組，4、5、6 為第二組……以此類推。

輸入同學的座號，輸出他在哪一組。
例如：輸入 7，輸出 3。

> 小提示：
> 0 = 3 * 0 + 0
> 1 = 3 * 0 + 1
> 2 = 3 * 0 + 2
> 3 = 3 * 1 + 0
> 4 = 3 * 1 + 1
> 5 = 3 * 1 + 2

:::spoiler **程式碼：**
```cpp=
#include <iostream>
using namespace std;

int main()
{
    int n;
    cin >> n;
    cout << (n - 1) / 3 + 1;
    return 0;
}
```
:::

<br>

:::warning
經驗談與垃圾話：
我覺得這個題目的想法也非常實用，我現在解題偶爾也會用到
當然你也可以用 if / else 做這題，不過能用運算子完成的事，為什麼要這麼麻煩呢 ?
:::

---
### [zj d050 妳那裡現在幾點了](https://zerojudge.tw/ShowProblem?problemid=d050)

**題目簡述：**

台灣的時間比美國山區時間快 15 小時。
寫一個程式，輸入台灣時間後，算出美國山區時間。
例如：輸入 21，輸出 6。

> 小提示：
> 台灣比美國快 15 小時，可以理解為美國比台灣慢 9 小時

:::spoiler **程式碼：**
```cpp=
#include <iostream>
using namespace std;

int main()
{
    int n;
    cin >> n;
    cout << (n + 9) % 24 << endl;
    return 0;
}
```
:::
<br>

:::warning
經驗談與垃圾話：
其實，這題我一開始不是這樣寫的……我用了奇怪的三元運算子
三元運算子是一個逃避 if / else 的酷語法，通常可以讓程式更簡短
但我後來發現上面的寫法更簡潔 ~~教學真的翻車了~~
底下附上我奇怪的寫法
:::

:::spoiler **奇怪的程式碼：**
```cpp=
#include <iostream>
using namespace std;

int main()
{
    int n;
    cin >> n;
    cout << ((n - 15 > 0)? n - 15 : n + 9) % 24 << endl;
    return 0;
}
```
:::
---