第04章 數(shù)組與自定義類型_第1頁(yè)
第04章 數(shù)組與自定義類型_第2頁(yè)
第04章 數(shù)組與自定義類型_第3頁(yè)
第04章 數(shù)組與自定義類型_第4頁(yè)
第04章 數(shù)組與自定義類型_第5頁(yè)
已閱讀5頁(yè),還剩92頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第4章 數(shù)組與自定義類型第第 2 頁(yè)頁(yè)Dim i%, s!, a!, avg!, p%Dim i%, s!, a!, avg!, p%For i = 1 To 10For i = 1 To 10 a = Val(InputBox(Enter a number) a = Val(InputBox(Enter a number) s = s + a s = s + anext inext iavg = s / 10avg = s / 10Print avgPrint avgp = 0p = 0For i = 1 To 10For i = 1 To 10 a = Val(InputBox(Enter

2、 a number) a = Val(InputBox(Enter a number) If a avg Then p = p + 1 If a avg Then p = p + 1next inext iPrint Print 高于平均分高于平均分 & avg & & avg & 的學(xué)生共有的學(xué)生共有 & p & & p & 人人 引例引例:求一個(gè)班求一個(gè)班10個(gè)學(xué)生的平均成績(jī),統(tǒng)計(jì)高于平均分個(gè)學(xué)生的平均成績(jī),統(tǒng)計(jì)高于平均分的人數(shù)。的人數(shù)。第4章 數(shù)組與自定義類型第第 3 頁(yè)頁(yè)分析表明: 程序中采用一個(gè)變量a,只能保存最后一個(gè)學(xué)

3、生成績(jī),無(wú)法保存所有學(xué)生成績(jī),因此,在統(tǒng)計(jì)高于平均分人數(shù)時(shí),不得不重復(fù)輸入成績(jī), 這種方法存在著: (1)重復(fù)錄入數(shù)據(jù):用戶輸入數(shù)據(jù)的工作量成倍增加;重復(fù)錄入數(shù)據(jù):用戶輸入數(shù)據(jù)的工作量成倍增加; (2 2)容易出錯(cuò):若本次輸入的成績(jī)與上次不同,則統(tǒng)計(jì)的結(jié))容易出錯(cuò):若本次輸入的成績(jī)與上次不同,則統(tǒng)計(jì)的結(jié)果不正確果不正確。 第4章 數(shù)組與自定義類型第第 4 頁(yè)頁(yè)如果使用:如果使用:A1A1,A2A2,A3A3,A4A4,A5A5,A6A6,A7A7,A8A8,A9A9,A10A10Dim Dim s!,p%, Avg!, A1!s!,p%, Avg!, A1!,A2!A2!,A3!A3!,A4!

4、A4!,A5!A5!,A6!A6!,A7!A7!,A8!A8!,A9!A9!,A10!A10! A1=Val(InputBox(A1=Val(InputBox( )A2=Val(InputBox()A2=Val(InputBox()A3=Val(InputBox()A3=Val(InputBox()A4=Val(InputBox()A4=Val(InputBox()A5=Val(InputBox()A5=Val(InputBox()A6=Val(InputBox()A6=Val(InputBox()A7=Val(InputBox()A7=Val(InputBox()A8=Val(InputBo

5、x()A8=Val(InputBox()A9=Val(InputBox()A9=Val(InputBox()A10=Val(InputBox()A10=Val(InputBox()方法方法2 2:用用多個(gè)變量多個(gè)變量保存每個(gè)學(xué)生成績(jī)。保存每個(gè)學(xué)生成績(jī)。s=A1+A2+A3+A4+A5+A6+A7+A8+A9+A10s=A1+A2+A3+A4+A5+A6+A7+A8+A9+A10Avg=s/10Avg=s/10P=0P=0Print 10Print 10個(gè)學(xué)生平均分?jǐn)?shù)為個(gè)學(xué)生平均分?jǐn)?shù)為 & Avg & AvgIF A1Avg Then pIF A1Avg Then pp+p+IF

6、 A2Avg Then pIF A2Avg Then pp+p+IF A3Avg Then pIF A3Avg Then pp+p+ . . Print Print 高于平均分高于平均分 & Avg & Avg _ & _ & 的學(xué)生共有的學(xué)生共有 & p & & p & 人人 第4章 數(shù)組與自定義類型第第 5 頁(yè)頁(yè)如果使用:如果使用:A1A1,A2A2,A3A3,A4A4,A5A5,A6A6,A7A7,A8A8,A9A9,A10A10方法方法2 2:用用多個(gè)變量多個(gè)變量保存每個(gè)學(xué)生成績(jī)。保存每個(gè)學(xué)生成績(jī)。 采用定義多個(gè)變量的方法

7、雖然解決了成績(jī)保存采用定義多個(gè)變量的方法雖然解決了成績(jī)保存的問(wèn)題,但當(dāng)數(shù)據(jù)量較大時(shí),程序編寫(xiě)麻煩,的問(wèn)題,但當(dāng)數(shù)據(jù)量較大時(shí),程序編寫(xiě)麻煩,不易實(shí)現(xiàn)或者無(wú)法實(shí)現(xiàn)。不易實(shí)現(xiàn)或者無(wú)法實(shí)現(xiàn)。 如果將如果將A A后面的下標(biāo)改為后面的下標(biāo)改為i i,使用循環(huán)為其賦值,使用循環(huán)為其賦值程序會(huì)更簡(jiǎn)潔!程序會(huì)更簡(jiǎn)潔!解決方法:解決方法:利用利用數(shù)組數(shù)組可以很方便的實(shí)現(xiàn)!可以很方便的實(shí)現(xiàn)!第4章 數(shù)組與自定義類型第第 6 頁(yè)頁(yè)方法3:用數(shù)組實(shí)現(xiàn)Dim a(1 to 10) As Integer, s!, Avg!, p%, i% 數(shù)組定義數(shù)組定義s = 0 求成績(jī)總和求成績(jī)總和For i = 1 To 10 a(

8、i)= InputBox(“輸入第輸入第 & i & 位學(xué)生的成績(jī)位學(xué)生的成績(jī)) s = s +a(i)next iAvg = s / 10 求平均成績(jī)求平均成績(jī)p=0For i = 1 To 10 統(tǒng)計(jì)高于平均分人數(shù)統(tǒng)計(jì)高于平均分人數(shù) If a(i)=avg Then p=p+1next iPrint “高于平均分高于平均分” & Avg “的學(xué)生共有的學(xué)生共有” & p “人人”結(jié)論:結(jié)論:l數(shù)組能始終保存輸入的數(shù)據(jù),一次輸入,多次使用。數(shù)組能始終保存輸入的數(shù)據(jù),一次輸入,多次使用。l使用數(shù)組,能在程序中引入循環(huán),簡(jiǎn)化程序編寫(xiě)。使用數(shù)組,能在程序中引入循環(huán),

9、簡(jiǎn)化程序編寫(xiě)。第4章 數(shù)組與自定義類型第第 7 頁(yè)頁(yè)4.1 4.1 數(shù)組數(shù)組1 1、數(shù)組的有關(guān)概念、數(shù)組的有關(guān)概念(1 1)數(shù)組:)數(shù)組:是一個(gè)由多個(gè)同類型變量組成的數(shù)據(jù)集合,簡(jiǎn)單的講就是是一個(gè)由多個(gè)同類型變量組成的數(shù)據(jù)集合,簡(jiǎn)單的講就是一組同類型的變量。一組同類型的變量。(2 2)數(shù)組名:)數(shù)組名:這組變量有統(tǒng)一的名稱,就是數(shù)組名。這組變量有統(tǒng)一的名稱,就是數(shù)組名。(3 3)數(shù)組元素:)數(shù)組元素:構(gòu)成數(shù)組的成員。每個(gè)數(shù)組元素和一個(gè)普通變量一樣構(gòu)成數(shù)組的成員。每個(gè)數(shù)組元素和一個(gè)普通變量一樣能存放一個(gè)數(shù)據(jù)。能存放一個(gè)數(shù)據(jù)。(4 4)下標(biāo):)下標(biāo):用來(lái)標(biāo)識(shí)數(shù)組中的每一個(gè)元素的序號(hào)。用來(lái)標(biāo)識(shí)數(shù)組中的

10、每一個(gè)元素的序號(hào)。 如,有一個(gè)數(shù)組如,有一個(gè)數(shù)組a a(n n),數(shù)組元素可分別表示為:),數(shù)組元素可分別表示為: a(1), a(2), a(3), a(4)a(1), a(2), a(3), a(4)第4章 數(shù)組與自定義類型第第 8 頁(yè)頁(yè)4.1 4.1 數(shù)組數(shù)組2 2、數(shù)組的特點(diǎn)、數(shù)組的特點(diǎn)(1 1)數(shù)組由若干個(gè)數(shù)組元素組成,數(shù)組元素的)數(shù)組由若干個(gè)數(shù)組元素組成,數(shù)組元素的數(shù)據(jù)類數(shù)據(jù)類型一致型一致。(2 2)數(shù)組元素是)數(shù)組元素是有次序有次序存放的,下標(biāo)代表它在數(shù)組中存放的,下標(biāo)代表它在數(shù)組中的位置。的位置。(3 3)數(shù)組中各元素之間有內(nèi)在聯(lián)系,在內(nèi)存中占)數(shù)組中各元素之間有內(nèi)在聯(lián)系,在內(nèi)

11、存中占連續(xù)連續(xù)的一段的一段存儲(chǔ)單元存儲(chǔ)單元。第4章 數(shù)組與自定義類型第第 9 頁(yè)頁(yè)3 3、數(shù)組的分類、數(shù)組的分類(1 1)按照定義時(shí)數(shù)組元素個(gè)數(shù)確定與否,數(shù)組可分為:)按照定義時(shí)數(shù)組元素個(gè)數(shù)確定與否,數(shù)組可分為:n靜態(tài)數(shù)組靜態(tài)數(shù)組:定義時(shí)數(shù)組元素的個(gè)數(shù)就已經(jīng)確定:定義時(shí)數(shù)組元素的個(gè)數(shù)就已經(jīng)確定(大小不可以調(diào)整)n動(dòng)態(tài)數(shù)組動(dòng)態(tài)數(shù)組:定義時(shí)數(shù)組元素的個(gè)數(shù)不確定,在程序:定義時(shí)數(shù)組元素的個(gè)數(shù)不確定,在程序運(yùn)行時(shí)根據(jù)需要才確定數(shù)組元素的多少運(yùn)行時(shí)根據(jù)需要才確定數(shù)組元素的多少(大小多少可以調(diào)整)(2 2)按照數(shù)組元素下標(biāo)的個(gè)數(shù),數(shù)組可分為:)按照數(shù)組元素下標(biāo)的個(gè)數(shù),數(shù)組可分為:n一維數(shù)組:數(shù)組元素有一個(gè)

12、下標(biāo)一維數(shù)組:數(shù)組元素有一個(gè)下標(biāo)n二維數(shù)組:數(shù)組元素有兩個(gè)下標(biāo)二維數(shù)組:數(shù)組元素有兩個(gè)下標(biāo)n多維數(shù)組:數(shù)組元素有多個(gè)下標(biāo)多維數(shù)組:數(shù)組元素有多個(gè)下標(biāo)第4章 數(shù)組與自定義類型第第 10 頁(yè)頁(yè)1.1.一維數(shù)組一維數(shù)組 (A(0) A(1) A(2) A(3) A(4)(A(0) A(1) A(2) A(3) A(4)一、按一、按下標(biāo)的個(gè)數(shù)下標(biāo)的個(gè)數(shù)分分2.2.二維數(shù)組二維數(shù)組A(0,0) A(0,1) A(0,2)A(1,0) A(1,1) A(1,2)4.1 .1 4.1 .1 數(shù)組的分類數(shù)組的分類3.3.多維數(shù)組多維數(shù)組Dim A(1,2) As IntegerDim A(4Dim A(4)A

13、s IntegerAs Integer第4章 數(shù)組與自定義類型第第 11 頁(yè)頁(yè)1 1、靜態(tài)數(shù)組、靜態(tài)數(shù)組1 1)一維數(shù)組)一維數(shù)組功能:功能:定義一個(gè)一維數(shù)組,并初始化所有數(shù)組元素。定義一個(gè)一維數(shù)組,并初始化所有數(shù)組元素。格式:格式:Dim Dim 數(shù)組名數(shù)組名(下界下界 ToTo 上界上界)As As 數(shù)據(jù)類型數(shù)據(jù)類型 作用:作用:定義定義“( (上界上界- -下界下界+1)+1)”個(gè)數(shù)組元素,這些元個(gè)數(shù)組元素,這些元素素 按照下標(biāo)由小到大的順序連續(xù)存儲(chǔ)在內(nèi)存中。按照下標(biāo)由小到大的順序連續(xù)存儲(chǔ)在內(nèi)存中。第4章 數(shù)組與自定義類型第第 12 頁(yè)頁(yè)說(shuō)明說(shuō)明 數(shù)組名的定義同變量,以字母開(kāi)頭,不能使用

14、數(shù)組名的定義同變量,以字母開(kāi)頭,不能使用VBVB中中的關(guān)鍵字,但盡可能有意義。例如:的關(guān)鍵字,但盡可能有意義。例如:Dim x(10) As Single Dim x(10) As Single 正確正確Dim Sub(20) As LongDim Sub(20) As Long錯(cuò)誤錯(cuò)誤Dim Math(1 To 8) As SingleDim Math(1 To 8) As Single正確正確 Dim 5X(20) As LongDim 5X(20) As Long錯(cuò)誤錯(cuò)誤格式:格式:Dim Dim 數(shù)組名數(shù)組名 (下界下界 To To 上界上界)As )As 數(shù)據(jù)類型數(shù)據(jù)類型 第4章 數(shù)

15、組與自定義類型第第 13 頁(yè)頁(yè)說(shuō)明:說(shuō)明: 靜態(tài)數(shù)組靜態(tài)數(shù)組的維界定義必須為常數(shù)或符號(hào)常量,或的維界定義必須為常數(shù)或符號(hào)常量,或是常量表達(dá)式,不能是變量或其表達(dá)式。例如:是常量表達(dá)式,不能是變量或其表達(dá)式。例如:Const k as integer=10 Const k as integer=10 Dim x(10) As Single Dim x(10) As Single 正確正確Dim a(k) as longDim a(k) as long 正確正確Dim B(5+3) as StringDim B(5+3) as String 正確正確而而 Dim x(n) As Single Di

16、m x(n) As Single 錯(cuò)誤錯(cuò)誤格式:格式:Dim Dim 數(shù)組名數(shù)組名 (下界下界 To To 上界上界)As )As第4章 數(shù)組與自定義類型第第 14 頁(yè)頁(yè) 維界的形式是:維界的形式是: 下界下界 To To 上界上界 1 1、當(dāng)、當(dāng) 下界下界 ToTo缺省時(shí),默認(rèn)值為缺省時(shí),默認(rèn)值為0 0 2 2、下界、下界上界上界 3 3、數(shù)組元素的個(gè)數(shù)是:、數(shù)組元素的個(gè)數(shù)是:上界下界上界下界1 1 4 4、維界說(shuō)明如果不是整數(shù),將按四舍五入處理。、維界說(shuō)明如果不是整數(shù),將按四舍五入處理。Dim A(1 To 9.8) As Single Dim A(1 To 9.8) As Single

17、定義了有定義了有1010個(gè)元素個(gè)元素的數(shù)組的數(shù)組 A(1)A(1)、A(2)A(2)、A(9)A(9)、A(10)A(10)Dim B(10) As String Dim B(10) As String 定義了有定義了有1111個(gè)元素的數(shù)組個(gè)元素的數(shù)組 B(0)B(0)、B(1) B(1) B(9)B(9)、B(10)B(10)Dim A(5 To 6+2) As Integer Dim A(5 To 6+2) As Integer 定義了有定義了有4 4個(gè)元素的數(shù)組個(gè)元素的數(shù)組格式:格式:Dim Dim 數(shù)組名數(shù)組名 (下界下界 To To 上界上界)As )As第4章 數(shù)組與自定義類型第第

18、 15 頁(yè)頁(yè) AsAs 用來(lái)說(shuō)明數(shù)組元素的類型,缺省為變體型(用來(lái)說(shuō)明數(shù)組元素的類型,缺省為變體型(VariantVariant)。)。例如:例如:Dim a(12) As Single Dim a(12) As Single 單精度型,下標(biāo)范圍為單精度型,下標(biāo)范圍為0 012.12.Dim x!(1 To 50 ) Dim x!(1 To 50 ) 單精度單精度, ,下標(biāo)范圍為下標(biāo)范圍為1 150.50.Dim y(1 To 10 ) Dim y(1 To 10 ) 變體型變體型, ,下標(biāo)范圍為下標(biāo)范圍為1 110.10.格式:格式:Dim Dim 數(shù)組名數(shù)組名 (下界下界 To To 上界

19、上界)As)As第4章 數(shù)組與自定義類型第第 16 頁(yè)頁(yè) 靜態(tài)數(shù)組必須靜態(tài)數(shù)組必須先聲明后使用先聲明后使用。聲明數(shù)組后,各數(shù)組元素的初值與聲明普通變量相同聲明數(shù)組后,各數(shù)組元素的初值與聲明普通變量相同 1 1、置數(shù)值型數(shù)組中的全部元素值為、置數(shù)值型數(shù)組中的全部元素值為0 0 2 2、置字符串?dāng)?shù)組和變體數(shù)組中的元素值為空串、置字符串?dāng)?shù)組和變體數(shù)組中的元素值為空串 3 3、布爾型數(shù)組元素值初始化為、布爾型數(shù)組元素值初始化為FalseFalse注注: :一維靜態(tài)數(shù)組包含數(shù)組元素的一維靜態(tài)數(shù)組包含數(shù)組元素的個(gè)數(shù)個(gè)數(shù)必須確定必須確定! !可以使用可以使用“Option Base 1Option Base

20、 1”來(lái)重新定義數(shù)的下界來(lái)重新定義數(shù)的下界 第4章 數(shù)組與自定義類型第第 17 頁(yè)頁(yè) 說(shuō)明:說(shuō)明: 和一維數(shù)組相同,維界由上界、下界組成和一維數(shù)組相同,維界由上界、下界組成格式:Dim 數(shù)組名(下界1 to 上界1,下界2 to 上界2) As 數(shù)據(jù)類型 1 1、靜態(tài)數(shù)組、靜態(tài)數(shù)組2 2)二維數(shù)組二維數(shù)組和一維數(shù)組相同,可以使用和一維數(shù)組相同,可以使用“Option Base 1Option Base 1”來(lái)重新定來(lái)重新定義數(shù)的下界義數(shù)的下界二維數(shù)組一般可以看成一個(gè)二維表、行列式、矩陣、或二維數(shù)組一般可以看成一個(gè)二維表、行列式、矩陣、或平面坐標(biāo),平面坐標(biāo),通常用第一維表示數(shù)組有多少行、第二維表

21、示數(shù)組有多通常用第一維表示數(shù)組有多少行、第二維表示數(shù)組有多少列。少列。 第4章 數(shù)組與自定義類型第第 18 頁(yè)頁(yè)靜態(tài)數(shù)組注意事項(xiàng)靜態(tài)數(shù)組注意事項(xiàng)(1 1)維說(shuō)明中下界和上界只能取直接常量或直接常量表達(dá)式,符)維說(shuō)明中下界和上界只能取直接常量或直接常量表達(dá)式,符號(hào)常量和符號(hào)常量表達(dá)式,不能為變量或包含變量的表達(dá)式。號(hào)常量和符號(hào)常量表達(dá)式,不能為變量或包含變量的表達(dá)式。(2 2)下界維說(shuō)明可以省略,默認(rèn)從)下界維說(shuō)明可以省略,默認(rèn)從0 0開(kāi)始開(kāi)始 Dim x(6) As String Dim x(6) As String * * 6 6(3 3)維說(shuō)明中使用的常量可以為小數(shù),系統(tǒng)自動(dòng)四舍五入。)維

