Array
當你要cin一串數字,假設要計算大家數學的成績...
int a, b,...
cin >> a >> b >>...一班有35個人,就要寫35個變數...
一年級有700人,就要寫700個變數...
全國高一有20萬人,就要寫...
->宣告變數 : int a = 5
將5存在一個叫a的箱子
->宣告陣列 : int a[10] = {2, 4, 6, 8, 10, 12,...}
宣告一個櫃子,將變數按照號碼存在每個抽屜裡
| 2 | 4 | 6 | 8 | 10 | 12 | ... |
|---|
| 5 |
|---|
初始化:把所有初值用大括號包住,並以逗號隔開
-> 陣列後面沒給值的數初始值都會是 0
int a[10]={2, 4, 6, 8};陣列名稱
陣列型態
空間數
內容物(非必要)
#include <iostream>
using namespace std;
int main(){
int a[3] = {2, 4, 6};
cout << a[0] << endl; //會輸出2
//陣列索引值的第一個位置是0
return 0;
}#include <iostream>
using namespace std;
int main(){
int a[3];
a[3] = {1, 2, 3}
for(int i=0; i<3; i++){
cin >> a[i];
}
return 0;
}int a[5]={2, 4, 6, 8}
cout << a[1] << endl;
cout << a[4] << endl;輸出4
輸出0
int a[10] = {};
for(int i=1; i<10; i++){
a[i] = i+1
}
cout << a[0] << endl;
cour << a[1] << endl;輸出0
輸出2
段考後大家拿到了自己的數學考卷,老師想要請全班最高分喝飲料,於是請你找出大家成績的最高分。
輸入 :
第一行有一個正整數N,表示接下來有N個數字。(N<=10^6)第二行有N個數字Pi
測資:
輸入:
20
88 91 100 34 60 38 86 59 36 87 95 74 86 99 7
88 42 59 76 87
輸出:
最高分 : 100
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int score[100] = {0};
int highest = 0;
for(int i=0; i<n; i++){
cin >> score[i];
if(score[i] > highest) highest = score[i];
}
cout << "最高分: " << highest << endl;
return 0;
}1.陣列的每個元素都有索引值,因此存取方便
2.操作上通常比其他動態資料結構更有效率
3.簡單易上手,屬於比較入門的語法
1.在刪除或新增元素時需要移動大量的資料。
2.若需要擴展資料數量,陣列大小是固定的,不能自動擴展
3.只能存放相同類型的資料
通常程式會RE大部分是因為...
1.陣列的大小設太小 -> 將中括號的數值增加。
2.但如果是記憶體過大導致程式無法進行,那可以將陣列開在全域就是int main() 外面
很多時候我們希望陣列裡的值是0,但有時利用for迴圈時會忘記在最開始重新初始化,就要記得寫成int a[100] = {}才比較好做後面的變化,
(這邊聽不懂沒關係
| sizeof() | 取得陣列的大小(以位元組為單位) |
|---|---|
| memecpy() | 複製陣列的內容到另一個陣列。 |
| memset() | 初始化或設置陣列的所有元素為某個值(通常是 0) |
-> 用法 : 陣列名稱.函式(工具)名稱
#include <iostream>
using namespace std;
int main() {
int arr[3]={0,1,2};
int size = sizeof(arr) / sizeof(arr[0]);
cout << size << endl; //輸出3
int brr[5];
memcpy(brr, arr, sizeof(arr));
cout << brr[2] << endl; //輸出2
memset(arr, 0, sizeof(arr));
cout << arr[1] << endl; //輸出0
}有一個數列,第一項的值為 1,第二項的值為第一項加 1,第三項的值為第二項加 2,第四項的值為第三項加 3 ... 第 k 項的值為第 k-1 項的值加上 k-1。
給一個數字 n,請印出這個數列的第 n 項。
輸入:
本題為重複輸入,有多筆測資。
每筆輸入有一個數字 n,1<=n<=500。
測資:
輸入 : 1 4
輸出 : 1 7
#include <iostream>
using namespace std;
int main() {
int n;
while(cin >> n){
int alley[501] = {};
alley[1] = 1;
for(int i=2; i<=n; i++){
alley[i] = alley[i-1] + i-1;
}
cout << alley[n] << endl;
}
return 0;
}