數(shù)組的概念數(shù)組并不是一種數(shù)據(jù)類(lèi)型_第1頁(yè)
數(shù)組的概念數(shù)組并不是一種數(shù)據(jù)類(lèi)型_第2頁(yè)
數(shù)組的概念數(shù)組并不是一種數(shù)據(jù)類(lèi)型_第3頁(yè)
數(shù)組的概念數(shù)組并不是一種數(shù)據(jù)類(lèi)型_第4頁(yè)
數(shù)組的概念數(shù)組并不是一種數(shù)據(jù)類(lèi)型_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第五章數(shù)組5.1概述

數(shù)組的概念:數(shù)組并不是一種數(shù)據(jù)類(lèi)型,而是一組相同類(lèi)型數(shù)據(jù)的集合。用一個(gè)統(tǒng)一的名字(數(shù)組名)代表邏輯上相關(guān)的一批數(shù)據(jù),每個(gè)元素用下標(biāo)變量來(lái)區(qū)分;下標(biāo)變量代表元素在數(shù)組中的位置。其表示形式:

A(1),A(10)X(1,1),X1(1,10),X(2,10)Y(0,0,0),Y(1,2,5)VisualBasic中的數(shù)組,按不同的方式可分為以下幾類(lèi):按數(shù)組的大小(元素個(gè)數(shù))是否可以改變來(lái)分為:定長(zhǎng)數(shù)組、動(dòng)態(tài)(可變長(zhǎng))數(shù)組。按元素的數(shù)據(jù)類(lèi)型可分為:數(shù)值型數(shù)組、字符串?dāng)?shù)組、日期型數(shù)組、變體數(shù)組等。按數(shù)組的維數(shù)可分為:一維數(shù)組、二維數(shù)組、多維數(shù)組。對(duì)象數(shù)組:菜單對(duì)象數(shù)組、控件數(shù)組。5.2一維數(shù)組5.2.1一維數(shù)組的聲明

形式:

Dim數(shù)組名([<下界>to]<上界>)[As<數(shù)據(jù)類(lèi)型>]或:

Dim數(shù)組名[<數(shù)據(jù)類(lèi)型符>]([<下界>to]<上界>)例:Dima(1to10)AsInteger‘聲明了a數(shù)組有10個(gè)元素與上面聲明等價(jià)形式:

Dima%(1to10)1是下標(biāo)的下界10是下標(biāo)的上界數(shù)組元數(shù)的數(shù)據(jù)類(lèi)型說(shuō)明:1.?dāng)?shù)組名的命名規(guī)則與變量的命名相同。2.?dāng)?shù)組的元素個(gè)數(shù):上界-下界+1。3.缺省<下界>為0,若希望下標(biāo)從1開(kāi)始,可在模塊的通用部分使用OptionBase語(yǔ)句將設(shè)為1。其使用格式是:

OptionBase0|1'后面的參數(shù)只能取0或1例如:

OptionBase1'將數(shù)組聲明中缺省<下界>下標(biāo)設(shè)為14.<下界>和<上界>不能使用變量,必須是常量,常量可以是直接常量、符號(hào)常量,一般是整型常量。5.如果省略As子句,則數(shù)組的類(lèi)型為變體類(lèi)型。6.?dāng)?shù)組中各元素在內(nèi)存占一片連續(xù)的存儲(chǔ)空間,一維數(shù)組在內(nèi)存中存放的順序是下標(biāo)大小的順序,如圖5-1所示:5.2.2一維數(shù)組元素的引用使用形式:

數(shù)組名(下標(biāo))

其中:下標(biāo)可以是整型變量、常量或表達(dá)式。例如:設(shè)有下面的數(shù)組B(10)AsInteger

則下面的語(yǔ)句都是正確的。

A(1)=A(2)+B(1)+5'取數(shù)組元素運(yùn)算

A(i)=B(i)

'下標(biāo)使用變量