22、說(shuō)明中使用的常量可以為小數(shù),系統(tǒng)自動(dòng)四舍五入。 Dim x(1 To 4.3 + 2) As IntegerDim x(1 To 4.3 + 2) As Integer定義數(shù)組x是有x(0)到x(6)連續(xù)的7個(gè)數(shù)組元素,每個(gè)元素可以存儲(chǔ)6個(gè)字符Dim n As Integern=10Dim a(1 To n) As Single Const n As Integer = 6 Dim x(1 To n) As Double Dim y(1 To n + 6)第4章 數(shù)組與自定義類型第第 19 頁(yè)頁(yè)靜態(tài)數(shù)組注意事項(xiàng)靜態(tài)數(shù)組注意事項(xiàng) (4 4)用)用“Option Base 1Option Base

23、 1”可設(shè)定數(shù)組元素下界為可設(shè)定數(shù)組元素下界為1 1,將下界,將下界默認(rèn)值從默認(rèn)值從0 0改為改為1 1。 (5 5)一維靜態(tài)數(shù)組在同一過(guò)程中只能聲明一次)一維靜態(tài)數(shù)組在同一過(guò)程中只能聲明一次 (6 6)聲明數(shù)組后,各數(shù)組元素的初值與聲明普通變量相同。)聲明數(shù)組后,各數(shù)組元素的初值與聲明普通變量相同。Private Sub Command1_Click()Dim a(1 To 6) As IntegerDim a(8) As SingleEnd Sub第4章 數(shù)組與自定義類型第第 20 頁(yè)頁(yè)P(yáng)ravate Sub Form_Click()Print A(2)End Sub(7 7)靜態(tài)數(shù)組必須

