利用數(shù)組可以有效地存儲(chǔ)和處理成批數(shù)據(jù)本章主要內(nèi)容數(shù)組_第1頁(yè)
利用數(shù)組可以有效地存儲(chǔ)和處理成批數(shù)據(jù)本章主要內(nèi)容數(shù)組_第2頁(yè)
利用數(shù)組可以有效地存儲(chǔ)和處理成批數(shù)據(jù)本章主要內(nèi)容數(shù)組_第3頁(yè)
利用數(shù)組可以有效地存儲(chǔ)和處理成批數(shù)據(jù)本章主要內(nèi)容數(shù)組_第4頁(yè)
利用數(shù)組可以有效地存儲(chǔ)和處理成批數(shù)據(jù)本章主要內(nèi)容數(shù)組_第5頁(yè)
已閱讀5頁(yè),還剩52頁(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)介

1、 利用數(shù)組可以有效地存儲(chǔ)和處理成批數(shù)據(jù)利用數(shù)組可以有效地存儲(chǔ)和處理成批數(shù)據(jù) 本章主要內(nèi)容 數(shù)組的概念數(shù)組的概念 數(shù)組的聲明和應(yīng)用數(shù)組的聲明和應(yīng)用 動(dòng)態(tài)數(shù)組動(dòng)態(tài)數(shù)組 For Each.NextFor Each.Next循環(huán)語(yǔ)句循環(huán)語(yǔ)句 控件數(shù)組控件數(shù)組 程序舉例程序舉例 第第6 6章章 數(shù)數(shù) 組組 6.1.1 數(shù)組與數(shù)組元素?cái)?shù)組與數(shù)組元素 簡(jiǎn)單變量用一個(gè)變量名標(biāo)識(shí),不同的變量使用不同的簡(jiǎn)單變量用一個(gè)變量名標(biāo)識(shí),不同的變量使用不同的變量名表示。處理成批的數(shù)據(jù)時(shí),必須使用數(shù)組來(lái)處理表變量名表示。處理成批的數(shù)據(jù)時(shí),必須使用數(shù)組來(lái)處理表示示100個(gè)學(xué)生的成績(jī),采用簡(jiǎn)單變量來(lái)表示:個(gè)學(xué)生的成績(jī),采用簡(jiǎn)單變

2、量來(lái)表示: s1,s2,s3, s99,s100 采用數(shù)組來(lái)表示:采用數(shù)組來(lái)表示:t(0), t(1), t(2), t(98), t(99) t(k) (k=0,1,2,99)為數(shù)組元素為數(shù)組元素(或稱(chēng)或稱(chēng)下標(biāo)變量下標(biāo)變量),它表,它表示第示第k個(gè)學(xué)生的成績(jī)個(gè)學(xué)生的成績(jī), k稱(chēng)為下標(biāo)變量的稱(chēng)為下標(biāo)變量的下標(biāo)下標(biāo) 數(shù)組的一個(gè)主要特點(diǎn)是通過(guò)下標(biāo)數(shù)組的一個(gè)主要特點(diǎn)是通過(guò)下標(biāo)(相當(dāng)于索引相當(dāng)于索引)來(lái)引用來(lái)引用數(shù)組元素?cái)?shù)組元素 6.1 數(shù)組的概念數(shù)組的概念 例如計(jì)算這例如計(jì)算這100個(gè)學(xué)生成績(jī)的平均分,可用:個(gè)學(xué)生成績(jī)的平均分,可用: S S0 0 For k=0 To 99For k=0 To 9

3、9 S = S + t(k) S = S + t(k) 累加分?jǐn)?shù)累加分?jǐn)?shù) Next kNext k Aver=S/100 Aver=S/100 求平均分求平均分 數(shù)組是一組按一定順序排列的數(shù)據(jù)的集合數(shù)組是一組按一定順序排列的數(shù)據(jù)的集合 例如,學(xué)生成績(jī)例如,學(xué)生成績(jī)t(0), t(1), t(99) 是一個(gè)數(shù)組是一個(gè)數(shù)組 三元一次方程組的系數(shù)矩陣三元一次方程組的系數(shù)矩陣 a11 a12 a13 A a21 a22 a23 a31 a31 a33 也是一個(gè)數(shù)組也是一個(gè)數(shù)組 數(shù)組名數(shù)組名(不能與簡(jiǎn)單變量同名不能與簡(jiǎn)單變量同名);數(shù)組類(lèi)型;數(shù)組類(lèi)型 又稱(chēng)有序的變量又稱(chēng)有序的變量下標(biāo)變量下標(biāo)變量 默認(rèn)情

4、況下,下標(biāo)從默認(rèn)情況下,下標(biāo)從0開(kāi)始開(kāi)始, option base n 必須在定義數(shù)組前使用。必須在定義數(shù)組前使用。 例如,由一行共例如,由一行共5個(gè)元素組成的數(shù)組個(gè)元素組成的數(shù)組x,它的,它的5個(gè)下標(biāo)變量個(gè)下標(biāo)變量為:為: x(0) x(1) x(2) x(3) x(4) 由三行四列元素組成的數(shù)組由三行四列元素組成的數(shù)組y,它的,它的12個(gè)下標(biāo)變量可表個(gè)下標(biāo)變量可表示為:示為: y(0,0) y(0,1) y(0,2) y(0,3) y(1,0) y(1,1) y(1,2) y(1,3) y(2,0) y(2,1) y(2,2) y(2,3) 下標(biāo)變量下標(biāo)變量與與簡(jiǎn)單變量簡(jiǎn)單變量具有基本相同