B(i+1)=A(i+2)

'下標(biāo)使用表達(dá)式5.2.3一維數(shù)組的基本操作

1.可通過(guò)循環(huán)給數(shù)組元素的初值

Fori=1To10 'A數(shù)組的每個(gè)元素值為1

A(i)=1Nexti

2.數(shù)組的輸入Fori=1To4Forj=1To5sc(i,j)=InputBox("輸入sc("&i&","&j&")的值")

NextjNextI3.數(shù)組的輸出輸出如下圖所示的下三角數(shù)據(jù)Dimsc(5,5)AsInteger,i%,j%Fori=1To5Forj=1Toisc(i,j)=i*5+jPrintsc(i,j);"";Nextj

Print'換行

NextI4.求數(shù)組中最大元素及所在下標(biāo)

DimMaxAsInteger,iMaxAsInteger Max=A(1):iMax=1Fori=2To10IfA(i)>MaxThen Max=A(i) iMax=iEndIfNextI5.將數(shù)組元素倒置Fori=1To10\2t=A(i)

A(i)=A(10-i+1)

A(10-i+1)=tNextI例5.15.2.4一維數(shù)組的應(yīng)用一、分類(lèi)統(tǒng)計(jì)

例5.2

在例5.1中如果還要統(tǒng)計(jì)0~9,10~19,20~20,….80~89,90~99分?jǐn)?shù)段及100分的學(xué)生人。則可另用數(shù)組bn來(lái)存各分?jǐn)?shù)段的人數(shù),并用bn(0)存0~9分的人數(shù),bn(1)存10~19分的人數(shù),…bn(9)存90~99分的人數(shù),bn(10)存100分的人數(shù)。二、排序問(wèn)題1.選擇法排序算法思想:1)對(duì)有n個(gè)數(shù)的序列(存放在數(shù)組a(n)中),從中選出最?。ㄉ颍┗蜃畲螅ń敌颍┑臄?shù),與第1個(gè)數(shù)交換位置;2)除第1個(gè)數(shù)外,其余n-1個(gè)數(shù)中選最小或最大的數(shù),與第2個(gè)數(shù)交換位置;3)依次類(lèi)推,選擇了n-1次后,這個(gè)數(shù)列已按升序排列。1.選擇法排序算法思想:1)對(duì)有n個(gè)數(shù)的序列(存放在數(shù)組a(n)中),從中選出最小(升序)或最大(降序)的數(shù),與第1個(gè)數(shù)交換位置;2)除第1個(gè)數(shù)外,其余n-1個(gè)數(shù)中選最小或最大的數(shù),與第2個(gè)數(shù)交換位置;3)依次類(lèi)推,選擇了n-1次后,這個(gè)數(shù)列已按升序排列。Fori=1Ton-1

p=iForj=i+1TonIfa(p)>a(j)Thenp=jNextjtemp=a(i)a(i)=a(p)a(p)=tempNexti選擇法排序(升序)的VB程序:2.冒泡法排序(遞增)

算法思想:(將相鄰兩個(gè)數(shù)比較,小的調(diào)到前頭)1)有n個(gè)數(shù)(存放在數(shù)組a(n)中),第一趟將每相鄰兩個(gè)數(shù)比較,小的調(diào)到前頭,經(jīng)n-1次兩兩相鄰比較后,最大的數(shù)已“沉底”,放在最后一個(gè)位置,小數(shù)上升“浮起”;2)第二趟對(duì)余下的n-1個(gè)數(shù)(最大的數(shù)已“沉底”)按上法比較,經(jīng)n-2次兩兩相鄰比較后得次大的數(shù);3)依次類(lèi)推,n個(gè)數(shù)共進(jìn)行n-1趟比較,在第j趟中要進(jìn)行n-j次兩兩比較。Fori=1Ton-1Forj=1Ton-iIfa(j)>a(j+1)Thentemp=a(j)a(j)=a(j+1)a(j+1)=tempEndifNextjNexti冒泡法排序(升序)的VB程序:例5.3