24、先聲明明,后使用)靜態(tài)數(shù)組必須先聲明明,后使用第4章 數(shù)組與自定義類型第第 21 頁(yè)頁(yè)7.2 7.2 數(shù)組元素的引用數(shù)組元素的引用數(shù)組元素可以通過(guò)數(shù)組名加下標(biāo)的方式引數(shù)組元素可以通過(guò)數(shù)組名加下標(biāo)的方式引用,他可以通過(guò)下標(biāo)變量進(jìn)行批量數(shù)據(jù)的用,他可以通過(guò)下標(biāo)變量進(jìn)行批量數(shù)據(jù)的計(jì)算,用法與一般變量相同計(jì)算,用法與一般變量相同例如:例如:a(1)=3.14259a(1)=3.14259 x(1,2)=100 x(1,2)=100下面的語(yǔ)句可以為多個(gè)數(shù)組元素賦值下面的語(yǔ)句可以為多個(gè)數(shù)組元素賦值dim a%(1 to 20)dim a%(1 to 20)For i=1 to 20For i=1 to 2

25、0a(a(i i)=2)=2* *i-1i-1next inext idim p%(10)dim p%(10)For j=0 to 10For j=0 to 10p(p(j j)=j)=jnext jnext j第4章 數(shù)組與自定義類型第第 22 頁(yè)頁(yè)例例4-1 4-1 用用InputBoxInputBox函數(shù)向數(shù)組函數(shù)向數(shù)組a a中輸入中輸入1010個(gè)個(gè)整數(shù),找出其中最大值、最小值以及他們對(duì)整數(shù),找出其中最大值、最小值以及他們對(duì)應(yīng)的數(shù)組元素的下標(biāo)應(yīng)的數(shù)組元素的下標(biāo)Private Sub Form_Click() Dim a%(1 To 10), i%, max%, min%, k%, p%