5、的性質(zhì)和作用具有基本相同的性質(zhì)和作用 數(shù)組元素?cái)?shù)組元素 下標(biāo)用來(lái)標(biāo)明該下標(biāo)變量在數(shù)組中的位置下標(biāo)用來(lái)標(biāo)明該下標(biāo)變量在數(shù)組中的位置 下標(biāo)可以是常數(shù)值,也可以是變量下標(biāo)可以是常數(shù)值,也可以是變量(包括下標(biāo)變包括下標(biāo)變量量)或數(shù)值表達(dá)式或數(shù)值表達(dá)式 例如:例如: 若若x(2)=10, k=2,則,則y(x(2)就是就是y(10), y(x(2)+k)就是就是y(12) 只要有規(guī)則地改變下標(biāo)值,就可以很方便地使下標(biāo)變量只要有規(guī)則地改變下標(biāo)值,就可以很方便地使下標(biāo)變量(如如a(i)成為所需要的具體下標(biāo)變量成為所需要的具體下標(biāo)變量 數(shù)組的維數(shù)數(shù)組的維數(shù) 6.1.2 下標(biāo)和數(shù)組的維數(shù)下標(biāo)和數(shù)組的維數(shù) 6.2

6、.1 數(shù)組聲明語(yǔ)句數(shù)組聲明語(yǔ)句 使用數(shù)組之前,一般需要定義數(shù)組,以便讓系統(tǒng)分配相應(yīng)使用數(shù)組之前,一般需要定義數(shù)組,以便讓系統(tǒng)分配相應(yīng)的存儲(chǔ)單元。格式為:的存儲(chǔ)單元。格式為: Dim Dim 數(shù)組名數(shù)組名(下界下界1 to1 to上界上界1,1,下界下界2 to2 to上界上界2)As 2)As 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型 功能:指定數(shù)組的維數(shù)、各維的上下界和數(shù)據(jù)類(lèi)型功能:指定數(shù)組的維數(shù)、各維的上下界和數(shù)據(jù)類(lèi)型 舉例:舉例:dim a%(10),b!(2 t0 8),c#(15),b(3,4) as Long Dim Sum(10) As Long 下標(biāo)號(hào)從下標(biāo)號(hào)從010,共,共11個(gè)元素個(gè)元素Dim A

7、ry(1 to 20) As Integer 下標(biāo)號(hào)從下標(biāo)號(hào)從120,共,共20個(gè)元素個(gè)元素Dim d(1 to 5,1 to 10) As Double 定義二維數(shù)組定義二維數(shù)組 dim c(-2 to 2 ) as string*20 還可以使用還可以使用Public、Static、Private等語(yǔ)句來(lái)聲明數(shù)組等語(yǔ)句來(lái)聲明數(shù)組 6.2 6.2 數(shù)組的聲明和應(yīng)用數(shù)組的聲明和應(yīng)用數(shù)組下標(biāo)測(cè)試函數(shù) Ubound(數(shù)組名,維) Lbound(數(shù)組名,維) Dim y(1 to 12,5 to 20,-3 to 6) Print Lbound(y,1), Ubound(y,1) Print Lbo

8、und(y,2), Ubound(y,2) Print Lbound(y,3), Ubound(y,3) 設(shè)定下界的方法設(shè)定下界的方法 Option Base 1 設(shè)定下界為設(shè)定下界為1 Dim Data(10) As Single 下標(biāo)號(hào)從下標(biāo)號(hào)從110 6.2.2 Array函數(shù)函數(shù) 使用使用Array函數(shù)可以為數(shù)組元素賦值函數(shù)可以為數(shù)組元素賦值 示例示例 Dim D As Variant 定義數(shù)組名定義數(shù)組名(變體類(lèi)型變體類(lèi)型) D = Array(1, 2, 3, 4) 執(zhí)行結(jié)果:執(zhí)行結(jié)果:1D(0),2D(1), 3D(2), 4D(3) 數(shù)組刷新語(yǔ)句可以作用于動(dòng)態(tài)數(shù)組和靜態(tài)數(shù)組數(shù)組

9、刷新語(yǔ)句可以作用于動(dòng)態(tài)數(shù)組和靜態(tài)數(shù)組 格式:格式: Erase 數(shù)組名數(shù)組名,數(shù)組名,數(shù)組名 功能:功能:該語(yǔ)句用來(lái)清除靜態(tài)數(shù)組的內(nèi)容,或者釋放動(dòng)態(tài)數(shù)該語(yǔ)句用來(lái)清除靜態(tài)數(shù)組的內(nèi)容,或者釋放動(dòng)態(tài)數(shù)組占用的內(nèi)存空間組占用的內(nèi)存空間 例如例如: Dim Array1(20) As IntegerDim Array1(20) As Integer Dim Array2() As SingleDim Array2() As Single ReDim ReDim Array2(9,10) Array2(9,10) Erase Array1,Array2Erase Array1,Array2 對(duì)靜態(tài)數(shù)組,對(duì)

10、靜態(tài)數(shù)組,Erase語(yǔ)句將數(shù)組重新初始化語(yǔ)句將數(shù)組重新初始化; 對(duì)動(dòng)態(tài)數(shù)組,對(duì)動(dòng)態(tài)數(shù)組,Erase語(yǔ)句將釋放動(dòng)態(tài)數(shù)組所使用的內(nèi)存語(yǔ)句將釋放動(dòng)態(tài)數(shù)組所使用的內(nèi)存 6.3.2 數(shù)組刷新語(yǔ)句數(shù)組刷新語(yǔ)句(Erase) Erase 數(shù)組名,數(shù)組名, 重新對(duì)靜太數(shù)組進(jìn)行初始化,數(shù)值置0,字符為空字符串,而原數(shù)組存在。 釋放動(dòng)態(tài)數(shù)組存儲(chǔ)空間,原有數(shù)組不再存在。 變體數(shù)組,每個(gè)元素重新置為空。數(shù)組的引用和賦值:Option Base 1 Dim B1 As VariantB1 = Array(89, 96, 81, 67, 79, 90, 63, 85, 95, 83) y=B1(3) C=B1(5)+B1

11、(7) 數(shù)組的引用下標(biāo)不能越界 數(shù)組的賦值: 使用循環(huán)語(yǔ)句: dim k(10)dim k(10) For k=0 To 10 For k=0 To 10 t(k) = 2 t(k) = 2* *k+1k+1 Next kNext k Dim d(5) As Integer For i = 1 To 5 輸入成績(jī)輸入成績(jī) d(i) = Val(InputBox(請(qǐng)輸入第請(qǐng)輸入第 & Str(i) & _ 個(gè)學(xué)生的成績(jī)個(gè)學(xué)生的成績(jī), 輸入成績(jī)輸入成績(jī)) Next i數(shù)組輸出數(shù)組輸出For i = 1 To 5 Print d(i); Next i 與前面的循環(huán)語(yǔ)句與前面的循環(huán)語(yǔ)句

12、For.Next類(lèi)似,都是用來(lái)執(zhí)行指定重類(lèi)似,都是用來(lái)執(zhí)行指定重復(fù)次數(shù)的循環(huán)。但復(fù)次數(shù)的循環(huán)。但For Each.Next語(yǔ)句專(zhuān)門(mén)作用于數(shù)組或?qū)φZ(yǔ)句專(zhuān)門(mén)作用于數(shù)組或?qū)ο蠹现械拿恳怀蓡T。語(yǔ)法格式:象集合中的每一成員。語(yǔ)法格式: For Each 成員成員 In 數(shù)組名數(shù)組名 循環(huán)體循環(huán)體 Exit For Next 成員成員 “成員成員”是一個(gè)是一個(gè)Variant變量,它實(shí)際上代表數(shù)組中每一變量,它實(shí)際上代表數(shù)組中每一個(gè)元素個(gè)元素 本語(yǔ)句可以對(duì)數(shù)組元素進(jìn)行讀取、查詢(xún)或顯示,它所重本語(yǔ)句可以對(duì)數(shù)組元素進(jìn)行讀取、查詢(xún)或顯示,它所重復(fù)執(zhí)行的次數(shù)由數(shù)組中元素的個(gè)數(shù)確定復(fù)執(zhí)行的次數(shù)由數(shù)組中元素的個(gè)數(shù)確定

