大社課 10/17 第二節
C++ 之字元字串、陣列
講師 - Suzy
- 北資一六學術長
- 二信 離前面最近的位置
但有事先DC找 - 小羊蘇西(?
- PY 及 AI 小社講師

資料型態
資料
資料
資料
變數
根據你儲存的資料是哪種類型,
決定要設哪種類型的變數。
資料型態

基本的資料類別
a.k.a. Data Type
整數
浮點數
雙精度浮點數
字元
布林
陣列
複習
#include <iostream>
using namespace std;
int main (){
double a,b;
cin >> a >> b;
double = a/b;
}我們現在已經會紀錄數字了!
(啊理論上你也要會寫迴圈跟條件判斷了。希望啦。)
字元 character
#include <iostream>
using namespace std;
int main (){
char ch = 'a \n';
cout << ch;
// '\n' 是換行的意思喔
}- 紀錄文字,一次一個字元
- 用單引號 ' ' 包起來
ASCII

每一個字元在電腦裡面其實都有一個整數儲存
ASCII
每一個字元在電腦裡面其實都有一個整數儲存
cout << int('A') << '\n';
cout << char(65) << '\n'; //這行一樣會輸出 A可以直接使用 int (' ') 和 char ( ) 來轉換型態
字元
ASCII 數值
int ( ' ' )
char ( )
ASCII
關於大小寫
Q: 把字母做四則運算會怎樣呢?
ASCII
Q: 把字母做四則運算會怎樣呢?
A: 會依照 ASCII 編碼,轉成整數做四則運算喔
關於大小寫
ASCII
char c = 'b';
// 法一
cout << char(c + ('a'-'A')) << "\n";
// 法二
cout << char(c + 32) << "\n";小寫換成大寫
char c = 'b';
//法一
cout << char(c + ('A'-'a')) << "\n";
//法二
cout << char(c - 32) << "\n";大寫換成小寫
關於大小寫
我們可以利用字元運算這個特性,
在大寫和小寫之間做轉換
補充 <cstring> 函式庫
<cstring> 是一個函式庫,就跟 <iostream> 是一個函式庫一樣,是一堆別人寫好的功能,我們可以把它匯入到自己的程式碼中
以下是一些好用的函式:
int tolower(int ch);
// 把大寫 (uppercase) 換成小寫 (lowercase)int toupper(int ch);
// 把小寫 (lowercase) 換成大寫 (uppercase)int islower(int ch);
// 若為小寫,回傳 trueint isupper(int ch);
// 若為大寫,回傳 true記得使用時要在開頭加上 #include <cstring> 唷
int isalpha(int ch);
// 若為字母,回傳 true字串 string
#include <iostream>
#include <string>
using namespace std;
int main (){
string str = "hello";
cout << str << '\n';
cout << str[0];
}- 紀錄文字,一次可以由好幾個 char(字元)組成
- 用雙引號 " " 包起來

字元
字串
<string> 函式庫
你可以做的事情有:
#include <iostream>
#include <string>
using namespace std;
int main() {
string s1 = "Hello";
string s2 = "World";
string s3 = s1 + " " + s2;
cout << s3 << endl;
// 輸出 "Hello World"
}
把字串併在一起
比較字串
"hello"=="hello"
"helloo" > "hello"取得字串長度
string str = "yayy";
cout << str.length();字串名稱.length ()
直接使用 + 就可以
實作
你可以寫一個程式
輸入一串文字
使輸出變成大小寫相間嗎
例:
輸入 hello this is suzy
輸出 HeLlO tHIs Is SuZy
你可能會用到:
字元、字串、條件、迴圈、取餘數(用於奇數偶數判斷)

陣列 array
- 用於把很多相同資料型態的資料儲存在一起
- 一個陣列裡的每筆資料有自己的「索引值」,可以用索引值找到你需要的那筆資料

就像一個公寓裡面有很多房間
可以住很多資料
每筆資料有自己的門牌號碼
缺點:你一開始就必須決定好要開幾個房間
陣列 array

整數
浮點數
雙精度浮點數
字元
布林
陣列
衍伸資料型態
陣列 array
#include <iostream>
using namespace std;
int main (){
int a[5]={10,12,13,14,15};
}該陣列要儲存哪種資料型態
該陣列的名稱
[該陣列的大小]
{陣列裡面的內容} 用逗號分隔
如果宣告陣列時還不知道陣列裡會裝什麼內容
可以先留白沒關係
通常題目會跟你講陣列要開多大
建議習慣開比預期需要的大小 大 1~2 個
避免爆掉
陣列 array
0
1
2
3
4
索引值
#include <iostream>
using namespace std;
int main (){
int a[5]={10,12,13,14,15};
cout << a[0] << '\n';
cout << a[2] << '\n';
}10
12
13
14
15
a =
陣列 array
#include <iostream>
using namespace std;
int main (){
int a[5]={};
for (int i=0; i<5; i++){
cin >> a[i];
}
}也可以先建一個空的陣列然後一一輸入
陣列 array
#include <iostream>
#include <string>
using namespace std;
int main (){
int a[3] = {1,2,3};
char b[4] = {'a','b','c'}; \\ 第四個元素就會被默認為 '\0'
string str[5] = {"hello", "yes", "no"}; \\第四和第五個元素就會被默認為 " "
}其他資料型態的陣列
二維陣列 2D array
沒錯,陣列也可以是二維的!

#include <iostream>
using namespace std;
int main (){
int myArray[2][3] = {1, 2, 3, 4, 5, 6};
int myArray[2][3] = {1, 2, 3, 4, 5, 6};
}實作
請你寫一個陣列
使用者輸入數字 n
開啟一個 n*n 的陣列並讓使用者輸入數字,把陣列裡的數字存進去
把陣列輸出
要換行
大社課 10/17 第二節
By Suzy Huang
大社課 10/17 第二節
- 114