26、For i = 1 To 10 a(i) = Val(InputBox(a( & i & )=) Print a(i); Next i Print max = a(1): p = 1 min = a(1): k = 1第4章 數(shù)組與自定義類型第第 23 頁(yè)頁(yè) For i = 2 To 10 If a(i) max Then max = a(i): p = i End If If a(i) p Then Print a( & i & )=; a(i) Next iEnd Sub第4章 數(shù)組與自定義類型第第 25 頁(yè)頁(yè)例例4-3 4-3 二維數(shù)組二維數(shù)組用用RndR

27、nd函數(shù)隨機(jī)產(chǎn)生函數(shù)隨機(jī)產(chǎn)生3030個(gè)同學(xué)個(gè)同學(xué)4 4門(mén)課程的成門(mén)課程的成績(jī)放到一個(gè)二維數(shù)組中,計(jì)算并輸出每個(gè)績(jī)放到一個(gè)二維數(shù)組中,計(jì)算并輸出每個(gè)同學(xué)的平均成績(jī)同學(xué)的平均成績(jī)分析:分析:需要引進(jìn)一個(gè)至少有需要引進(jìn)一個(gè)至少有3030行,行,4 4列的二維數(shù)列的二維數(shù)組;用循環(huán)結(jié)構(gòu)給數(shù)組變量賦值、計(jì)算、組;用循環(huán)結(jié)構(gòu)給數(shù)組變量賦值、計(jì)算、輸出輸出第4章 數(shù)組與自定義類型第第 26 頁(yè)頁(yè)P(yáng)rivate Sub Form_Click() Dim s(30, 5) As Integer, i%, j% For i = 1 To 30 For j = 1 To 4 s(i, j) = Int(51 * R

28、nd) + 50 s(i, 5) = s(i, 5) + s(i, j) Next j s(i, 5) = s(i, 5) / 4 Next i 第4章 數(shù)組與自定義類型第第 27 頁(yè)頁(yè)P(yáng)rint 學(xué)號(hào)學(xué)號(hào), 數(shù)學(xué)數(shù)學(xué), 英語(yǔ)英語(yǔ), 物理物理, 化學(xué)化學(xué), 總評(píng)總評(píng) For i = 1 To 30 Print i, For j = 1 To 5 Print s(i, j), Next j Print Next iEnd Sub第4章 數(shù)組與自定義類型第第 28 頁(yè)頁(yè)例例4-44-4用用InputBoxInputBox函數(shù)給一個(gè)四行四列的矩陣輸入函數(shù)給一個(gè)四行四列的矩陣輸入數(shù)據(jù),然后交換矩陣中各

29、元素行列位置(矩?cái)?shù)據(jù),然后交換矩陣中各元素行列位置(矩陣的轉(zhuǎn)置)陣的轉(zhuǎn)置)a(1,1)a(1,2)a(1,3)a(1,4)a(2,1)a(2,2)a(2,3)a(2,4)a(3,1)a(3,2)a(3,3)a(3,4)a(4,1)a(4,2)a(4,3)a(4,4)第4章 數(shù)組與自定義類型第第 29 頁(yè)頁(yè)P(yáng)rivate Sub Form_Click() Dim s(4, 4) As Single, x As Single, i%, j% For j = 1 To 4 For i = 1 To 4 s(i, j) = InputBox(s( & i & , & j &am

30、p; )=) Next i Next j Print 交換前:交換前: For i = 1 To 4 For j = 1 To 4 Print s(i, j); Next j Print Next i第4章 數(shù)組與自定義類型第第 30 頁(yè)頁(yè) For i = 1 To 4 For j = 1 To 4 x = s(i, j): s(i, j) = s(j, i): s(j, i) = x Next j Next i Print 交換后:交換后: For i = 1 To 4 For j = 1 To 4 Print s(i, j); Next j Print Next iEnd Sub第4章 數(shù)

