# 基本架構 ```cpp=1 #include <iostream> #include <cstdio> //使用c語言的標準輸入頭檔 using namespace std; int main() { int a, b, c; //宣告3個整數變數 scanf("%d%d%d", &a, &b, &c); int min=a; if (b<min) min=b; if (b<min) min=c; printf("%d,%d,%d %d\n", a, b, c, min); return 0; } ``` ## 標頭檔 1. 屬於前置處理(pre-processor)指令部分 2. 以 # 開頭的指令,結尾不用加上 ; -例如: #include <iosream> 5.在c++中可使用c的標頭檔,兩種可以混和 -如: #include <cstdio> ## 基本資料型態 :::success 資料型態(Data Type):表示占用電腦的記憶體空間的大小 ::: 1. char: lbyte,表示電腦的字元(aA~zZ, 0~9)等字元。 2. bool: lbyte(c語言沒此資料型態),用來表示頁(true)與假(false) -<font color=red>** true: 非的整數**</font> - <font color=blue>**false: 數字0**</font> 3. int: 4bytes 表示沒有小數點的數字 4. float: 4bytes,表示有小數點的數字 5. double: Bbytes 表示沒小數點的數字 :::success 整數的延伸資料型態 ::: 1. short int: 2bytes的盤對 2. Long long: Bbytes的整數 3. unsinged: 只表示正整数 ![](https://hackmd.io/_uploads/rJBasJaeT.png) :::success sizeof(資料型態):取得資料占用型態的記憶體空間 ::: ``` #include <bits/stdc++.h> using namespace std; int main() { printf("char: %d byte\n", sizeof(char)); printf("unsigned char: %d byte\n", sizeof(unsigned char)); printf("bool: %d byte\n", sizeof(bool)); printf("short: %d byte\n", sizeof(short)); printf("int: %d byte\n", sizeof(int)); printf("Long long: %d byteln", sizeof(long long)); printf("unsigned short: 3d bytein", sizeof(unsigned short)); printf("unsigned int: ad bytein", sizeof(unsigned inc)); float f=1.45; printf("float: %d byte \n", sizeof(float)); printf("%.2f: %d byte\n", f, sizeof(f)); printf("double: %d byte\n", sizeof(double)); // 預設有小樹的數字型態為 double printf("2.5: %d byte \n", sizeof (2.5)); printf("Long double: %d byte\n", sizeof(long double)); return 0; } ``` ``` int: 4 unsigned ``` # 字面值(常數值) :::success 字元與字串 ::: 1.字元: 一個字,以單引號包起來。例如:'a' 'd'....... 2.字元: 一個字,以單引號包起來。例如:'abc' 'adad'....... :::success 整數: 沒有小數點的數字 ::: 1. 10進制的數字:由數字$e\sim 9所組成,例如:55,66,77,88......等 2. 8進制的數字:由數字$e\sim 7$所組成,例如:655,056,612......等,以數字8開頭 3.16進制的數字:由數字$e\sim 9 英文$a\sim f 或A\sim F$所組成,例如:6x55, 6xab,(6x15......等,以數字0x開頭 -數字 10(a), 11(b), 12(c), 13(d), 14(e), 15(f) - $a\sim f$大小寫皆可(不區分) 4.10進制的數字後面加上L或l:代表為 long型態的整數,例如:55881,5588L 4.10進制的數字後面加上U或u:代表為 unsigned型態的整數,例如:5588u,5588U 5. 10進制的數字後面加上U或u:代表為 unsigned 型態的整數,例如:55880, 5588U :::success 2, 8, 16進位轉換方式 ::: 1. 短除法 ![](https://hackmd.io/_uploads/Sy0dbXag6.png) 2.拼湊法) ![](https://hackmd.to/_uploads/BkaE47pga.png) :::success 浮點數:有小數點的数学 ::: 1. 科學記號: 格式為xEn -x: 整數部分只能有1位數 2. 例如: 16668966555124 = 1.6668966555124e+13 3. 例如: 8.00016568 - 1.6668966555124e-13 2. float後面加上 3. long double 後面加上L或1:55.681 C/C++的輸出入:C語言的輸出入速度比C++快很多 ::: C輸入: scanf("輸入格式", &變數名稱,...); 輸入格式 %d:輸入整數數字 輸入格式 %f:輸入 float小數數字 輸入格式 $lf:輸入 double小數數字 輸入格式 %c: 輸入, 字元、 輸入格式 s: 輸入 字串 C++輸入: cin>>變數名稱: C輸出: printf("輸出格式", 變數名稱... 輸出格式(d:輸出整數數字 輸出格式(c:輸出 字元 輸出格式s: 輸出 字串 輸入格式者,nf; 輸出小數點位的小數數字 ```cpp=1 ``` using namespace std; int main() { // 宣告儲存使用者輸入的3個整數 int a,b,c; // 讓使用者輸入3個整數的值,分別存入a,b,c中 scanf("%d %d %d", &a, &b, &c); // 計算總和 int sum = a+b+c; // 計算平均值 float avg =sum/3; //輸出結果 printf("sum = %d+%d+%d %d\n", a, b, c, sum); printf("avg = (%d+%d+%d) / 3 = %.2f\n", a, b, c, avg); return 0; } ``` # 變數、常數宣告 :::success 變數宣告:資料型態 變數名稱[值]; ::: 1.位(Overflow):表示的值太大以致資料型態的最大空間無法儲存,造成資料的損失。 2.一次宣告多個同值型態的變數,每個變數以逗點分隔,例如int a,b,c,d; 3.變數命名方式 第一個字: $A\sim Z$, $a\sim z及(底線) 共53個字元/ 第二個字以後;包含所有第一個字及$e\sim 99,共63個字元 不可為C/C++系統保留字 :::success 常數宣告:宣告後要給值,程式執行過程中不能改變常數的值。 ::: 1. 語法: const 資料型態 常數名稱=位; 2. 語法: #define 常數名稱(值) 後面不加分號 3. const double PI=3.14159; 4. #define PI 3.14159 5.常數名稱命名方式與變數一樣,為了區分常数名稱全部以大寫表示 # 資料型態轉換 :::success 只有小空間可以轉換成大空間的型態 char → short → int→float+double ::: 1. 強制轉型語法:(要轉換的資料型態)變數名稱|值; 2. 例如: (double)sum/3; 将sum號為double型態後除以3