13、 在不知道數(shù)組中元素的數(shù)目時(shí)非常有用在不知道數(shù)組中元素的數(shù)目時(shí)非常有用 6.46.4 For Each.Next For Each.Next循環(huán)語(yǔ)句循環(huán)語(yǔ)句Private Sub Form_Load() Dim a(1 To 10) As Long, sum As Long, t As Long Dim n As Integer Show t = 1 For n = 1 To 10 t = t * n a(n) = t Next n sum = 0 For Each x In a sum = sum + x Next x Print 1! + 2! + 3! + 10! =; sumEnd S

14、ub輸出結(jié)果:輸出結(jié)果:1! + 2! + 3! + + 10! 4037913 例例6.6 求求1! + 2! + + 10! 的值的值 兩種形式的數(shù)組:兩種形式的數(shù)組:靜態(tài)數(shù)組靜態(tài)數(shù)組和和動(dòng)態(tài)數(shù)組動(dòng)態(tài)數(shù)組 靜態(tài)數(shù)組是指數(shù)組元素的個(gè)數(shù)固定不變;動(dòng)態(tài)數(shù)組的元素個(gè)靜態(tài)數(shù)組是指數(shù)組元素的個(gè)數(shù)固定不變;動(dòng)態(tài)數(shù)組的元素個(gè)數(shù),在程序運(yùn)行時(shí)可以改變數(shù),在程序運(yùn)行時(shí)可以改變 動(dòng)態(tài)數(shù)組可以在運(yùn)行過(guò)程中改變數(shù)組的大小,提高存儲(chǔ)區(qū)的動(dòng)態(tài)數(shù)組可以在運(yùn)行過(guò)程中改變數(shù)組的大小,提高存儲(chǔ)區(qū)的使用效率使用效率 6.3.1 建立動(dòng)態(tài)數(shù)組建立動(dòng)態(tài)數(shù)組 建立動(dòng)態(tài)數(shù)組的步驟:建立動(dòng)態(tài)數(shù)組的步驟: 第一步:聲明一個(gè)沒(méi)有下標(biāo)第一步:聲