31、組與自定義類型第第 31 頁(yè)頁(yè)4.1 數(shù)組的概述數(shù)組的概述靜態(tài)數(shù)組不能解決的問(wèn)題靜態(tài)數(shù)組不能解決的問(wèn)題n有時(shí)候在寫(xiě)程序代碼時(shí)并不知道要處理多少個(gè)數(shù);有時(shí)候在寫(xiě)程序代碼時(shí)并不知道要處理多少個(gè)數(shù);n定義靜態(tài)數(shù)組時(shí)又必須要確定數(shù)組元素個(gè)數(shù);定義靜態(tài)數(shù)組時(shí)又必須要確定數(shù)組元素個(gè)數(shù);n我們可以在定義時(shí)將元素定義多一點(diǎn);我們可以在定義時(shí)將元素定義多一點(diǎn);n但又會(huì)浪費(fèi)寶貴的內(nèi)存空間,而且,多少才算多??!但又會(huì)浪費(fèi)寶貴的內(nèi)存空間,而且,多少才算多??!n能不能在寫(xiě)代碼時(shí)先定義一個(gè)空數(shù)組,在用時(shí)根據(jù)實(shí)能不能在寫(xiě)代碼時(shí)先定義一個(gè)空數(shù)組,在用時(shí)根據(jù)實(shí) 際需要再確定大小呢?際需要再確定大小呢?n有!有!VB允許動(dòng)態(tài)定義

32、數(shù)組!允許動(dòng)態(tài)定義數(shù)組!第4章 數(shù)組與自定義類型第第 32 頁(yè)頁(yè)4.1 數(shù)組的概述數(shù)組的概述2 2、動(dòng)態(tài)數(shù)組、動(dòng)態(tài)數(shù)組(1)聲明時(shí)不說(shuō)明數(shù)組元素個(gè)數(shù)的數(shù)組稱為動(dòng)態(tài)數(shù)組;)聲明時(shí)不說(shuō)明數(shù)組元素個(gè)數(shù)的數(shù)組稱為動(dòng)態(tài)數(shù)組;(2)通常聲明步驟有兩步;)通常聲明步驟有兩步;第一步:用第一步:用Dim聲明一個(gè)空數(shù)組;聲明一個(gè)空數(shù)組;第二步:在確定數(shù)組大小后再用第二步:在確定數(shù)組大小后再用ReDim確定大小確定大?。?)也可以直接省略第一步而直用)也可以直接省略第一步而直用ReDim定義;定義;Private Sub Command1_Click() Dim a%(), b!(10), n% n = Inpu

33、tBox(請(qǐng)輸入要處理的數(shù)據(jù)個(gè)數(shù)) ReDim a(n) End Sub第4章 數(shù)組與自定義類型第第 33 頁(yè)頁(yè)7.7. 動(dòng)態(tài)數(shù)組動(dòng)態(tài)數(shù)組(1)聲明時(shí)不說(shuō)明數(shù)組元素個(gè)數(shù)的數(shù)組稱為動(dòng)態(tài)數(shù)組;)聲明時(shí)不說(shuō)明數(shù)組元素個(gè)數(shù)的數(shù)組稱為動(dòng)態(tài)數(shù)組;(2)通常聲明步驟有兩步;)通常聲明步驟有兩步;第一步:用第一步:用Dim聲明一個(gè)空數(shù)組;聲明一個(gè)空數(shù)組;第二步:在確定數(shù)組大小后再用第二步:在確定數(shù)組大小后再用ReDim確定大小確定大?。?)也可以直接省略第一步而直用)也可以直接省略第一步而直用ReDim定義;定義;Private Sub Command1_Click() Dim n% n = InputBox

34、(請(qǐng)輸入要處理的數(shù)據(jù)個(gè)數(shù)) ReDim a(n) End Sub第4章 數(shù)組與自定義類型第第 34 頁(yè)頁(yè)例4-5 用Rnd產(chǎn)生n個(gè)0到100之間的隨機(jī)整數(shù)放到a數(shù)組中,并計(jì)算平均值,將大于平均值的數(shù)和下標(biāo)輸出。Option Base 1Private Sub Form_Click() Dim a() As Integer, i%, p! n = InputBox(請(qǐng)確定數(shù)組的大小) ReDim a(n) For i = 1 To n a(i) = Int(Rnd * 101) p = p + a(i) Next i p = p / n Print 平均值=; p For i = 1 To n

35、If a(i) p Then Print a( & i & )=; a(i) Next iEnd Sub第4章 數(shù)組與自定義類型第第 35 頁(yè)頁(yè)7.7. 動(dòng)態(tài)數(shù)組動(dòng)態(tài)數(shù)組(4)利用)利用Preserve關(guān)鍵字可以在擴(kuò)充或壓縮數(shù)組大小關(guān)鍵字可以在擴(kuò)充或壓縮數(shù)組大小時(shí)保留原來(lái)的值。時(shí)保留原來(lái)的值。 Dim n% n = 6 ReDim a%(1 To n) For i = 1 To n a(i) = i Next i n = 8 ReDim Preserve a%(1 To n) For i = 1 To n Print a(i); Next i第4章 數(shù)組與自定義類型第第 36

36、頁(yè)頁(yè)7.7. 動(dòng)態(tài)數(shù)組動(dòng)態(tài)數(shù)組(4)利用)利用Preserve關(guān)鍵字可以在擴(kuò)充或壓縮數(shù)組大小關(guān)鍵字可以在擴(kuò)充或壓縮數(shù)組大小時(shí)保留原來(lái)的值。時(shí)保留原來(lái)的值。 Dim n% n = 6 ReDim a%(1 To n) For i = 1 To n a(i) = i Next i n = 8 ReDim Preserve a%(1 To n) For i = 1 To n Print a(i); Next in0第4章 數(shù)組與自定義類型第第 37 頁(yè)頁(yè)7.7. 動(dòng)態(tài)數(shù)組動(dòng)態(tài)數(shù)組(4)利用)利用Preserve關(guān)鍵字可以在擴(kuò)充或壓縮數(shù)組大小關(guān)鍵字可以在擴(kuò)充或壓縮數(shù)組大小時(shí)保留原來(lái)的值。時(shí)保留原來(lái)的值

37、。 Dim n% n = 6 ReDim a%(1 To n) For i = 1 To n a(i) = i Next i n = 8 ReDim Preserve a%(1 To n) For i = 1 To n Print a(i); Next in6第4章 數(shù)組與自定義類型第第 38 頁(yè)頁(yè)7.7. 動(dòng)態(tài)數(shù)組動(dòng)態(tài)數(shù)組(4)利用)利用Preserve關(guān)鍵字可以在擴(kuò)充或壓縮數(shù)組大小關(guān)鍵字可以在擴(kuò)充或壓縮數(shù)組大小時(shí)保留原來(lái)的值。時(shí)保留原來(lái)的值。 Dim n% n = 6 ReDim a%(1 To n) For i = 1 To n a(i) = i Next i n = 8 ReDim a

