# Array ## 陣列 --- ## 想想看 如果今天我要輸入全班同學的成績,我該怎麼做? 宣告40個變數去存這些成績嗎? ``` C++ int Ash, Bimo, Blaze, Dusk, Tommy, XiaoMing ....; cin>>Ash>>Bimp>>Blaze>>Dusk>>Tommy>>XiaoMing ....; ``` ---- ## 當然不要 也許40個變數你願意打完<br>但如果變成全年級的呢?<br>600多個我打死也不要 這時候就有種叫陣列的東西可以幫忙偷懶了 ---- ## 陣列是什麼 你可以把它想成是一列火車<br>每列火車都只能放一種資料型態,而每節車廂都可以放一個元素。 ![](https://i.imgur.com/Wk6J0uo.png) ---- ## 語法 跟其他變數一樣要先宣告<br> ``` C++ int train[5]; ``` 這代表宣告了一個長度為5的陣列<br> 但宣告卻沒給值這樣會出問題 ---- ### 如何給值 你可以<br> ```C++ int train[5]={0,1,2,3,4}; ``` - 一次給完<br> ```C++ int train[]={0,1,2,3,4}; ``` - 一次給完也可以不用給長度<br> ```C++ int train[5]={0,1,2}; ``` - 只給部分,後面的數會自動為0 ---- ```C++ int train[5]; train[0]=0; train[1]=1; train[2]=2; train[3]=3; train[4]=4; ``` - 或是利用索引值一個一個給 ```C++ int train[5]; for(int i=0;i<5;i++){ cin>>train[i]; } ``` - 或用迴圈給 ---- ### 字元陣列給值 字元陣列會稍微特殊一點點<br> ```C++ char train[5]={"t","r","a","i","n"}; ``` - 會多一個""去夾住所要給的值<br> ```C++ char train[]={"Our train"}; ``` ```C++ char train[]="Our train"; ``` - 這兩個是一樣的,都用字串的方式給值<br>但字串給值會比一個一個給多佔一個 *"\0"* 的位置<br> ---- ### 注意 - 陣列的索引值是從0開始<br>所以如果長度為5,索引值就會是0~4 - 宣告時,n代表的是長度<br> ```C++ int train[n]; ``` - 賦值時,m代表的是索引值 ```C++ train[m]=x; ``` --- # problem 50 用陣列試試看 ---- ## 解答 ```C++ #include<iostream> using namespace std; int main(){ int y; cin>>y; char a[]="The Beater hasn't born."; char b[]="c8763!!!"; char c[]="WatermelonDurianChicken!!! R.I.P. c8763."; if(y<2008) cout<<a; else if(y>2017) cout<<c; else cout<<b; return 0; } ``` ---- # problem 22 ---- ## 解答 ```C++ #include<iostream> using namespace std; int main(){ int tower[101]; int n; tower[74]=10, tower[75]=11; while(cin>>n){ for(int i=76;i<=n;i++){ tower[i]=tower[i-1]+tower[i-2]; } cout<<tower[n]<<endl; } return 0; } ``` --- ## 二維陣列 ---- ### 二維陣列是什麼 剛才學的一維陣列像火車<br> 二維陣列則跟一維陣列差不多只是像表格<br> ---- ```C++ int array[3][3]; ``` |[0][0]|[0][1]|[0][2]| |------|------|------| |[1][0]|[1][1]|[1][2]| |[2][0]|[2][1]|[2][2]| ---- ## 賦值 跟一維陣列一樣<br> ```C++ int array[3][3]={{0,1,2},{4,5,6},{7,8,9}}; ``` 0 1 2<br> 4 5 6<br> 7 8 9<br> --- # String ## 字串 ---- ## string 是什麼 string 是C++標準模板函式庫(STL)提供的一項功能<br> 跟字元陣列很像,是以字元作為元素儲存的容器<br> 可以不用宣告長度,直接賦值 ---- ## string 語法 - 使用前要先引用 - 接著宣告,再直接賦值就好了 ```C++ #include<iostream> #include<string> using namespace std; int main(){ string a = "hello world"; cout<<a<<endl; return 0; } ``` --- # problem 68 ---- ## 解答 ```C++ #include<iostream> #include<string> using namespace std; int main(){ string name; cin>>name; cout<<"www"<<name<<"安安"<<endl; return 0; } ``` ---- # problem 126 ---- ### 解答 ```C++ #include<iostream> #include<string> using namespace std; int main(){ int id[9]; int tmp, a, b, c; string id_num; cin>>id_num; for(int i=0;i<9;i++){ id[i]=id_num[i]-'0'; } a=id[6], b=id[7], c=id[8]; for(int i=0;i<8;i++){ for(int j=i+1;j<9;j++){ if(id[i]>id[j]){ tmp=id[i]; id[i]=id[j]; id[j]=tmp; } } } if(id[8]*id[8]+id[7]*id[7]==100*a+10*b+c) cout<<"OK"; else cout<<"SPY!"; return 0; } ```
{"metaMigratedAt":"2023-06-16T11:43:59.338Z","metaMigratedFrom":"Content","title":"Array","breaks":true,"contributors":"[{\"id\":\"a5d0b47b-82f6-43ab-9222-b35a124e6a73\",\"add\":3420,\"del\":189}]"}
    316 views