計算機概論:C/C++程式設計

 

5章、陣列和指標

 

 


授課教師:陳慶瀚

WWW : http://www.miat.ee.isu.edu.tw/cpp

E-mail : pierre@isu.edu.tw   

 


5.1 一維陣列

如果資料呈現方式是單一維度,也就是單變數的序列資料,例如時間序列資料,那麼其對應變數的宣告就適合使用一維陣列,宣告方式如下 :

陣列的資料型別 陣列的名稱 [ 陣列的大小 ] ;

陣列必需清楚的宣告其數目,以便在程式編譯時系統指定配置的記憶體空間大小。陣列的資料型別宣告指定陣列內所有元素的共同型態,可以是char, int, float, double, long...,甚至可以是自訂的資料型別。陣列的大小定義陣列中元素的數目。例如宣告一陣列名稱為mass擁有100個元素且型別為double的資料陣列:

double mass[100];  

mass是這100個元素(資料)的共同名稱,但是每一個元素都有一個索引值(index),所要對陣列中的任意元素存取,必須透過陣列的名稱,名稱後再加上中括號[]並在其中指定欲索引之元素。舉例來說:

mass[3] = 12.23;  

指定第4個元素的值為12.23。由於陣列的索引值是自動配置由0到最大陣列數目-1,所以mass[3]當中的索引值30起算,是第4筆資料而不是第三筆資料。這個例子我們宣告了一個擁有100double變數,其陣列索引則是從mass[0]mass[99]範例程式6-1展示一個099的整數陣列的宣告和使用實例:

/*----------------------------------------------------*/

//                  範例程式5-1

//          宣告一個100個元素的整數陣列

//                  陳慶瀚,2001

/*----------------------------------------------------*/

#include <iostream.h>

void main()

{

    int x[100]; // 宣告一個100個元素的整數陣列

    int t;

    for(t=0; t<100; t++) x[t] = t; // X的陣列值分別填入099

    for(t=0; t<100; t++) cout << x[t]<< endl; // 輸出X的內容

}

 

一個陣列所需要的記憶空間與它的型態和大小有直接的關係。一個一維陣列,他使用的位元組大小計算如下:

    需要的bytes = 資料型別的bytesx陣列大小

以範例程式6-1中的int x[100]來說明:int資料型別使用2bytes,所以整個陣列就需要2 bytes x 100 = 200 bytes 但是不同的作業系統或編譯器可能使用不同的bytes來表示同一資料型別,例如64位元的作業就可能使用4 bytes來表示整數(int)變數。針對可能的變化,C/C++提供了一個函式sizeof(data_type)來偵測系統究竟使用幾個bytes來表示某一資料型別。所以我們可以利用這個函式來計算一個陣列需要佔用多少記憶體:

需要的bytes= sizeof(資料型別) x 陣列大小

要提醒程式設計者,C/C++並沒有提供陣列範圍的檢查,也就是說編譯器不會自動檢查你目前所存取的陣列索引是否超過了宣告陣列的範圍。所以一個程式設計者必須自行在必要的地方設計範圍檢查的功能。否則一旦不當使用陣列的索引(多數情況是超過陣列最大索引值),即有可能造成程式執行時的錯誤,嚴重時甚至造成程式當掉。

舉例來說,下面的程式片斷在編譯時將不會產生任何的錯誤,但執行時卻可能產生難以偵測的錯誤: 

int count[4];

count[1]=1;

count[2]=1;

count[3]=1;

count[4]=1; //超出陣列的最大索引值

正確的寫法應該是:

int count[4];

count[0]=1;

count[1]=1;

count[2]=1;

count[3]=1;

 

/*----------------------------------------------------*/

//                  範例程式5-2

//             計算陣列元素的平均值

//                  陳慶瀚,2001

/*----------------------------------------------------*/

#include <iostream.h>

#include <stdlib.h> // 包含random()函式的標頭檔

void main()

{

float x[40]; // 宣告一個40個浮點數的陣列

float average;

// 100個介於099之間的亂數值填入陣列

for(int t=0; t<40; t++) x[t] = random(100);

float sum=0;

for(int t=0; t<40; t++) sum=sum+x[t];

average=sum/40;

   cout <<"average = "<<average<<endl; // 輸出平均值

}

你可能會得到一個類似的結果:

   average = 48.725

 

/*----------------------------------------------------*/

//                  範例程式5-4

//                 使用陣列儲存字串

//                  陳慶瀚,2001

/*----------------------------------------------------*/

#include <iostream.h>

void main()

{

    char name[6];

    cout<<"輸入你的名字:";

    cin>>name;

    cout<<name;

    char t;

    cin>>t;

}

 


課堂練習TD5-1
宣告一個長度為100的一維陣列,填入100[0,10]之間的亂數,統計陣列中出現5的個數。

課堂練習TD5-2
續上題,使用一個雙重迴圈,統計0-10每一個數字在陣列中出現的頻率。


 

計算機概論:C/C++程式設計

義守大學電機系 陳慶瀚 
2001.11.12

 