38、%(1 To n) For i = 1 To n Print a(i); Next in6a000000第4章 數(shù)組與自定義類型第第 39 頁(yè)頁(yè)7.7. 動(dòng)態(tài)數(shù)組動(dòng)態(tài)數(shù)組(4)利用)利用Preserve關(guān)鍵字可以在擴(kuò)充或壓縮數(shù)組大小關(guān)鍵字可以在擴(kuò)充或壓縮數(shù)組大小時(shí)保留原來(lái)的值。時(shí)保留原來(lái)的值。 Dim n% n = 6 ReDim a%(1 To n) For i = 1 To n a(i) = i Next i n = 8 ReDim a%(1 To n) For i = 1 To n Print a(i); Next in6a123456第4章 數(shù)組與自定義類型第第 40 頁(yè)頁(yè)7.7. 動(dòng)

39、態(tài)數(shù)組動(dòng)態(tài)數(shù)組(4)利用)利用Preserve關(guān)鍵字可以在擴(kuò)充或壓縮數(shù)組大小關(guān)鍵字可以在擴(kuò)充或壓縮數(shù)組大小時(shí)保留原來(lái)的值。時(shí)保留原來(lái)的值。 Dim n% n = 6 ReDim a%(1 To n) For i = 1 To n a(i) = i Next i n = 8 ReDim a%(1 To n) For i = 1 To n Print a(i); Next in8a123456第4章 數(shù)組與自定義類型第第 41 頁(yè)頁(yè)7.7. 動(dòng)態(tài)數(shù)組動(dòng)態(tài)數(shù)組(4)利用)利用Preserve關(guān)鍵字可以在擴(kuò)充或壓縮數(shù)組大小關(guān)鍵字可以在擴(kuò)充或壓縮數(shù)組大小時(shí)保留原來(lái)的值。時(shí)保留原來(lái)的值。 Dim n% n

40、 = 6 ReDim a%(1 To n) For i = 1 To n a(i) = i Next i n = 8 ReDim a%(1 To n) For i = 1 To n Print a(i); Next in8a00000000第4章 數(shù)組與自定義類型第第 42 頁(yè)頁(yè)7.7. 動(dòng)態(tài)數(shù)組動(dòng)態(tài)數(shù)組(4)利用)利用Preserve關(guān)鍵字可以在擴(kuò)充或壓縮數(shù)組大小關(guān)鍵字可以在擴(kuò)充或壓縮數(shù)組大小時(shí)保留原來(lái)的值。時(shí)保留原來(lái)的值。 Dim n% n = 6 ReDim a%(1 To n) For i = 1 To n a(i) = i Next i n = 8 ReDim a%(1 To n)

41、For i = 1 To n Print a(i) Next i第4章 數(shù)組與自定義類型第第 43 頁(yè)頁(yè)7.7. 動(dòng)態(tài)數(shù)組動(dòng)態(tài)數(shù)組(4)利用)利用Preserve關(guān)鍵字可以在擴(kuò)充或壓縮數(shù)組大小關(guān)鍵字可以在擴(kuò)充或壓縮數(shù)組大小時(shí)保留原來(lái)的值。時(shí)保留原來(lái)的值。 Dim n% n = 6 ReDim a%(1 To n) For i = 1 To n a(i) = i Next i n = 8 ReDim Preserve a%(1 To n) For i = 1 To n Print a(i); Next in8a123456第4章 數(shù)組與自定義類型第第 44 頁(yè)頁(yè)7.7. 動(dòng)態(tài)數(shù)組動(dòng)態(tài)數(shù)組(4)利

42、用)利用Preserve關(guān)鍵字可以在擴(kuò)充或壓縮數(shù)組大小關(guān)鍵字可以在擴(kuò)充或壓縮數(shù)組大小時(shí)保留原來(lái)的值。時(shí)保留原來(lái)的值。 Dim n% n = 6 ReDim a%(1 To n) For i = 1 To n a(i) = i Next i n = 8 ReDim Preserve a%(1 To n) For i = 1 To n Print a(i); Next in8a12345600第4章 數(shù)組與自定義類型第第 45 頁(yè)頁(yè)7.7. 動(dòng)態(tài)數(shù)組動(dòng)態(tài)數(shù)組(4)利用)利用Preserve關(guān)鍵字可以在擴(kuò)充或壓縮數(shù)組大小關(guān)鍵字可以在擴(kuò)充或壓縮數(shù)組大小時(shí)保留原來(lái)的值。時(shí)保留原來(lái)的值。 Dim n% n

43、 = 6 ReDim a%(1 To n) For i = 1 To n a(i) = i Next i n = 8 ReDim Preserve a%(1 To n) For i = 1 To n Print a(i) Next i第4章 數(shù)組與自定義類型第第 46 頁(yè)頁(yè)8. 獲得數(shù)組下標(biāo)上下界的函數(shù)獲得數(shù)組下標(biāo)上下界的函數(shù)(1)UBound(數(shù)組名數(shù)組名),可以獲得指定一維數(shù)組的下標(biāo),可以獲得指定一維數(shù)組的下標(biāo)上界;上界;(2)LBound(數(shù)組名數(shù)組名),可以獲得指定一維數(shù)組的下標(biāo),可以獲得指定一維數(shù)組的下標(biāo)下界;下界;(3)UBound(數(shù)組名數(shù)組名,1),可以獲得多維數(shù)組第,可以獲得

44、多維數(shù)組第1維的下維的下標(biāo)上界;標(biāo)上界;(4)Lbound(數(shù)組名數(shù)組名,N),可以獲得多維數(shù)組第,可以獲得多維數(shù)組第N維的維的下標(biāo)下界。下標(biāo)下界。第4章 數(shù)組與自定義類型第第 47 頁(yè)頁(yè)例4-6 定義一個(gè)動(dòng)態(tài)數(shù)組來(lái)存放學(xué)生名單,并可以在其中隨時(shí)添加新的學(xué)生姓名。Dim a() As StringPrivate Sub Form_Load() Dim n As Integer n = 2 ReDim a(n) a(0) = 張三張三 a(1) = 李四李四 a(2) = 王五王五End Sub第4章 數(shù)組與自定義類型第第 48 頁(yè)頁(yè)P(yáng)rivate Sub Form_Click() m = UB

45、ound(a) ReDim Preserve a(m + 1) a(m + 1) = InputBox(請(qǐng)輸入姓名請(qǐng)輸入姓名) For i = LBound(a) To UBound(a) Print a(i) Next iEnd Sub第4章 數(shù)組與自定義類型第第 49 頁(yè)頁(yè)9. 數(shù)組元素的遍歷數(shù)組元素的遍歷 對(duì)一個(gè)數(shù)組中所有數(shù)組元素的執(zhí)行同一個(gè)操作,稱之對(duì)一個(gè)數(shù)組中所有數(shù)組元素的執(zhí)行同一個(gè)操作,稱之為數(shù)組元素的遍歷,這是對(duì)數(shù)組元素最常見(jiàn)的操作,一般為數(shù)組元素的遍歷,這是對(duì)數(shù)組元素最常見(jiàn)的操作,一般要通過(guò)循環(huán)完成,一維用單循環(huán):要通過(guò)循環(huán)完成,一維用單循環(huán): 一維數(shù)組賦值 For i = L