15、明一個(gè)沒(méi)有下標(biāo)(或稱(chēng)空維數(shù)或稱(chēng)空維數(shù))的數(shù)組為動(dòng)態(tài)數(shù)組的數(shù)組為動(dòng)態(tài)數(shù)組 第二步:在過(guò)程中用第二步:在過(guò)程中用ReDim語(yǔ)句重新定義帶下標(biāo)的動(dòng)態(tài)數(shù)組語(yǔ)句重新定義帶下標(biāo)的動(dòng)態(tài)數(shù)組 ReDim語(yǔ)句語(yǔ)句格式格式: ReDim Preserve 數(shù)組名數(shù)組名(下界下界1 T0 上界上界1,下界下界 T0 上界上界2) As數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型 功能:功能:重新定義動(dòng)態(tài)數(shù)組,按定義的上下界重新分配存儲(chǔ)單元重新定義動(dòng)態(tài)數(shù)組,按定義的上下界重新分配存儲(chǔ)單元 6.36.3 動(dòng)態(tài)數(shù)組動(dòng)態(tài)數(shù)組 聲明聲明F為動(dòng)態(tài)數(shù)組的示例:為動(dòng)態(tài)數(shù)組的示例: Private Sub Command1_Click() Dim F() As

16、 Integer 聲明一個(gè)整型動(dòng)態(tài)數(shù)組聲明一個(gè)整型動(dòng)態(tài)數(shù)組 Size=20 ReDim F(Size) End Sub 每次執(zhí)行每次執(zhí)行ReDim時(shí),系統(tǒng)會(huì)清除指定數(shù)組的內(nèi)容時(shí),系統(tǒng)會(huì)清除指定數(shù)組的內(nèi)容 若采用:若采用:ReDim Preserve F(Size) 則能保留數(shù)組中原有的數(shù)據(jù)則能保留數(shù)組中原有的數(shù)據(jù)Private Sub Form_Load() Dim a() As Integer Show ReDim a(800) k = 0 For x = 200 To 600 Step 3 If x Mod 8 = 0 Then k = k + 1 a(k) = x End If Next

17、 x ReDim Preserve a(k) For i = 1 To k Print a(i) Next iEnd Sub 例例6.56.5 ReDim ReDim語(yǔ)句應(yīng)用示例語(yǔ)句應(yīng)用示例 兩類(lèi)數(shù)組:兩類(lèi)數(shù)組:一般數(shù)組一般數(shù)組和和控件數(shù)組控件數(shù)組 6.5.1 控件數(shù)組的概念控件數(shù)組的概念 控件數(shù)組是一組具有相同名稱(chēng)、類(lèi)型和事件過(guò)程的控件控件數(shù)組是一組具有相同名稱(chēng)、類(lèi)型和事件過(guò)程的控件 例如,例如,Label1(0),Label1(1),Label1(2), 但但Label1, Label2, Label3, 不是控件數(shù)組不是控件數(shù)組 控件數(shù)組具有以下特點(diǎn):控件數(shù)組具有以下特點(diǎn): (1)相同的

18、控件名稱(chēng)相同的控件名稱(chēng)(即即Name屬性屬性); (2)控件數(shù)組中的控件具有相同的一般屬性;控件數(shù)組中的控件具有相同的一般屬性; (3)所有控件共用相同的事件過(guò)程。所有控件共用相同的事件過(guò)程。 以下標(biāo)索引值以下標(biāo)索引值(Index)來(lái)標(biāo)識(shí)各個(gè)控件,第一個(gè)下標(biāo)索引號(hào)為來(lái)標(biāo)識(shí)各個(gè)控件,第一個(gè)下標(biāo)索引號(hào)為0 6.5 6.5 控件數(shù)組控件數(shù)組6.5.2 控件數(shù)組的建立控件數(shù)組的建立 建立控件數(shù)組有三種方法:建立控件數(shù)組有三種方法: (1)給控件起相同的名稱(chēng)給控件起相同的名稱(chēng) (2)將現(xiàn)有的控件復(fù)制并粘貼到窗體等上面將現(xiàn)有的控件復(fù)制并粘貼到窗體等上面 (3)將控件的將控件的Index屬性設(shè)置為非屬性設(shè)置

19、為非Null數(shù)值數(shù)值 6.5.3 控件數(shù)組的使用控件數(shù)組的使用 例例6.7 按圖按圖6.46.4設(shè)計(jì)窗體,其中一組設(shè)計(jì)窗體,其中一組( (共共5 5個(gè)個(gè)) )單選按鈕單選按鈕構(gòu)成控件數(shù)組,要求當(dāng)單擊某個(gè)單選按鈕時(shí),能夠改變文構(gòu)成控件數(shù)組,要求當(dāng)單擊某個(gè)單選按鈕時(shí),能夠改變文本框中文字的大小本框中文字的大小控件數(shù)組控件數(shù)組設(shè)計(jì)步驟:設(shè)計(jì)步驟: (1)設(shè)計(jì)控件數(shù)組設(shè)計(jì)控件數(shù)組Option1,其中包含,其中包含5個(gè)單選按鈕對(duì)象個(gè)單選按鈕對(duì)象 具體操作方法:具體操作方法: 畫(huà)出第一個(gè)單選按鈕控件,名稱(chēng)采用默認(rèn)的畫(huà)出第一個(gè)單選按鈕控件,名稱(chēng)采用默認(rèn)的Option1。此。此時(shí)該控件處于選定狀態(tài)。時(shí)該控件處

20、于選定狀態(tài)。 單擊工具欄上的單擊工具欄上的“復(fù)制復(fù)制”按鈕按鈕(或按或按Ctrl+C)。 單擊工具欄上的單擊工具欄上的“粘貼粘貼”按鈕按鈕(或按或按Ctrl+V),此時(shí)系統(tǒng)彈,此時(shí)系統(tǒng)彈出一個(gè)如圖出一個(gè)如圖6.5所示的對(duì)話框所示的對(duì)話框 單擊單擊“是是”,就建立一個(gè)控件數(shù)組元素,其,就建立一個(gè)控件數(shù)組元素,其Index屬性為屬性為1,而已畫(huà)出的第一個(gè)控件的而已畫(huà)出的第一個(gè)控件的Index屬性值為屬性值為0。 通過(guò)鼠標(biāo)拖放可以調(diào)整新控件的位置通過(guò)鼠標(biāo)拖放可以調(diào)整新控件的位置 繼續(xù)單擊繼續(xù)單擊“粘貼粘貼”按鈕按鈕(或按或按Ctrl+V)和調(diào)整控件位置,和調(diào)整控件位置,可得到控件數(shù)組中的其他三個(gè)控件

