---
# System prepended metadata

title: C++從零入門 Level 1-1
tags: [文華社課]

---

---
tags: 文華社課
---
> 文華高中電腦研究社29th
> 編輯 : 黃昱凱
> 宣傳 : 平時練C++ㄉ小號 https://www.instagram.com/l.o.l.i.c.o.n._learning_cpp/
# C++從零入門 Level 1-1
```cpp=
#include<iostream>
using namespace std;
int main(){
    return 0;
}
```
以上是一個C++程式的空殼，它沒有任何的功能，但確實是一個程式喔！
基本上接下來所有程式都是用這個空殼，忘記再回來看一下就好~

```cpp
#include<iostream>
```
我們首先會需要一個**標頭檔**

定義:標頭檔是一個檔案，通常是原始碼的形式，由編譯器在處理另一個原始檔的時候自動包含進來(by wiki)

聽不懂?先寫再慢慢領悟
標頭檔有很多種，暫時我們只需要iostream就好
```cpp
using namespace std;
```

**using namespace std** 是用來設定名稱空間為 std。由於標準函數庫所包含的
函數、類別與物件均定義在 std 這個名稱空間中，所以必須指明所使用的名
稱空間為 std，以便使用所提供的標準函數庫

聽不懂?先寫再慢慢領悟(*2)

```cpp
int main(){
    (程式放這裡~~)
    return 0;//結束
}
```
**主函式** (int main) 就是我們等等要寫程式進去的地方~

## 輸入輸出
```cpp
cin >> x;
cout << x;
```
使用**cin >>          輸入**
使用**cout <<         輸出**

就直接上題目咯~

### a001.哈囉
link:https://zerojudge.tw/ShowProblem?problemid=a001
string s //宣告一個字串類別的s
cin >> s //輸入到s裡面
cout << "hello, "<< s << endl; //輸出 ，endl是換行，此題可不加
```cpp=
#include<bits/stdc++.h>
using namespace std;
int main(){
    string s;
    cin >> s;
    cout << "hello, "<< s << endl;
    return 0;
}
```

除了字串以外，還有以下常用的型別
忘了回來看就好~

|  型別  | 意義               |
|:------:| ------------------ |
|  int   | 整數               |
| float  | 浮點數(小數)       |
| string | 字串               |
|  bool  | 布林值(true/false) |
|  char  | 字元               |

## 賦值運算子、算數運算子
好，接下來為你演示如何一句話氣死數學老師
```cpp=
int a;
a = 1;
a = a + 1;
cout << a;
```
你認為最後會輸出多少?
對，2，就是2