46、Bound(a) To UBound(a) a(i) = Int(Rnd() * 100) Next i 一維數(shù)組輸出 For i = LBound(a) To UBound(a) Print a(i) Next i第4章 數(shù)組與自定義類型第第 50 頁(yè)頁(yè)9. 數(shù)組元素的遍歷數(shù)組元素的遍歷 對(duì)一個(gè)數(shù)組中所有數(shù)組元素的執(zhí)行同一個(gè)操作,稱之對(duì)一個(gè)數(shù)組中所有數(shù)組元素的執(zhí)行同一個(gè)操作,稱之為數(shù)組元素的遍歷,這是對(duì)數(shù)組元素最常見(jiàn)的操作,一般為數(shù)組元素的遍歷,這是對(duì)數(shù)組元素最常見(jiàn)的操作,一般要通過(guò)循環(huán)完成,二維用雙循環(huán):要通過(guò)循環(huán)完成,二維用雙循環(huán):二維數(shù)組賦值 Dim a%(3, 4), i%, j%

47、For i = LBound(a, 1) To UBound(a, 1) For j = LBound(a, 2) To UBound(a, 2) a(i, j) = Int(Rnd() * 100) Next j Next i第4章 數(shù)組與自定義類型第第 51 頁(yè)頁(yè)10. 用數(shù)組解決問(wèn)題的步驟用數(shù)組解決問(wèn)題的步驟(1) 根據(jù)要求聲明數(shù)組;根據(jù)要求聲明數(shù)組;(2) 為各數(shù)組元素賦值,一般通過(guò)遍歷完成;為各數(shù)組元素賦值,一般通過(guò)遍歷完成;(3) 處理各數(shù)組元素中的數(shù)據(jù);一般通過(guò)遍歷完成處理各數(shù)組元素中的數(shù)據(jù);一般通過(guò)遍歷完成(4) 輸出處理結(jié)果輸出處理結(jié)果第4章 數(shù)組與自定義類型第第 52 頁(yè)頁(yè)

48、4.2 數(shù)組元素的賦值方法數(shù)組元素的賦值方法1. 用循環(huán)逐一為數(shù)組元素賦有用循環(huán)逐一為數(shù)組元素賦有規(guī)律規(guī)律的數(shù)據(jù)的數(shù)據(jù) 示例:聲明一個(gè)一維數(shù)組,給下標(biāo)為奇數(shù)的元素賦示例:聲明一個(gè)一維數(shù)組,給下標(biāo)為奇數(shù)的元素賦值為值為0,下標(biāo)為偶數(shù)的元素賦值為,下標(biāo)為偶數(shù)的元素賦值為1。Private Sub Command1_Click() Dim a%(1 To 10), i% For i = 1 To 10 a(i) = IIf(i / 2 = i 2, 1, 0) Next iEnd Sub第4章 數(shù)組與自定義類型第第 53 頁(yè)頁(yè)1、用循環(huán)逐一為數(shù)組元素賦有規(guī)律的數(shù)據(jù)、用循環(huán)逐一為數(shù)組元素賦有規(guī)律的數(shù)據(jù)

49、例例4-7 聲明一個(gè)二維數(shù)組,給兩條對(duì)角線元素賦值為聲明一個(gè)二維數(shù)組,給兩條對(duì)角線元素賦值為1,其它元素賦值為,其它元素賦值為0。Private Sub Command1_Click() Dim a%(1 To 10, 1 To 10), i%, j% For i = 1 To 10 For j = 1 To 10 If i = j Or i + j = 11 Then a(i, j) = 1 Else a(i, j) = 0 End If Next j Next iEnd Sub優(yōu)點(diǎn):快速缺點(diǎn):數(shù)據(jù)必須有規(guī)律第4章 數(shù)組與自定義類型第第 54 頁(yè)頁(yè)2. 用用Array函數(shù)一次為所有元素賦值函

50、數(shù)一次為所有元素賦值 (1)只能給)只能給一維一維動(dòng)態(tài)動(dòng)態(tài)變體類型變體類型數(shù)組各元素賦值;數(shù)組各元素賦值; (2)一次給全部數(shù)組元素賦值,快速高效;)一次給全部數(shù)組元素賦值,快速高效; (3)如果數(shù)組尚未聲明,數(shù)組元素的個(gè)數(shù)由列表中)如果數(shù)組尚未聲明,數(shù)組元素的個(gè)數(shù)由列表中的數(shù)據(jù)個(gè)數(shù)決定。的數(shù)據(jù)個(gè)數(shù)決定。格式格式 :數(shù)組名數(shù)組名=Array(數(shù)組元素值列表)(數(shù)組元素值列表)例例7-8 為二維數(shù)組數(shù)組賦初值為二維數(shù)組數(shù)組賦初值第4章 數(shù)組與自定義類型第第 55 頁(yè)頁(yè)P(yáng)rivate Sub Form_Click() Dim x(), a%(1 To 3, 1 To 3), i%, j% x =

51、Array(1, 2, 3, 4, 5, 6, 7, 8, 9) For i = LBound(x) To UBound(x) a(1 + i 3, 1 + i Mod 3) = x(i) Next i For i = 1 To 3 For j = 1 To 3 Print a(i, j); Next j Print Next iEnd Sub第4章 數(shù)組與自定義類型第第 56 頁(yè)頁(yè)3. 用用Inputbox為元素逐一賦值為元素逐一賦值 (1)與普通變量賦值相同,可以在程序運(yùn)行時(shí)再輸入)與普通變量賦值相同,可以在程序運(yùn)行時(shí)再輸入要處理的數(shù)據(jù),增強(qiáng)了程序的靈活性;要處理的數(shù)據(jù),增強(qiáng)了程序的靈活性

52、; (2)每為一個(gè)元素賦值時(shí)都要暫停程序運(yùn)行,效率低;)每為一個(gè)元素賦值時(shí)都要暫停程序運(yùn)行,效率低; (3)輸入的數(shù)據(jù)一旦有錯(cuò),修改只能重頭再來(lái)。)輸入的數(shù)據(jù)一旦有錯(cuò),修改只能重頭再來(lái)。第4章 數(shù)組與自定義類型第第 57 頁(yè)頁(yè)4. 用用Split函數(shù)為數(shù)組各元素一次性賦值函數(shù)為數(shù)組各元素一次性賦值數(shù)組名數(shù)組名=Split(字符串表達(dá)式字符串表達(dá)式,分隔符分隔符) (1)只能為)只能為字符型數(shù)組字符型數(shù)組賦值;賦值; (2)數(shù)據(jù)之間要有明確的、統(tǒng)一的分隔符;)數(shù)據(jù)之間要有明確的、統(tǒng)一的分隔符; 例:例:Nam=Split(“王強(qiáng),李軍,劉平,王晶王強(qiáng),李軍,劉平,王晶”,“,”)Score=Sp