21、,其可得到控件數(shù)組中的其他三個(gè)控件,其Index屬性值分別為屬性值分別為2,3和和4(即從上而下為即從上而下為0,1,2,3,4) 設(shè)置控件數(shù)組各元素設(shè)置控件數(shù)組各元素(從上而下從上而下)的的Caption屬性分別為屬性分別為10,14,18,24和和28 (2)建立一個(gè)文本框建立一個(gè)文本框Text1,其,其Text屬性設(shè)置為屬性設(shè)置為“控件數(shù)組的使用控件數(shù)組的使用”。再建立一個(gè)標(biāo)簽再建立一個(gè)標(biāo)簽,其,其Caption屬性為屬性為“字號(hào)控制字號(hào)控制” (3)編寫(xiě)程序代碼編寫(xiě)程序代碼Private Sub Form_Load() Option1(0).Value = True 選定第一個(gè)單選按鈕

22、選定第一個(gè)單選按鈕 Text1.FontSize = 10 設(shè)定文本框中的字號(hào)設(shè)定文本框中的字號(hào)End SubPrivate Sub Option1_Click(Index As Integer) Select Case Index 系統(tǒng)自動(dòng)返回系統(tǒng)自動(dòng)返回Index值值 Case 0 Text1.FontSize = 10 Case 1 Text1.FontSize = 14 Case 2 Text1.FontSize = 18 Case 3 Text1.FontSize = 24 Case 4 Text1.FontSize = 28 End Select End Sub 例例6.1 輸入某

23、小組輸入某小組5個(gè)同學(xué)的成績(jī),計(jì)算總分和個(gè)同學(xué)的成績(jī),計(jì)算總分和平均分平均分(取小數(shù)后一位取小數(shù)后一位) 本例利用本例利用InputBox函數(shù)來(lái)輸入成績(jī),輸入完畢后函數(shù)來(lái)輸入成績(jī),輸入完畢后經(jīng)過(guò)計(jì)算,再采用經(jīng)過(guò)計(jì)算,再采用Print直接在窗體上輸出結(jié)果直接在窗體上輸出結(jié)果 6.2.36.2.3 數(shù)組的應(yīng)用數(shù)組的應(yīng)用 Private Sub Form_Load() Dim d(5) As Integer Dim i As Integer, total As Single, average As Single Show For i = 1 To 5 輸入成績(jī)輸入成績(jī) d(i) = Val(Inpu

24、tBox(請(qǐng)輸入第請(qǐng)輸入第 & Str(i) & _ 個(gè)學(xué)生的成績(jī)個(gè)學(xué)生的成績(jī), 輸入成績(jī)輸入成績(jī)) Next i total = 0 For i = 1 To 5 計(jì)算總分和平均分計(jì)算總分和平均分 total = total + d(i) Next i average = total / 5 Print 總分:總分: & total Print 平均分:平均分: & Format(average, #.0)End Sub 程序中,先通過(guò)程序中,先通過(guò)Dim語(yǔ)句為數(shù)組語(yǔ)句為數(shù)組d定義維數(shù)及下定義維數(shù)及下標(biāo)范圍,也即為數(shù)組安排一塊連續(xù)的內(nèi)存存儲(chǔ)區(qū),標(biāo)范圍,也即為數(shù)

25、組安排一塊連續(xù)的內(nèi)存存儲(chǔ)區(qū),但這并不意味著內(nèi)存里該數(shù)組已建立了應(yīng)有的內(nèi)容但這并不意味著內(nèi)存里該數(shù)組已建立了應(yīng)有的內(nèi)容 本例中輸入數(shù)組中的數(shù)據(jù)是由本例中輸入數(shù)組中的數(shù)據(jù)是由InputBox函數(shù)來(lái)函數(shù)來(lái)實(shí)現(xiàn)的,共循環(huán)了五次,輸入的五個(gè)數(shù)依次賦值給實(shí)現(xiàn)的,共循環(huán)了五次,輸入的五個(gè)數(shù)依次賦值給下標(biāo)變量下標(biāo)變量d(1)d(5) 建立了數(shù)組中的數(shù)據(jù)后,就可以按要求進(jìn)行處理建立了數(shù)組中的數(shù)據(jù)后,就可以按要求進(jìn)行處理 (1)創(chuàng)建應(yīng)用程序的用戶(hù)界面和設(shè)置對(duì)象屬性創(chuàng)建應(yīng)用程序的用戶(hù)界面和設(shè)置對(duì)象屬性例例6.26.2 輸入輸入1010名學(xué)生的成績(jī),求出最高分和最低分名學(xué)生的成績(jī),求出最高分和最低分 功能要求:功能要

26、求:通過(guò)通過(guò)Array函數(shù)輸入函數(shù)輸入10個(gè)分?jǐn)?shù);單擊個(gè)分?jǐn)?shù);單擊“查找查找”按按鈕鈕(Command2)后,開(kāi)始查找最高分和最低分,找到后顯示在標(biāo)后,開(kāi)始查找最高分和最低分,找到后顯示在標(biāo)簽簽Label1上上 Option Base 1 Dim score As Variant Private Sub Form_Load() Label1.Caption = 單擊單擊“查找查找”按鈕開(kāi)始查找最高分和最低按鈕開(kāi)始查找最高分和最低分分 score = Array(89, 96, 81, 67, 79, 90, 63, 85, 95, 83) End Sub (2) 編寫(xiě)程序代碼編寫(xiě)程序代碼 Pr