用隨機(jī)函數(shù)產(chǎn)生50個(gè)[10,100)的隨機(jī)整數(shù),并按照由小到大的順序打印出來(lái)。程序界面如下:5.3二維數(shù)組及多維數(shù)組5.3.1二維數(shù)組的聲明聲明格式如下:Dim數(shù)組名([<下界>]to<上界>,[<下界>to]<上界>)[As<數(shù)據(jù)類(lèi)型>]其中的參數(shù)與一維數(shù)組完全相同。例如:Dima(2,3)AsSingle

二維數(shù)組在內(nèi)存的存放順序是“先行后列”。例如數(shù)組a的各元素在內(nèi)存中的存放順序是:a(0,0)→a(0,1)→a(0,2)→a(0,3)→a(1,0)→a(1,1)→a(1,2)→a(1,3)→a(2,0)→(2,1)→a(2,2)→a(2,3)5.3.2二維數(shù)組的引用引用形式:

數(shù)組名(下標(biāo)1,下標(biāo)2)例如:

a(1,2)=10a(i+2,j)=a(2,3)*2在程序中常常通過(guò)二重循環(huán)來(lái)操作使用二維數(shù)組元素。

5.3.3二維數(shù)組的基本操作二維數(shù)組數(shù)據(jù)的輸入2.求最大元素及其所在的行和列3.計(jì)算兩矩陣相乘4.矩陣的轉(zhuǎn)置例5.4設(shè)某一個(gè)班共有60個(gè)學(xué)生,期末考試5門(mén)課程,請(qǐng)編一程序評(píng)定學(xué)生的獎(jiǎng)學(xué)金,要求打印輸出一、二等獎(jiǎng)學(xué)金學(xué)生的學(xué)號(hào)和各門(mén)課成績(jī)。(獎(jiǎng)學(xué)金評(píng)定標(biāo)準(zhǔn)是:總成績(jī)超過(guò)全班總平成績(jī)20%發(fā)給一個(gè)獎(jiǎng)學(xué)金,超過(guò)全班總平成績(jī)10%發(fā)給二個(gè)獎(jiǎng)學(xué)金。)

5.3.5多維數(shù)組的聲明和引用定義多維數(shù)組的格式如下:Dim數(shù)組名([<下界>]to<上界>,[<下界>to]<上界>,……)[As<數(shù)據(jù)類(lèi)型>]例如:

Dima(5,5,5)AsInteger聲明a是三維數(shù)組

Dimb(2,6,10,5)AsInteger

'聲明b是四維數(shù)組5.4動(dòng)態(tài)數(shù)組動(dòng)態(tài)數(shù)組:在聲明時(shí)未給出數(shù)組的大小。定長(zhǎng)數(shù)組是在程序編譯時(shí)分配存儲(chǔ)空間,而動(dòng)態(tài)數(shù)組是在程序執(zhí)行時(shí)分配存儲(chǔ)空間。5.4.1動(dòng)態(tài)數(shù)組的建立及使用

建立動(dòng)態(tài)數(shù)組包括聲明和大小說(shuō)明兩步:1.在使用Dim、Private或Public語(yǔ)句聲明括號(hào)內(nèi)為空的數(shù)組。格式:Dim|Private|Public數(shù)組名()As數(shù)據(jù)類(lèi)型例:Dima()AsInteger2.在過(guò)程中用ReDim語(yǔ)句指明該數(shù)組的大小。格式:ReDim[Preserve]數(shù)組名(下標(biāo)1[,下標(biāo)2…])

Preserve參數(shù):保留數(shù)組中原來(lái)的數(shù)據(jù)例:RedimA(10)

RedimPreserve

