20
CH5 陣陣 陣陣陣陣陣陣陣陣陣 By 陣陣 ( 陣陣 )

C++基礎程式設計 ch5 陣列

Embed Size (px)

DESCRIPTION

中山女高資訊研究社20th 教學用ppt

Citation preview

Page 1: C++基礎程式設計 ch5 陣列

CH5 陣列遠離超多變數的惡夢

By 文月 ( 程教 )

Page 2: C++基礎程式設計 ch5 陣列

有一天,文月要結算成績

她決定寫個程式來幫助她。

來寫個程式吧 ><

Page 3: C++基礎程式設計 ch5 陣列

這是她的 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;....( 省略 )

}

輸出結果→

Page 4: C++基礎程式設計 ch5 陣列

文月已死…

要怎麼做才能夠不用宣告這麼多變數呢?Q:

Page 5: C++基礎程式設計 ch5 陣列

救星出現! - 陣列★什麼是陣列?陣列是將相同資料型別的多個變數結合在一起,每

個陣列元素皆可視為變數使用。★怎麼找到我要的那一個變數?陣列佔有連續的記憶體空間,陣列提供索引值存取

陣列元素。C 語言規定陣列的第一個元素其索引值為 0 ,第二

個元素其索引值為 1 ,依此類推,一個陣列擁有n 個元素,若要存取陣列最後一個元素,需設定索引值為 n-1 。

不懂嗎?先讓我們在看下去 >w<

Page 6: C++基礎程式設計 ch5 陣列

陣列的宣告與初始化★ 宣告並初始化陣列的語法如下:

int a[3];

a[0]=50;

a[1]=30;

a[2]=100;

資料型別 陣列名稱

陣列元素數陣列的第一個元素其索引值

為 0

Page 7: C++基礎程式設計 ch5 陣列

陣列的宣告與初始化★ 也可以這樣寫:

int a[3]={50,30,100};

在宣告時就把值存入

Page 8: C++基礎程式設計 ch5 陣列

陣列的宣告與初始化★ 善用迴圈來輸入陣列元素的值:

int a[3];

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

cin>>a[i];

}

Page 9: C++基礎程式設計 ch5 陣列

文月的 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 個變數了!很棒對吧?

Page 10: C++基礎程式設計 ch5 陣列

陣列就像一排箱子……★ 還記得變數就像箱子的比喻嘛?陣列就像是一排

黏在一起的箱子,當你要找你想要的那一個箱子時不需要每一個都命名,只需要找「左邊 / 右邊數來第 X 個」就好了。

a[0] a[1] a[2] a[3] a[4] ……

Page 11: C++基礎程式設計 ch5 陣列

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]

Page 12: C++基礎程式設計 ch5 陣列

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]

Page 13: C++基礎程式設計 ch5 陣列

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

Page 14: C++基礎程式設計 ch5 陣列

一維?二維?多維陣列!?★ 所以可以寫 a[2][3][4][5] 嘛? b[3][4][5][6][7] 嘛?答案是肯定的喔!

★ 你說:「天啊!四維五維六維……我想像不出圖形了!三維是我的極限啊!」

不用擔心,把它想成裝箱子的大箱子即可!

Page 15: C++基礎程式設計 ch5 陣列

裝箱子的大箱子想像圖

有沒有覺得變簡單了呢?

Page 16: C++基礎程式設計 ch5 陣列

陣列的應用★ 文月的「印成績」程式就是一種陣列的應

用喔!★ 接下來我們來看一些陣列的應用!(又有很多題目可以做了,很棒對吧?)

Page 17: C++基礎程式設計 ch5 陣列

應用一:費氏數列

C★ ode 在此

Page 18: C++基礎程式設計 ch5 陣列

應用二:進制轉換器

★Code 怎麼寫?想想看><

★ 此為十進制轉二進制轉換器

Page 19: C++基礎程式設計 ch5 陣列

報告到此結束,謝謝大家!

要記得寫作業喔!

排箱子好好玩>w<

Page 20: C++基礎程式設計 ch5 陣列

附錄 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; } }