C++ 程式的基本結構
讓我們從最基本的開始 - 一個簡單的 “Hello World” 程式:
1 |
|
這個簡單的程式展示了 C++ 的幾個關鍵特性:
#include <iostream>
: 這行包含了輸入/輸出流套件的載入,為 Input/Output Stream 的縮寫。using namespace std;
: 這使我們可以使用std
命名空間中的對象,如cout
。int main()
: 這是程式的入口點,也就是程式都會從這邊開始執行cout << "Hello, World!" << endl;
: 這行將文本輸出到控制檯。
注釋
C++ 支援兩種類型的注釋:
- 單行注釋: 以
//
開始 - 多行注釋: 包含在
/*
和*/
之間
例如:
1 | // 這是一個單行註釋 |
注釋對於解釋代碼和提高可讀性非常重要。
變數和資料類型
在 C++ 中,變數是儲存資料的容器。每個變數都有一個特定的資料類型,決定了它可以儲存什麼樣的訊息。
常見資料類型
類型 | 描述 | 範例 | 大小 |
---|---|---|---|
int | 整數 | 100, -5, 1246 | 4 bytes |
float | 浮點數 | 3.14159f, 4.3f | 4 bytes |
char | 字元 | ‘a’, ‘R’, ‘1’ | 1 byte |
bool | 布林值 | true, false | 1 byte |
變數宣告和初始化
變數宣告告訴編譯器變數的名稱和類型。例如:
1 | int age; |
你也可以在一行中宣告多個變數:
1 | int x = 5, y = 10, z = 15; |
變數命名規則
- 變數名可以包含字母、數字和底線
- 必須以字母或底線開頭
- 區分大小寫 (myVar 和 myvar 是不同的變數)
- 不能包含空格或特殊字元
- 不能使用 C++ 關鍵字 (如 int, float 等)
輸入和輸出
C++ 使用 iostream
庫進行基本的輸入和輸出操作。
輸出
使用 cout
和流插入運算子 <<
進行輸出:
1 | cout << "Hello, World!" << endl; |
輸入
使用 cin
和流提取運算子 >>
進行輸入:
1 | int age; |
讀取多個輸入
你可以在一個 cin
語句中讀取多個值:
1 | int x, y; |
跳脫序列 Escape sequence
C++ 支援多種跳脫序列,用於表示特殊字元:
序列 | 描述 |
---|---|
\n | 換行 |
\t | tab(大約是4個空白鍵) |
\ | 反斜槓 |
" | 雙引號 |
例如:
1 | cout << "Hello\tWorld!\n"; |
會輸出:
1 | Hello World! |
(注意 “Hello” 和 “World!” 之間的 Tab)
運算子
C++ 提供了各種運算子來執行不同類型的操作。
算術運算子
運算子 | 描述 | 例子 |
---|---|---|
+ | 加法 | a + b |
- | 減法 | a - b |
* | 乘法 | a * b |
/ | 除法 | a / b |
% | 取餘數 | a % b |
++ | 遞增 | a++ 或 ++a |
– | 遞減 | a– 或 –a |
關係運算子
這些運算子傳回布林 Boolen 值 (true 或 false):
運算子 | 描述 | 例子 |
---|---|---|
== | 等於 | x == y |
!= | 不等於 | x != y |
> | 大於 | x > y |
< | 小於 | x < y |
>= | 大於等於 | x >= y |
<= | 小於等於 | x <= y |
邏輯運算子
運算子 | 描述 | 例子 |
---|---|---|
&& | AND | (x > 0) && (y < 0) |
|| | OR | (x > 0) || (y < 0) |
! | NOT | !(x > 0) |
類型轉換
C++ 支援兩種類型的類型轉換:隱式轉換和顯式轉換。
隱式轉換 Implicit Conversion
編譯器自動執行的轉換,例如:
1 | int x = 10; |
顯式轉換 (類型轉換, Explicit Cast)
程式員明確定義的轉換:
1 | float x = 3.14; |
位元運算
位元運算在底層程式設計和最佳化中非常有用。
位元運算子
運算子 | 描述 | 例子 |
---|---|---|
& | AND | a & b |
| | OR | a | b |
^ | XOR | a ^ b |
<< | 左移 | a << 2 |
>> | 右移 | a >> 2 |
~ | NOT | ~a |
使用位元運算的例子
檢查數字是否為偶數:
1
2
3bool isEven(int n) {
return !(n & 1);
}使用位元運算交換兩個變數的值:
1
2
3
4
5void swapUsingXOR(int &a, int &b) {
a ^= b;
b ^= a;
a ^= b;
}使用位元移計算 2 的冪(exponentiation):
1
2
3int powerOfTwo(int n) {
return 1 << n;
}
實踐練習
挑戰 1:溫度轉換器
目標: 建立一個程式,可以在攝氏度和華氏度之間進行溫度轉換。
任務:
- 提示使用者輸入一個溫度值。
- 詢問使用者這個溫度是攝氏度還是華氏度。
- 將溫度轉換為另一種單位。
- 顯示轉換結果,精確到小數點後兩位。
提示:
- 攝氏度到華氏度的公式:°F = (°C × 9/5) + 32
- 華氏度到攝氏度的公式:°C = (°F - 32) × 5/9
範常式式:
1 |
|
挑戰 2:二進制數轉換器
目標: 編寫一個程式,將使用者輸入的十進制數轉換為二進制數。
任務:
- 提示使用者輸入一個非負整數。
- 將該整數轉換為其二進製表示。
- 顯示轉換結果。
提示:
- 使用位元運算和移位元運算可以高效地完成這個任務。
- 考慮如何處理 0 這個特殊情況。
範常式式:
1 |
|
挑戰 3:簡單加密器
目標: 建立一個程式,可以對輸入的文本進行簡單的加密和解密。
任務:
- 提示使用者輸入一段文本。
- 詢問使用者是要加密還是解密。
- 對每個字元進行移位元運算(例如,將每個字元的 ASCII 值加 3 進行加密,減 3 進行解密)。
- 顯示處理後的結果。
提示:
- 使用 Caesar 密碼的概念,但只對字母進行操作。
- 記得處理大小寫字母和字母表的迴圈(例如,’Z’ 加 1 應該變成 ‘A’)。
範例程式:
1 |
|