27、ivate Sub Command1_Click() Dim max As Integer, min As Integer max = score(1) 設(shè)定初值設(shè)定初值 min = score(1) For i = 2 To 10 If max score(i) Then 找最低分找最低分 min = score(i) End If Next i Chr(13)起換行作用起換行作用 Label1.Caption = 最高分:最高分: + Str(max) + _ Chr(13) + 最低分:最低分: + Str(min) End Sub 例例6.3 6.3 分別計(jì)算分別計(jì)算5 5個(gè)學(xué)生和個(gè)學(xué)

28、生和3 3門(mén)課的平均分門(mén)課的平均分 某學(xué)習(xí)小組有某學(xué)習(xí)小組有5名學(xué)生,成績(jī)?nèi)绫砻麑W(xué)生,成績(jī)?nèi)绫?.1所示所示 分析:分析:用一個(gè)用一個(gè)二維數(shù)組二維數(shù)組a(5, 3)來(lái)描述。程序中設(shè)置兩重循來(lái)描述。程序中設(shè)置兩重循環(huán),用以環(huán),用以實(shí)現(xiàn)每行和每列上的累加實(shí)現(xiàn)每行和每列上的累加。本例采用賦值語(yǔ)句來(lái)輸。本例采用賦值語(yǔ)句來(lái)輸入學(xué)生成績(jī),并采用入學(xué)生成績(jī),并采用Print直接在窗體上輸出結(jié)果直接在窗體上輸出結(jié)果 r=1 c=1, 2, 3r=2 c=1, 2, 3r=3 c=1, 2, 3r=4 c=1, 2, 3r=5 c=1, 2, 3求求5個(gè)學(xué)生的平均分個(gè)學(xué)生的平均分 下標(biāo)使用情況下標(biāo)使用情況 Op

