大社課 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);
// 若為小寫,回傳 true
int 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