53、lit(Text1.text,”)說(shuō)明:字符串表達(dá)式可以是任何字符串;分隔符可以是各說(shuō)明:字符串表達(dá)式可以是任何字符串;分隔符可以是各種字符,用以分隔數(shù)據(jù)種字符,用以分隔數(shù)據(jù)第4章 數(shù)組與自定義類型第第 58 頁(yè)頁(yè)例例4-9 用文本框輸入一組英文單詞,統(tǒng)計(jì)單詞個(gè)數(shù),找用文本框輸入一組英文單詞,統(tǒng)計(jì)單詞個(gè)數(shù),找出排在最前面和最后面的單詞。出排在最前面和最后面的單詞。Option Base 1Private Sub Command1_Click() Dim a() As String, i%, n%, F$, E$ a = Split(Text1.Text, ) n = UBound(a) F =

54、 a(1): E = a(1) For i = 2 To n If a(i) E Then E = a(i) Next i Label2.Caption = F Label4.Caption = E Label6.Caption = nEnd SubSplit函數(shù)賦值的數(shù)組最小下標(biāo)函數(shù)賦值的數(shù)組最小下標(biāo)與與Option Base n 無(wú)關(guān),數(shù)組無(wú)關(guān),數(shù)組元素下標(biāo)總是從零開(kāi)始元素下標(biāo)總是從零開(kāi)始第4章 數(shù)組與自定義類型第第 59 頁(yè)頁(yè)4.3 輸出數(shù)組元素的方法輸出數(shù)組元素的方法1. 一維數(shù)組一維數(shù)組 一般通過(guò)單層循環(huán)將各數(shù)組元素輸出在一行或一一般通過(guò)單層循環(huán)將各數(shù)組元素輸出在一行或一列,如果數(shù)據(jù)

55、量大,可以使用分行控制輸出在一屏中。列,如果數(shù)據(jù)量大,可以使用分行控制輸出在一屏中。2. 二維數(shù)組二維數(shù)組 一般通過(guò)雙層循環(huán)將各行列元素按行列輸出,代碼一般通過(guò)雙層循環(huán)將各行列元素按行列輸出,代碼如下:如下: For i = LBound(a, 1) To UBound(a, 1) 行循環(huán) For j = LBound(a, 2) To UBound(a, 2) 列循環(huán) Print a(i, j); 由行號(hào)和列號(hào)確定輸出的元素 Next j Print 一行輸出結(jié)束后換行 Next i第4章 數(shù)組與自定義類型第第 60 頁(yè)頁(yè)例例4-10:假設(shè)有一個(gè)數(shù)組,內(nèi)有:假設(shè)有一個(gè)數(shù)組,內(nèi)有10個(gè)元素,按

56、照由小個(gè)元素,按照由小到大順序?qū)⑺麄冞M(jìn)行排列。(用到大順序?qū)⑺麄冞M(jìn)行排列。(用Rnd產(chǎn)生這十個(gè)元素)產(chǎn)生這十個(gè)元素)第一種方法:比較交換法第一種方法:比較交換法Private Sub Form_Click() Dim a(1 To 10) As Integer, i%, j%, t% Print 排序前:排序前: For i = 1 To 10 a(i) = Int(Rnd * 51) + 50 Print a(i); Next i Print7 6 8 10 20 2 3 19 5 第4章 數(shù)組與自定義類型第第 61 頁(yè)頁(yè)For i = 1 To 9 For j = i + 1 To 10

57、If a(i) a(j) Then t = a(i): a(i) = a(j): a(j) = t End If Next jNext i Print 排序后:排序后: For i = 1 To 10 Print a(i); Next iEnd Sub缺點(diǎn):交換次數(shù)太多,效率低!缺點(diǎn):交換次數(shù)太多,效率低!第4章 數(shù)組與自定義類型第第 62 頁(yè)頁(yè)第二種方法:選擇排序法第二種方法:選擇排序法在整個(gè)過(guò)程中只記錄比較結(jié)果,并不立即交換數(shù)據(jù),當(dāng)在整個(gè)過(guò)程中只記錄比較結(jié)果,并不立即交換數(shù)據(jù),當(dāng)一輪比較結(jié)束后再進(jìn)行交換。一輪比較結(jié)束后再進(jìn)行交換。 For i = 1 To 9 p = i For j =

58、i + 1 To 10 If a(p) a(j) Then p = j Next j If p i Then t = a(i): a(i) = a(p): a(p) = t End If Next i第4章 數(shù)組與自定義類型第第 63 頁(yè)頁(yè)例例4-11:給定一組數(shù):給定一組數(shù)15,8,4,13,6,10,17,1,從鍵盤(pán)輸入一個(gè)數(shù),用順序查找法找出該數(shù)在數(shù)組總的位從鍵盤(pán)輸入一個(gè)數(shù),用順序查找法找出該數(shù)在數(shù)組總的位置置Option Base 1Dim a(), m%, n%, i%Private Sub Form_Load() Show a = Array(15, 8, 4, 13, 6, 10

59、, 17, 1) m = LBound(a) n = UBound(a) Print 數(shù)組元素如下:數(shù)組元素如下: For i = m To n Print a(i) Next i PrintEnd SubShow是窗體的一個(gè)方法,是窗體的一個(gè)方法,省略的話在窗體的省略的話在窗體的Load事事件中要用件中要用print方法輸出的方法輸出的內(nèi)容將看不到!內(nèi)容將看不到!第4章 數(shù)組與自定義類型第第 64 頁(yè)頁(yè)P(yáng)rivate Sub Form_Click() Dim x%, p As Boolean x = InputBox(請(qǐng)輸入要查找的數(shù)!請(qǐng)輸入要查找的數(shù)!) p = False For i =

60、 m To n If a(i) = x Then p = True: Exit For Next i If p = True Then Print 在數(shù)組中的第在數(shù)組中的第 & i & 位找到了該數(shù)!位找到了該數(shù)! Else Print 沒(méi)有在數(shù)組中找到這個(gè)數(shù)!沒(méi)有在數(shù)組中找到這個(gè)數(shù)! End IfEnd Sub第4章 數(shù)組與自定義類型第第 65 頁(yè)頁(yè)例例4-12 將由鍵盤(pán)輸入的一個(gè)數(shù)據(jù)插入到一個(gè)排好序的將由鍵盤(pán)輸入的一個(gè)數(shù)據(jù)插入到一個(gè)排好序的數(shù)列中,使其仍然保持有序。數(shù)列中,使其仍然保持有序。Dim a()Private Sub Form_Load() a = Array(1, 3, 5, 7, 9, 10, 12, 14, 16, 18) Show Print 初始數(shù)據(jù):初始數(shù)據(jù): For i = 0 To UBound(a) Print a(i); Next i PrintEnd Sub第4章 數(shù)組與自定義類型第第 66 頁(yè)頁(yè)P(yáng)rivate Sub Fo

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論