A(20)說(shuō)明:(1)ReDim語(yǔ)句是一個(gè)可執(zhí)行語(yǔ)句,只能出現(xiàn)在過(guò)程中,并且可以多次使用,改變數(shù)組的維數(shù)和大小。

(2)定長(zhǎng)數(shù)組聲時(shí)中的下標(biāo)只能是常量,而動(dòng)態(tài)數(shù)組ReDim語(yǔ)句中的下標(biāo)是常量,也可以是有了確定值的變量。例:

PrivateSubForm_Click()DimNAsIntegerN=Val(InputBox(“輸入N=?”))Dima(N)AsInteger…….Endsub×(3)在過(guò)程中可以多次使用ReDim來(lái)改變數(shù)組的大小,也可改變數(shù)組的維數(shù)。例:ReDimx(10)

ReDimx(20)x(20)=30Printx(20)

ReDimx(20,5)x(20,5)=10Printx(20,5)(4)每次使用ReDim語(yǔ)句都會(huì)使原來(lái)數(shù)組中值丟失,可以在ReDim后加Preserve參數(shù)來(lái)保留數(shù)組中的數(shù)據(jù)。但此時(shí)只能改變最后一維的大小。例5.5

5.4.2與數(shù)組操作有關(guān)的幾個(gè)函數(shù)Aarry函數(shù)Aarry函數(shù)可方便地對(duì)數(shù)組整體賦值,但它只能給聲明Variant的變量或僅由括號(hào)括起的動(dòng)態(tài)數(shù)組賦值。賦值后的數(shù)組大小由賦值的個(gè)數(shù)決定。例如,要將1,2,3,4,5,6,7這些值賦值給數(shù)組a,可使用下面的方法賦值。Dima()A=array(1,2,3,4,5,6,7)DimaA=array(1,2,3,4,5,6,7)2求數(shù)組的上界Ubound()函數(shù)、下界Lbound()函數(shù)

Ubound()函數(shù)和Lbound()函數(shù)分別用來(lái)確定數(shù)組某一維的上界和下界值。使用形式如下:

UBound(<數(shù)組名>[,<N>])LBound(<數(shù)組名>[,<N>])

其中:<數(shù)組名>:必需的。數(shù)組變量的名稱(chēng),遵循標(biāo)準(zhǔn)變量命名約定。<N>

:可選的;一般是整型常量或變量。指定返回哪一維的上界。1表示第一維,2表示第二維,如此等等。如果省略默認(rèn)是1。3.Split函數(shù)使用格式:Split(<字符串表達(dá)式>[,<分隔符>])說(shuō)明:使用Split函數(shù)可從一個(gè)字符串中,以某個(gè)指定符號(hào)為分隔符,分離若干個(gè)子字符串,建立一個(gè)下標(biāo)從零開(kāi)始的一維數(shù)組。補(bǔ)充例:使用文件框,通過(guò)編程實(shí)現(xiàn)大量數(shù)據(jù)的輸入輸入一系列的數(shù)據(jù),存放在數(shù)組中。對(duì)輸入的數(shù)據(jù)允許修改和自動(dòng)識(shí)別非數(shù)字?jǐn)?shù)據(jù)。分析:利用文本框?qū)崿F(xiàn)大量數(shù)字串的輸入和編輯的功能;通過(guò)編程將輸入的數(shù)字串以逗號(hào)為分界符分離出各項(xiàng)數(shù)據(jù);對(duì)非數(shù)字輸入的判斷能力。5.5控件數(shù)組

5.5.1控件數(shù)組的概念

一組相同類(lèi)型的控件組成。它們共用一個(gè)控件名,具有相同的屬性,建立時(shí)系統(tǒng)給每個(gè)元素賦一個(gè)唯一的索引號(hào)(Index)。

控件數(shù)組共享同樣的事件過(guò)程,通過(guò)返回的下標(biāo)值區(qū)分控件數(shù)組中的各個(gè)元素。例:PrivateSubcmdName_Click(IndexAsInteger)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論