所以不要問我a = a ＋ 1 在數學上的意義
![](https://i.imgur.com/sDw7y9A.jpg)

總之
賦值運算是就是將**等號右邊的值賦予左邊**

= 就是邏輯運算子
+-*/%就都是算術運算子
例如
```cpp=
int a;
a = 1 // a 就變成1
//
a = a + 1 // a 就變成a + 1
a = a - 1 // a 變成a - 1
a = a * 3 // a 變成a * 3
a = a / 2 // a 變成a / 2
a = a % 2 // a 變成a / 2的餘數
//以上都有簡寫
a += 1;
a -= 1;
a *= 3;
a /= 2;
a %= 2;
```

=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
:::success
- [ ] [例題:a002 簡易加法](https://zerojudge.tw/ShowProblem?problemid=a002)
例題解答在底下~
:::

## 比較運算子、邏輯運算子
哈哈哈哈
沒想到吧，如果等號被拿來當賦值運算，那我要怎麼表示等於? 如a = b?
聰明的工程師發明了一個聰明的方法

沒有人:
幾世紀前的工程師:不如== ?
.
.
.
好啦不好笑w
我沒有在裝可愛 比較運算子就是<font color = #8a2be2>**==**</font>**，<font color = #8a2be2>不等於是!=</font>**
現在還沒什麼用，下一節課的條件式就會用到了

比較運算子還有大於/小於
| >    | <    | >=       |<=       |
| ---- | ---- | -------- | -------- |
| 大於 | 小於 | 大於等於 | 小於等於 |


邏輯運算子**有&&和||兩種**
&& 就是"而且"
|| 就是"或者"
就不多贅述~~

## 條件式
你猜怎麼著~?
我覺得篇幅太少所以先教if判斷式了w~
條件式的結構如下
```cpp=
if (條件){
    執行程式
}
```
**如果小括號內的條件成立，就執行大括號的程式**
```cpp=
// 成立的例子
int a = 1;
if (a == 1){ // 這裡千千萬萬不能寫成一個等號
    a = a + 1;
}
//結果 a = 2
```
```cpp=
// 不成立的例子
int a = 1;
if (a == 87878787878787){
    a = a + 1;
}
//結果 a = 1
```
else 緊跟前一個大括號
作用在條件**不成立**的時候
用法範例:
```cpp=
int a = 1;
if (a == 87878787878787){
    a = a + 1;
}else{
    a = a - 1;
}
//結果a = 0
```
=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
:::success
- [ ] [例題:a003 兩光法師占卜術](https://zerojudge.tw/ShowProblem?problemid=a003)
:::
::: warning
- [ ] [進階題:a004 文文的求婚](https://zerojudge.tw/ShowProblem?problemid=a004)
先備知識:
用while(cin >> ){
}
可以不斷輸入直到EOF
:::
## STL swap

swap 就是個好用的工具
將兩個變數的值互換
```cpp=
// 用法
sawp(變數1, 變數2);
// 例子
int a = 9, b = 6;
swap(a, b);
// 結果: a = 6，b = 9
```
=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
:::danger
- [ ] [總之不簡單:d491](https://zerojudge.tw/ShowProblem?problemid=d491)
先備知識:
* 迴圈
:::
如果寫不過癮可以試試下面的類題(沒有答案~~)
:::danger
- [ ] [a864: 4. Stellar Classification](https://zerojudge.tw/ShowProblem?problemid=a864)
- [ ] [f375: 神奇肥料 Fertilizer](https://zerojudge.tw/ShowProblem?problemid=f375)
- [ ] [f441: 評分系統 Score
](https://zerojudge.tw/ShowProblem?problemid=f441)

:::
::: info
此處為本次社課結束點
有問題都殼以找窩或傳訊息問喔~
剛考完試一個晚上生出講義的
蘿莉控
副社_黃昱凱 敬上 
:::

> 下一章: [C++從零入門 Level 1-2](/BZRzywVCRQSJSxkTjArORQ)
> 目錄: [C++從零入門](/G0dWqZR7RIOwrK6gK0tEZg)


## 參考解答
先想想再偷看喔w
### d002:
```cpp=
#include<bits/stdc++.h>
using namespace std;
int main(){
    int a, b, sum;
    cin >> a >> b;
    sum = a + b;
    cout << sum <<endl;
    return 0;
}
```
### d003:
```cpp=
#include<bits/stdc++.h>
using namespace std;
int main(){
    int m, d, s;
    cin >> m >> d;
    s = (m * 2 + d) % 3;
    if (s == 0){
        cout <<"普通"<<endl;
    }
    if (s == 1){
        cout <<"吉"<<endl;
    }
    if (s == 2){
        cout <<"大吉"<<endl;
    }
    return 0;
}
```
### d004:
#### Sol1.
不用else
```cpp=
#include<bits/stdc++.h>
using namespace std;
int main(){
    int a;
    while (cin >> a){ //不斷輸入直到EOF
    if (a % 4 == 0 && (a % 100 != 0 || a % 400 == 0)){
        cout <<"閏年"<<endl;
    }
    if (a % 4 != 0 || (a % 100 == 0 && a % 400 != 0)){
        cout <<"平年"<<endl;
    }
    }
    return 0;
}
```
#### Sol2.
用else
```cpp=
#include<bits/stdc++.h>
using namespace std;
int main(){
    int a;
    while (cin >> a){ //不斷輸入直到EOF
    if (a % 4 == 0 && (a % 100 != 0 || a % 400 == 0)){
        cout <<"閏年"<<endl;
    }
    else cout <<"平年"<<endl;
    }
    return 0;
}
```
### d491:
```cpp=
#include<bits/stdc++.h>
using namespace std;
int main(){
    int a, b;
    cin >> a >> b;
    if (a > b) swap(a, b);
    int ans = 0;
    for(int i = a;i <= b;i ++){
        if (!(i % 2)) ans += i;
    }
    cout << ans <<endl;
    return 0;
}
```






