大赦嗑芝五

講師:我明天要回家哭、鬆餅

一維陣列

宣告陣列

int arrs[6] = {9, 6, 0, 1, 2, 1};
//直接賦值
int arrw[6];
//陣列型別 陣列名稱[陣列大小] (未賦值)
const int MAXN = 1e6+7;
int arr[MAXN];//開陣列時只能使用常數

儲存方式

初始化方式

int arr0[100];//宣告一大小為100的陣列(0~99)

fill(arr0, arr0+100, 0);

int arr1[100] = {0};//最簡單的初始化方式,但只能用在一維陣列

int arr2[100];

for(int i = 0; i < n; i++){
  arr2[i] = 0;
}//用for跑一次迴圈初始化

fill(陣列頭, 陣列尾, 值)

 

迴圈就是跑過一次陣列賦值為零

賦值

int arr[100];
fill(arr, arr+100, 0);//要記得初始化喔

for(int i = 0; i < 100; i++){
  arr[i] = i;
}

輸入輸出

int arr[100];
fill(arr, arr+100, 0);//要記得初始化喔

for(int i = 0; i < 100; i++){
  std::cin >> arr[i];
  std::cout << arr[i];
}

題目

多維陣列

宣告+初始化

多維陣列的初始化直接用for跑過一次比較簡單,所以這裡用for

int arr[100][100];

for(int i = 0; i < 100; i++){

  for(int j = 0; j < 100; j++){
  
    arr[i][j] = 0;
  
  }

}

其實跟一維陣列沒什麼兩樣

int arr[100][100];
for(int i = 0; i < 100; i++){
    for(int j = 0; j < 100; j++){
          arr[i][j] = i*10+j;
    }
}
for(int i = 0; i < 100; i++){
    for(int j = 0; j < 100; j++){
        std::cout << arr[i][j] << "\n";
    }
}

題曰們

字元

char

什麼是 Char

一個字元character

Char 本身就是一個數字

  • 範圍很小
  • 範圍是 -128 ~ 127 
  • 只能是一個字
  • +-*/%^等數字運算符號都可以是char
  • 'b' == 'a' + 1
  • 'A' == 'a' ^ ' '
  • 'a' == 'A' ^ ' '
  • 3 == 'd' - 'a'
  • 'a' == ('z'-'a' +'b'-'a') % 26 + 'a'

一些char

跳脫字元

常見特殊字元 表示方法
換行 '\n'
水平定位 '\t'
字串結尾 '\0'
' '\''
\ '\\'
" '\"'
回車 '\r'
倒退 '\b'

字串

什麼是字串?

可以伸縮的字元陣列以及很多其他功能

#include <string>

宣告

string a = "pancake";
cout << a << '\n';
pancake

宣告

string a;
cin >> a;

cout << a << '\n';
pancake
pancake

陣列

string a = "pancake";

cout << a[0] << '\n'
     << a[6] << '\n'
     << a[2] << '\n';
p
e
n

長度

string a = "pancakesoooooooyummy";

cout << a.size() << '\n';
cout << a.length() << '\n';
20
20

A.size() or A.length()

回傳字串A的長度

連接

string s1 = "pancake";
string s2 = "yummy";
string s3 = s1 + s2;
cout << s3 << '\n';
pancakeyummy

用+直接連(+=也行)

比大小

string s1 = "abcd";
string s2 = "1234";
if(s1 > s2) {
   cout << "s1 > s2\n";
}
s1 > s2

用>、<、==、!=.....

按照字典序比較

*字典序:按照字在字典中出現的順序進行排列

找字串

string str = "physics is so hard";
cout << str.find("hard") << '\n';
14

.find(想找的字串,起點)

回傳第一個出現子字串的起始位置

沒有找到回傳string::npos

插入/刪除

string str = "Wow is so diannnn";
cout << str.insert(4, "IvanLo ") << '\n';
Wow IvanLo is so diannnn

使用.insert(位置,想插入的字串)

使用.erase(起點,長度)

string str = "pancakenotyummy";
str.erase(7, 3);
cout << str << '\n';
pancakeyummy

練習時間