Upload
requiemformemories
View
307
Download
11
Embed Size (px)
DESCRIPTION
中山女高資訊研究社20th 教學用ppt
Citation preview
CH5 陣列遠離超多變數的惡夢
By 文月 ( 程教 )
有一天,文月要結算成績
她決定寫個程式來幫助她。
來寫個程式吧 ><
這是她的 code :#include<iostream>using namespace std;int main(){
int a;int b;int c;....( 省略 )cin>>a>>b>>c>>...( 省略 );cout<<" 第 1 位同學的分數是 "<<a<<endl;cout<<" 第 2 位同學的分數是 "<<b<<endl;cout<<" 第 3 位同學的分數是 "<<c<<endl;....( 省略 )
}
輸出結果→
文月已死…
要怎麼做才能夠不用宣告這麼多變數呢?Q:
救星出現! - 陣列★什麼是陣列?陣列是將相同資料型別的多個變數結合在一起,每
個陣列元素皆可視為變數使用。★怎麼找到我要的那一個變數?陣列佔有連續的記憶體空間,陣列提供索引值存取
陣列元素。C 語言規定陣列的第一個元素其索引值為 0 ,第二
個元素其索引值為 1 ,依此類推,一個陣列擁有n 個元素,若要存取陣列最後一個元素,需設定索引值為 n-1 。
不懂嗎?先讓我們在看下去 >w<
陣列的宣告與初始化★ 宣告並初始化陣列的語法如下:
int a[3];
a[0]=50;
a[1]=30;
a[2]=100;
資料型別 陣列名稱
陣列元素數陣列的第一個元素其索引值
為 0
陣列的宣告與初始化★ 也可以這樣寫:
int a[3]={50,30,100};
在宣告時就把值存入
陣列的宣告與初始化★ 善用迴圈來輸入陣列元素的值:
int a[3];
for(int i=0;i<3;i++){
cin>>a[i];
}
文月的 code 變簡潔了!#include<iostream>
using namespace std;
int main(){
int a[10]={90,87,88,75,94,66,77,98,40,70};
for(int i=1;i<=10;i++){
cout<<" 第 "<<i<<" 位同學的分數是 "<<a[i-1]<<endl;
}
} 終於不用宣告 10 個變數了!很棒對吧?
陣列就像一排箱子……★ 還記得變數就像箱子的比喻嘛?陣列就像是一排
黏在一起的箱子,當你要找你想要的那一個箱子時不需要每一個都命名,只需要找「左邊 / 右邊數來第 X 個」就好了。
a[0] a[1] a[2] a[3] a[4] ……
a[0][2] a[1][2]
箱子堆高高 – 二維陣列★ 你知道嗎?箱子可以有好幾列喔!而且它有個響
亮的名字:二維陣列。★ 宣告二維陣列的形式:
int a[x][y];
a[0][1] a[1][1]
a[0][0] a[1][0]
Y
X
範例 : a[2][3]
a[0][2]3
a[1][2]6
箱子堆高高 – 二維陣列★ 如果一開始就要把值存入的話可以這樣寫:
a[0][1]2
a[1][1]5
a[0][0]1
a[1][0]4
Y
X
int a[2][3]={{1,2,3},{4,5,6}}int a[2][3]={{1,2,3},{4,5,6}}
a[0][*] a[1][*]
a[*][0]
a[*][1]
a[*][2]
a[0][1][0]a[0][1][1]
箱子好幾排 – 三維陣列★ 宣告型式如下: a[x][y][z]
★ 範例: a[3][2][4]
a[0][1][2]
a[0][0][0]a[0][0][1]a[0][0][2]
a[1][1][0]a[1][1][1]a[1][1][2]
a[1][0][0]a[1][0][1]a[1][0][2]
a[2][1][0]a[2][1][1]a[2][1][2]
a[2][0][0]a[2][0][1]a[2][0][2]
a[3][1][0]a[3][1][1]a[3][1][2]
a[3][0][0]a[3][0][1]a[3][0][2]
Y
X
Z
一維?二維?多維陣列!?★ 所以可以寫 a[2][3][4][5] 嘛? b[3][4][5][6][7] 嘛?答案是肯定的喔!
★ 你說:「天啊!四維五維六維……我想像不出圖形了!三維是我的極限啊!」
不用擔心,把它想成裝箱子的大箱子即可!
裝箱子的大箱子想像圖
有沒有覺得變簡單了呢?
陣列的應用★ 文月的「印成績」程式就是一種陣列的應
用喔!★ 接下來我們來看一些陣列的應用!(又有很多題目可以做了,很棒對吧?)
應用一:費氏數列
C★ ode 在此
應用二:進制轉換器
★Code 怎麼寫?想想看><
★ 此為十進制轉二進制轉換器
報告到此結束,謝謝大家!
要記得寫作業喔!
排箱子好好玩>w<
附錄 code :費氏數列#include <iostream>using namespace std;int main(){ int F[20]; F[0]=1; F[1]=1; for(int i=2;i<20;i++){ F[i]=F[i-1]+F[i-2]; } for(int i=0;i<20;i++){ cout << " 第 " << i+1 << " 個費氏數列數值為 " << F[i] <<
endl; } }