29、tion Base 1 Private Sub Form_Load() Dim a(5, 3) As Integer Dim r As Integer, c As Integer, s As Integer k = Array(數(shù)學(xué)數(shù)學(xué), 英語(yǔ)英語(yǔ), 計(jì)算機(jī)計(jì)算機(jī)) 輸入課程名輸入課程名 a(1, 1) = 69: a(1, 2) = 89: a(1, 3) = 74 輸入學(xué)生成績(jī)輸入學(xué)生成績(jī) a(2, 1) = 94: a(2, 2) = 80: a(2, 3) = 90 a(3, 1) = 57: a(3, 2) = 62: a(3, 3) = 73 a(4, 1) = 98: a(4,

30、2) = 94: a(4, 3) = 90 a(5, 1) = 73: a(5, 2) = 76: a(5, 3) = 63 例例6.36.3 Show Print 學(xué)生學(xué)生, 平均分平均分“ 輸出輸出20個(gè)減號(hào)個(gè)減號(hào)“-” Print String(20, -) For r = 1 To 5 s = 0 累加前清累加前清0 For c = 1 To 3 累加同一行數(shù)據(jù)累加同一行數(shù)據(jù) s = s + a(r, c) Next c Print r, Format(s / 3, #.0) Next r Print Print 課程課程, 平均分平均分 Print String(20, -) For

31、 c = 1 To 3 s = 0 For r = 1 To 5 累加同一列數(shù)據(jù)累加同一列數(shù)據(jù) s = s + a(r, c) Next r Print k(c), Format(s / 5, #.0) Next cEnd Sub 程序運(yùn)行結(jié)果程序運(yùn)行結(jié)果 解題方法:解題方法: (1)利用利用Int(91*Rnd+10)產(chǎn)生值為產(chǎn)生值為10到到100的隨機(jī)整數(shù)的隨機(jī)整數(shù) 使用使用Randomize得到不同的隨機(jī)數(shù)序列得到不同的隨機(jī)數(shù)序列 (2)按值從小到大進(jìn)行排序。排序方法:按值從小到大進(jìn)行排序。排序方法: 將將10個(gè)數(shù)放入數(shù)組個(gè)數(shù)放入數(shù)組a中,對(duì)下列下標(biāo)變量進(jìn)行排序處理:中,對(duì)下列下標(biāo)變量進(jìn)

32、行排序處理: a(1), a(2), a(3), ,a(10) 從這從這10個(gè)下標(biāo)變量中,選出最小值,通過(guò)交換把該值存入個(gè)下標(biāo)變量中,選出最小值,通過(guò)交換把該值存入a(1)中中 除除a(1)之外之外(a(1)已存放最小值已存放最小值),從其余,從其余9個(gè)下標(biāo)變量中選出最小值個(gè)下標(biāo)變量中選出最小值(即即10個(gè)數(shù)中的次小值個(gè)數(shù)中的次小值),通過(guò)交換把該值存入,通過(guò)交換把該值存入a(2)中中 選出選出a(3)a(10)中的最小值,通過(guò)交換,把該值存入中的最小值,通過(guò)交換,把該值存入a(3)中中 重復(fù)上述處理,重復(fù)上述處理,至至a(8),可使,可使a(1)a(8)按小到大排列按小到大排列 第第9次處理

33、,選出次處理,選出a(9)及及a(10)中的最小值,通過(guò)交換把該值存入中的最小值,通過(guò)交換把該值存入a(9)中,中,此時(shí)此時(shí)a(10)存放的就是最大值存放的就是最大值 例例6.46.4 隨機(jī)產(chǎn)生十個(gè)隨機(jī)產(chǎn)生十個(gè)1010100100的整數(shù),用的整數(shù),用“選擇排序法選擇排序法”按值按值從小到大順序排序,最后輸出結(jié)果從小到大順序排序,最后輸出結(jié)果排列要求排列要求 小小 大大 示例:示例: a(1) a(2) a(3) a(4) 90 64 65 59 1. a(1)與與a(2) a(4)比較,選出最小值,結(jié)果比較,選出最小值,結(jié)果 59 90 65 64 2. a(2)與與a(3) a(4)比較,選

34、出次小值,結(jié)果比較,選出次小值,結(jié)果 59 64 90 65 3. a(3)與與a(4)比較,選出較小值,結(jié)果比較,選出較小值,結(jié)果 59 64 65 90 i=1 j=2, 3, 4 i=2 j=3, 4 i=3 j=4For i=1 to 3 For j=i+1 to 4 Next jNext i程程序序結(jié)結(jié)構(gòu)構(gòu) 完成上述比較及排序處理過(guò)程,可以采用兩重循環(huán)結(jié)構(gòu),完成上述比較及排序處理過(guò)程,可以采用兩重循環(huán)結(jié)構(gòu),外循環(huán)的循環(huán)變量外循環(huán)的循環(huán)變量i從從1到到9,共循環(huán)九次;內(nèi)循環(huán)的循環(huán)變量,共循環(huán)九次;內(nèi)循環(huán)的循環(huán)變量j從從i+1到到10。 本例采用默認(rèn)的用戶(hù)界面,所需數(shù)據(jù)由隨機(jī)函數(shù)產(chǎn)生,處

35、本例采用默認(rèn)的用戶(hù)界面,所需數(shù)據(jù)由隨機(jī)函數(shù)產(chǎn)生,處理后結(jié)果信息通過(guò)理后結(jié)果信息通過(guò)Print方法直接輸出在窗體上。方法直接輸出在窗體上。 Private Sub Form_Load() Show Randomize Dim a(1 To 10) As Integer Print 原始數(shù)據(jù):原始數(shù)據(jù): For i = 1 To 10 產(chǎn)生產(chǎn)生10個(gè)隨機(jī)數(shù)個(gè)隨機(jī)數(shù) a(i) = Int(91 * Rnd + 10) Print a(i); Next i (3) 程序結(jié)構(gòu)程序結(jié)構(gòu) Print: Print For i = 1 To 9 For j = i + 1 To 10 If a(i) a(j)

36、 Then t = a(i): a(i) = a(j): a(j) = t 交換位置交換位置 End If Next j Next i Print 排序結(jié)果:排序結(jié)果: For i = 1 To 10 Print a(i); Next i End Sub 改寫(xiě)中間程序段改寫(xiě)中間程序段“For i=1 To 9”“Next i”(共共7個(gè)程序個(gè)程序行行) For i = 1 To 9 k = i k用來(lái)記錄每次選擇的最小值的下標(biāo)用來(lái)記錄每次選擇的最小值的下標(biāo) For j = i + 1 To 10 If a(k) a(j) Then k = j End If Next j t = a(k): a

37、(k) = a(i): a(i) = t 交換位置交換位置 Next i 變量變量k記錄每一次選出的最小值的下標(biāo),在本次比較結(jié)束后,記錄每一次選出的最小值的下標(biāo),在本次比較結(jié)束后,使使a(i)與與a(k)一次換位即可一次換位即可 6.6 程序舉例程序舉例 例例6.8 查找考場(chǎng)教室號(hào)查找考場(chǎng)教室號(hào) 某課程統(tǒng)考憑準(zhǔn)考證入場(chǎng),考場(chǎng)教室安排如表某課程統(tǒng)考憑準(zhǔn)考證入場(chǎng),考場(chǎng)教室安排如表6.2。編制程。編制程序,查找準(zhǔn)考證號(hào)碼所對(duì)應(yīng)的教室號(hào)碼序,查找準(zhǔn)考證號(hào)碼所對(duì)應(yīng)的教室號(hào)碼 (1)分析分析:為便于查找,通過(guò)二維數(shù)組:為便于查找,通過(guò)二維數(shù)組rm建立這兩種號(hào)碼對(duì)建立這兩種號(hào)碼對(duì)照表。照表。 數(shù)組數(shù)組rm由

38、由Form_Load事件過(guò)程來(lái)建立,它的每一行存放了事件過(guò)程來(lái)建立,它的每一行存放了一個(gè)教室資料一個(gè)教室資料(包含準(zhǔn)考證號(hào)碼范圍和教室號(hào)碼包含準(zhǔn)考證號(hào)碼范圍和教室號(hào)碼)。當(dāng)判斷到某。當(dāng)判斷到某個(gè)給定準(zhǔn)考證號(hào)碼落在某一行的準(zhǔn)考證號(hào)碼范圍內(nèi)時(shí),則該行個(gè)給定準(zhǔn)考證號(hào)碼落在某一行的準(zhǔn)考證號(hào)碼范圍內(nèi)時(shí),則該行中的教室號(hào)碼為所求中的教室號(hào)碼為所求 (2)創(chuàng)建應(yīng)用程序的用戶(hù)界面和設(shè)置對(duì)象屬性創(chuàng)建應(yīng)用程序的用戶(hù)界面和設(shè)置對(duì)象屬性 (3)編寫(xiě)程序代碼編寫(xiě)程序代碼 功能要求:功能要求:用戶(hù)在文本框用戶(hù)在文本框Text1中輸入準(zhǔn)考證號(hào)碼,單擊中輸入準(zhǔn)考證號(hào)碼,單擊“查找查找”按鈕按鈕(Command1)后,則查找出

39、對(duì)應(yīng)的教室,并將教后,則查找出對(duì)應(yīng)的教室,并將教室號(hào)碼輸出在文本框室號(hào)碼輸出在文本框Text2中中 Dim rm(6, 3) As Integer Private Sub Form_Load() 輸入數(shù)組數(shù)據(jù)輸入數(shù)組數(shù)據(jù) rm(1, 1) = 2101: rm(1, 2) = 2147: rm(1, 3) = 102 rm(2, 1) = 1741: rm(2, 2) = 1802: rm(2, 3) = 103 rm(3, 1) = 1201: rm(3, 2) = 1287: rm(3, 3) = 114 rm(4, 1) = 3333: rm(4, 2) = 3387: rm(4, 3)

40、 = 209 rm(5, 1) = 1803: rm(5, 2) = 1829: rm(5, 3) = 305 rm(6, 1) = 2511: rm(6, 2) = 2576: rm(6, 3) = 306 End Sub Private Sub Command1_Click() Dim no As Integer, flag As Integer flag = 0 查找標(biāo)記,查找標(biāo)記,0表示未找到表示未找到 no = Val(Text1.Text) For i = 1 To 6 If no = rm(i, 1) And no = rm(i, 2) Then Text2.Text = rm(

41、i, 3) 顯示教室號(hào)碼顯示教室號(hào)碼 flag = 1 1表示找到表示找到 Exit For End If Next i If flag = 0 Then Text2.Text = 無(wú)此準(zhǔn)考證號(hào)碼無(wú)此準(zhǔn)考證號(hào)碼 End If Text1.SetFocus 設(shè)置焦點(diǎn)設(shè)置焦點(diǎn) End Sub 某學(xué)習(xí)小組某學(xué)習(xí)小組10名學(xué)生的成績(jī)情況如表名學(xué)生的成績(jī)情況如表6.3所示,現(xiàn)要求采所示,現(xiàn)要求采用折半查找法,通過(guò)學(xué)號(hào)查詢(xún)學(xué)生成績(jī)用折半查找法,通過(guò)學(xué)號(hào)查詢(xún)學(xué)生成績(jī) (1)分析:分析:折半查找法也稱(chēng)對(duì)半查找法,是一種效率較高的折半查找法也稱(chēng)對(duì)半查找法,是一種效率較高的查找方法。對(duì)于大型數(shù)組,它的查找速度比順

42、序查找法查找方法。對(duì)于大型數(shù)組,它的查找速度比順序查找法(例例6.8采用的是順序查找法采用的是順序查找法)快得多快得多 在采用折半查找法之前,要求將數(shù)組按查找關(guān)鍵字在采用折半查找法之前,要求將數(shù)組按查找關(guān)鍵字(如本如本例的學(xué)號(hào)例的學(xué)號(hào))排好序排好序(從大到小或小到大從大到小或小到大) 例例6.9 采用折半查找法查詢(xún)學(xué)生成績(jī)采用折半查找法查詢(xún)學(xué)生成績(jī) 先從數(shù)組中間開(kāi)始比較,先從數(shù)組中間開(kāi)始比較, 判別中間的那個(gè)元素是不是判別中間的那個(gè)元素是不是要找的數(shù)據(jù):要找的數(shù)據(jù): 是,則查找成功是,則查找成功 否,若被查找的數(shù)據(jù)是在該數(shù)組的上半部,則從上半否,若被查找的數(shù)據(jù)是在該數(shù)組的上半部,則從上半部的中

43、間繼續(xù)查找,否則從下半部的中間繼續(xù)查找部的中間繼續(xù)查找,否則從下半部的中間繼續(xù)查找 照此進(jìn)行下去,不斷縮小查找范圍照此進(jìn)行下去,不斷縮小查找范圍 至最后,因找到或找不到而停止查找至最后,因找到或找不到而停止查找 對(duì)于對(duì)于n個(gè)數(shù)據(jù),若用變量個(gè)數(shù)據(jù),若用變量Top、Bott分別表示每次分別表示每次“折半折半”的首位置和末位置,則中間位置的首位置和末位置,則中間位置M為為 M=Int(Top+Bott)/2)這樣就將這樣就將Top, Bott分成兩段分成兩段,即,即Top, M-1和和M+1, Bott, 若要找的數(shù)據(jù)小于由若要找的數(shù)據(jù)小于由M指示的數(shù)據(jù),則該數(shù)據(jù)在指示的數(shù)據(jù),則該數(shù)據(jù)在Top,M-1范圍內(nèi),反之,則在范圍內(nèi),反之,則在M+1,Bott范圍內(nèi)范圍內(nèi) 折半查找法的過(guò)程折半查找法的過(guò)程 折半查找法的過(guò)程折半查找法的過(guò)程學(xué)號(hào)學(xué)號(hào) h()1201120212031205120612071209121012111215先排好序先排好序數(shù)學(xué)數(shù)學(xué) d( x ,1) 語(yǔ)文語(yǔ)文 d( x ,2

溫馨提示

  • 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)論