謝孟媛 dvd -
情趣用品 -
飛鳥遊戲 -
遊戲基地 -
PATEK PHILIPPE -
xyz資訊工作坊 -
xyz軟體王 -
英文老師 -
沛納海 -
xyz軟體下載倉庫 -
基測試題 -
CARTIER 卡地亞 -
林晟數學 -
PIAGET -
費洛蒙情定 -
xyz -
軟體大補帖 -
高國華補習班 -
game淘 -
ps2台片 -
wii超級瑪莉攻略 -
情定費洛蒙 -
wii價格2011 -
xbox 360台片 -
tvgame360 -
愛馬仕 -
春藥專賣店 -
ps3價錢 2011 -
ps2遊戲王 -
wii遊戲片專賣店 -
百達翡麗 PATEK PHILIPPE -
壯陽藥品哪買 -
海賊王 -
春藥王 -
xyz軟體下載倉庫 -
壯陽食物 -
xbox360 -
催情藥 -
TISSOT 天梭 -
ps2遊戲燒錄 -
威而剛哪裡買 -
一夜情婦 -
xbox 360台片專賣 -
國中基測題庫 -
無雙遊戲網 -
xyz軟體王 -
ps2遊戲片80元 -
基測 -
xyz軟體王下載 -
GUCCI 古馳 -
南一題庫網 -
COACH -
LOUIS VUITTON -
wii超級瑪莉 -
wii價格2011 -
魔法老師 -
催情藥專賣店 -
國小翰林題庫網 -
wii遊戲片專賣店 -
遊戲天堂 -
寶格麗 -
金榜之路 -
wii遊戲片80元 -
xbox 360遊戲片 -
wii遊戲載點 -
人類費洛蒙情定 -
xbox 360台片專賣 -
催情王 -
xyz軟體之家 -
ps2遊戲片80元 -
情色小站 -
微風廣場 -
情慾之夜 -
民視文化 -
xbox360 -
蔻馳 -
ps2遊戲燒錄 -
ps3遊戲片 -
龍騰高中題庫 -
ps3台片 -
威而剛 -
ps3價錢 2011 -
軟體王下載 -
蕭邦 CHOPARD -
龍騰 -
催情藥 -
威而剛哪裡買 -
基測題目 -
HERMES 愛馬仕 -
情定費洛蒙 -
ps2台片 -
ps3遊戲片 -
wii瑪莉兄弟遊戲 -
江詩丹頓 Vacheron Constantin -
wii超級瑪莉 -
wii遊戲片在ho99小舖 -
春藥王 -
歷屆基測試題 -
窮人軟體 -
威而柔哪裡買 -
蕭邦 -
翰林題庫網 -
一夜情婦 -
wii遊戲下載 -
xbox 360遊戲 -
壯陽食物 -
ps2遊戲片 -
sogo百貨 -
台灣情色網 -
xyz軟體王下載 -
lv2011官方網 -
wii遊戲片專賣店 -
xbox 360價錢 -
歐米茄 -
雷達錶 RADO -
xyz資訊工坊 -
儒林補習班 -
壯陽藥品 -
xyz軟體王 -
窮人遊戲 -
ps2遊戲下載 -
ps3台片 -
德周 -
sogo百貨 -
費洛蒙情定 -
壯陽藥品哪買 -
催情王 -
春藥哪裡買 -
lv2011夏季新款 -
情趣用品 -
中友百貨 -
史萊姆的第一個家 -
情色論壇 -
萬寶龍 MONT BLANC -
萬國 -
ps2遊戲下載 -
春藥哪裡買 -
xyz資訊工作坊 -
龍騰文化 -
太平洋百貨 -
軟體王 -
xbox 360台片專賣 -
ps3遊戲片在ho99小舖 -
壯陽藥 -
xyz軟體銀行 -
xbox360台片 -
魔法24 -
wii遊戲片80元 -
XYZ資訊工坊 -
CARTIER -
春藥網 -
壯陽 -
xyz 軟體補給站 -
微風廣場 -
lv2011新款型錄 -
xbox 360遊戲 -
費洛蒙 -
卡地亞 -
wii遊戲下載 -
窮人天碟 -
春藥專賣店 -
gucci2011專賣店旗艦店 -
迪奧 -
CHANEL -
xyz軟體大本營 -
xbox 360遊戲片在ho99小舖 -
台北郵購網 -
BURBERRY 巴寶莉 -
伯爵 -
遠東百貨 -
陳希 -
費洛蒙mx -
時間廣場 -
漢神百貨 -
情色論壇 -
傳政 -
軟體 -
寶格麗 BVLGARI -
名牌包俱樂部 -
時間廣場 -
威而柔 -
wii瑪莉兄弟遊戲 -
lv名牌包專賣店 -
xyz軟體大本營 -
威而柔哪裡買 -
伯爵 PIAGET -
xyz軟體銀行 -
ps3遊戲下載 -
wii超級瑪莉歐 -
無名套裝 -
xyz軟體下載倉庫 -
江詩丹頓 -
林晟 -
ps3遊戲片在ho99小舖 -
威而剛 -
費洛蒙mx -
xyz軟體之家 -
HERMES -
林晟超理解數學 -
謝孟媛 -