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

下載本文檔

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

文檔簡介

1、第5章 數(shù)組和自定義類型 5.1 數(shù)組的概念5.2 數(shù)組的基本操作和排序5.3 列表框和組合框控件5.4 自定義類型及其數(shù)組5.5 綜合應(yīng)用5.1 數(shù)組的概念 例5.1 求100個(gè)學(xué)生的平均成績,并統(tǒng)計(jì)高于平均分的人數(shù)。用簡單變量和循環(huán),求平均成績程序如下 aver = 0 For i = 1 To 100 mark =Val( InputBox(輸入學(xué)生成績) aver = aver + mark Next i aver = aver / 100問題(1)mark只能放一個(gè)學(xué)生的成績,無法統(tǒng)計(jì)高于平均分的人數(shù)。(2)若用簡單變量保存100個(gè)學(xué)生的成績,則需定義100個(gè)變量和使用100句輸入語

2、句 由此引入了數(shù)組 用數(shù)組解決問題的程序如下: Dim mark(99) As Integer Dim aver!, overn%, i% aver = 0 For i = 0 To 99 mark(i) =Val( InputBox(輸入學(xué)生的成績)) aver = aver + mark(i) Next i aver = aver / 100 overn = 0 For i = 0 To 99 統(tǒng)計(jì)高于平均分的人數(shù) If mark(i) aver Then overn = overn + 1 Next i MsgBox (平均分: & aver & 高于平均分人數(shù): & overn) ma

3、rk(99)mark(98)mark(2)mark(1)mark(0)數(shù)組: 不是一種數(shù)據(jù)類型,而是一組相同類型的變量的集合。作用:用一個(gè)數(shù)組名代表邏輯上相關(guān)的一批數(shù)據(jù),用下標(biāo)表示該數(shù)組中的各個(gè)元素,和循環(huán)語句結(jié)合使用,使得程序書寫簡潔。使用:必須先聲明后使用Dim S(8)As Integer數(shù)組名下標(biāo)S(0)S(1)S(2)S(3)S(4)S(5)S(6)S(7)類型例:Dim a(1 to 10) As Integer與上面聲明等價(jià)形式: Dim a%(1 to 10) 1是下標(biāo)的下界10是下標(biāo)的上界數(shù)組元數(shù)的數(shù)據(jù)類型S(8)5.1.2定長數(shù)組聲明一維數(shù)組 若一數(shù)組的元素只有一個(gè)下標(biāo),這

4、個(gè)數(shù)組為一維數(shù)組 Dim 數(shù)組名(下標(biāo)下界 To 上界) As 類型說明:下標(biāo)下界缺省為0,下標(biāo)上界為常數(shù)。數(shù)組大小為:下標(biāo)上界-下標(biāo)下界+1。作用:聲明了數(shù)組名、類型、維數(shù)、數(shù)組大小 在內(nèi)存分配一塊連續(xù)的區(qū)域。例:Dim a(10) As Integer a是數(shù)組名,一維數(shù)組、整形有11個(gè)元素、下標(biāo)0-10 Dim St(-3To5) As String*3 St是數(shù)組名,一維數(shù)組、字符串類型、有9個(gè)元素、下標(biāo)-35、每個(gè)元素最多存放3個(gè)字符例:Dim mark(99) As Integer 聲明了一維定長整型數(shù)組mark 共有100個(gè)元素,下標(biāo)范圍為0 To 99mark數(shù)組的各元素是ma

5、rk(0),mark(1), mark(99)mark(i)表示由下標(biāo)i的值決定是哪一個(gè)元素mark數(shù)組內(nèi)存分配如下:mark(99)mark(98)mark(2)mark(1)mark(0)每個(gè)數(shù)組元素有一個(gè)唯一的順序號(hào),下標(biāo)不能超出數(shù)組聲明時(shí)的上、下界范圍,否則會(huì)產(chǎn)生“下標(biāo)越界”錯(cuò)誤 數(shù)組元素的使用規(guī)則與同類型的簡單變量相同mark(100)=156 下標(biāo)越界例:Dim c(-2 To 2) As String*20數(shù)組元素為:c(-2) , c(-1) , c(0) , c(1) , c(2)每個(gè)元素存放20個(gè)字符的字符串在同一個(gè)過程中,數(shù)組名不能與變量名同名,否則會(huì)出錯(cuò)Private

6、Sub Form_DblClick() Dim a(5) Dim a a = 8 a(2) = 10 Print a, a(2)End Sub出錯(cuò),數(shù)組名不能與變量名同名例:在窗體上畫一個(gè)命令按鈕,然后寫如下事件過程 Private Sub Command1_Click() Dim a(5) As String For i = 1 To 5 a(i) = Chr(Asc(A) + (i - 1) Print a(i); Next i End Sub程序運(yùn)行后,單擊命令按鈕,輸出結(jié)果是A)ABCDE B)1 2 3 4 5 C)abcde D)出錯(cuò)信息 多維數(shù)組聲明Dim 數(shù)組名(下標(biāo)1下界 T

7、o 上界1, 下標(biāo)下界2 To 上界2) As 類型下標(biāo)個(gè)數(shù)決定了數(shù)組的維數(shù)數(shù)組的大小為每一維大小的乘積例 Dim x(2,4) As Long聲明了一個(gè)長整型的二維數(shù)組 x;3行5列共占據(jù)35個(gè)長整型變量的空間 x(1,4)x(1,3)x(1,2)x(1,1)x(1,0) x(2,4)x(2,3)x(2,2)x(2,1)x(2,0) x(0,4)x(0,3)x(0,2)x(0,1)x(0,0) 第0行第1行第2行第0列第1列第2列第3列第4列例:Dim A (5) As Integer 6個(gè)元素一維數(shù)組 Dim Arr(-2 To 3) 6個(gè)元素一維數(shù)組 Dim Test(2,3) As I

8、nteger 3行4列二維數(shù)組 Dim A(0 To 8,0 To 3) 9行4列二維數(shù)組 Dim A(8,0 To 3) 9行4列二維數(shù)組 Dim (2,5,3) 3頁6行4列三維數(shù)組注意:1.定義數(shù)組的和不能使用變量,必須是常量,數(shù)組元素可以用變量如:n=10 Dim x(n) As Single x(n)=352.數(shù)組定義和數(shù)組元素的區(qū)別 Dim x(10) As Integer x數(shù)組有11個(gè)元素 x(10) =100 對(duì)x(10)元素賦值Option語句格式: OPTION BASE n 功能:用來指定數(shù)組下標(biāo)的默認(rèn)下界 說明: n的值只能取0或1; 若要使用OPTION BASE語

9、句,只能出現(xiàn)在窗體層或模塊層,必須將其放在數(shù)組定義之前,且一個(gè)模塊內(nèi)只能使用一次; 若定義的是多維數(shù)組,OPTION BASE 對(duì)每一維都有效。 例: Option Base 1 Dim a(20) As Integer 120,20個(gè)整形元素例: Option Base 1 Dim x(5 , 5) As String15行,15列25個(gè)元素,二維數(shù)組注意要注意區(qū)分“可以使用的最大下標(biāo)值”和“元素個(gè)數(shù)” 例:Dim Arr(5) 不能通過Arr(6)來引用數(shù)組中的元素例下面數(shù)組聲明正確的是_a)Dim A(5 6) As Integerb)Dim A(n, n) As Integerc)Di

10、m A(5, 6) As Integerd)Dim A5, 6 As Integer例:如下數(shù)組聲明語句,則數(shù)組a包含的元素的個(gè)數(shù)有Dim a(3, -1 to 1, 6)a)84 b)54 c)11 d)18例:1個(gè)二維數(shù)組可以存放1個(gè)矩陣.在程序開始有語句Option Base 0,則下面定義的數(shù)組中正好可以存放1個(gè)4*3矩陣(即只有12個(gè)元素)的是 A)Dim a(-2 To 0,2) AS Integer B)Dim a(3,3) AS Ingeger C)Dim a(4,3)AS Ingeger D)Dim a(-1 To -4,-1 To -3)AS Ingeger 例:在窗體上劃

11、一個(gè)名稱為text1的文本框和一個(gè)名稱為command1的命令按鈕,然后編寫如下事件過程:Private Sub command1_click()Dim array1(10, 10) As IntegerDim i, j As IntegerFor i = 1 To 3 For j = 2 To 4 array1(i, j) = i + j Next jNext iText1.Text = array1(2, 3) + array1(3, 4)End Sub程序運(yùn)行后,單擊命令按鈕,在文本框中顯示的值是A)12 B)13 C)14 D)15例:在窗體上劃一個(gè)名稱為command1的命令按鈕Pr

12、ivate Sub command1_click() Dim i As Integer, j As Integer Dim a(10, 10) As Integer For i = 1 To 3 For j = 1 To 3 a(i, j) = (i - 1) * 3 + j Print a(i, j); Next j Print Next iEnd Sub程序運(yùn)行后,單擊命令按鈕,窗體顯示的是A)123 B)234 C)147 D)123 246 345 258 456 369 456 369 789例:在窗體上畫一個(gè)命令按鈕,其名稱為Command1 Private Sub Command

13、1_Click() Dim a1(4, 4), a2(4, 4) For i = 1 To 4 For j = 1 To 4 a1(i, j) = i + j a2(i, j) = a1(i, j) + i + j Next j Next i Print a1(3, 3); a2(3, 3) End Sub 程序運(yùn)行后,單擊命令按鈕,在窗體上輸出的是 A)6 6 B)10 5 C)7 21 D)6 12 5.1.3 動(dòng)態(tài)數(shù)組及聲明 靜態(tài)數(shù)組: 在編譯時(shí)開辟內(nèi)存區(qū)的數(shù)組叫做靜態(tài)數(shù)組 Dim a(20) As Integer動(dòng)態(tài)數(shù)組: 在運(yùn)行時(shí)開辟內(nèi)存區(qū)的數(shù)組叫做動(dòng)態(tài)數(shù)組例:在窗體層聲明如下: O

14、ption Base 1 Dim this( ) As String編寫如下事件過程: Sub Command1_Click( ) ReDim this(4) this(2) = Microsoft Print this(2) ReDim this(6) this(5) = Visual Basic Print this(5) End Sub 建立動(dòng)態(tài)數(shù)組要分兩步:第一步:在窗體層、標(biāo)準(zhǔn)模塊或過程中用Dim聲明一個(gè)沒有下標(biāo)的數(shù)組(括號(hào)不能省略)Dim 數(shù)組名( ) As 數(shù)據(jù)類型第二步:在過程中用ReDim語句定義帶下標(biāo)的數(shù)組,給數(shù)組指定實(shí)際的元素個(gè)數(shù)ReDim 數(shù)組名 (下標(biāo)1,下標(biāo)2)例:

15、Dim s ( ) As Single Sub Form_Load( ) ReDim s(4,8) End Sub 22注意: Dim 是說明語句,可出現(xiàn)在程序的任何地方,而 ReDim 是執(zhí)行語句,只能在過程中 在過程中可多次使用ReDim語句來改變數(shù)組的大小,但不能改變維數(shù)和類型每次使用ReDim語句都會(huì)使原來數(shù)組中值丟失,可以在ReDim后加Preserve 參數(shù)來保留數(shù)組中的數(shù)據(jù)。但此時(shí)只能改變最后一維的大小例: ReDim a(5 , 5 ,5 ) ReDim Preserve a(5 , 5 , 8)使用具有 Preserve 關(guān)鍵字的 ReDim 語句可改變數(shù)組大小而不丟失數(shù)組中

16、的數(shù)據(jù)只能改變?cè)氐膫€(gè)數(shù),不能改變數(shù)組的維數(shù)Sub Command1_Click( ) ReDim this(4) this(2) = “Microsoft” Print this(2) ReDim this(2,3) this(2,1) = “Visual Basuic” Print this(2,1) End Sub是錯(cuò)誤的,不能改變數(shù)組的維數(shù)ReDim this(6) As Integer是錯(cuò)誤的,也不能改變數(shù)組的類型 Option Base 1 Dim this( ) As String例5.2編一個(gè)程序,顯示有n個(gè)數(shù)的非波那契數(shù)序列 1 2 3 5 8 13 21 34 55 每行顯

17、示5個(gè)數(shù)Private Sub Command1_Click() Dim x( ) As Integer Dim n%, i% n = Val(InputBox(輸入序列數(shù)) ReDim x(n - 1) x(0) = 1 x(1) = 1 For i = 2 To n - 1 x(i) = x(i - 1) + x(i - 2) Next i For i = 0 To n - 1 Print x(i), If (i + 1) Mod 5 = 0 Then Print Next iEnd Sub5.2 數(shù)組的基本操作1、數(shù)組的引用 數(shù)組的引用通常是指對(duì)數(shù)組元素的引用,其方法是:在數(shù)組后面的括號(hào)

18、中指定下標(biāo)數(shù)組元素的引用形式:數(shù)組名(下標(biāo))例: x(8) , y(2,3), z%(3),x(3+4)、x(i)下標(biāo)可以是:整型的常量、變量、表達(dá)式、數(shù)組元素例:a(8) = a(5) + a(3)例: “下標(biāo)越界”的錯(cuò)誤 Dim b%(10) b% (15) = 1002、數(shù)組元素賦初值 (1)使用循環(huán)語句 For i = 1 To 10 a( i ) = 0 Next i 將a數(shù)組的每個(gè)元素置為0說明:(1)數(shù)組變量名必須是變體類型(Variant)的合法變量名, 后面可加括號(hào),也可省略;(2)數(shù)組元素各值之間以逗號(hào)分開;類型可以是Variant 變量可以表示任何類型的數(shù)據(jù)。數(shù)組的上界和

19、下界可以通過UBound和LBound函數(shù)獲得 例: Option Base 1 Private Sub Command1_Click() Dim a( ) As Variant, b As Variant a = Array(1, 2, 3, 5, 6, 7) b = Array(One, Two, Three) Print a(3); b(2) End Sub(2)使用Array函數(shù)格式:數(shù)組變量名=Array(數(shù)組元素值)例:Option Base 1Private Sub Form_Click() Dim a As Variant, b As Variant a = Array(1,

20、2, 3, 4, 5, 6, 7) b = Array(One, Two, Three) For i = 1 To 7 Print a(i); Next i PrintFor i = 1 To UBound(b) Print b(i); ; Next i PrintEnd Sub例:在窗體上畫一個(gè)命令按鈕Option Base 1Private Sub Command1_Click() Dim a a=Array(1,2,3,4) j=1For i=4 To 1 Step -1 s=s+a(i)*j j=j*10Next iPrint sEnd Sub運(yùn)行上面的程序,輸出結(jié)果為A)1234 B

21、)12 C)34 D)4321Option Base 1Private Sub Command1_Click()Dim ArrArr=Array(43,68,-25,65,-78,12,-79,43,-94,72)pos=0neg=0For k=1 To 10 If Arr(k)0 Then Else End IfNext kPrint pos,negEnd Sub以上程序的功能是計(jì)算并輸出數(shù)組Arr中10個(gè)數(shù)的正數(shù)之和pos與負(fù)數(shù)之和neg,填空。neg=neg+Arr(k)pos=pos+Arr(k)3、數(shù)組的輸入 :通過TextBox控件InputBox函數(shù)輸入Private Sub F

22、orm_Click()Dim s(3,4) As IntegerFor i = 0 To 3 For j = 0 To 4 s(i,j) = Val(InputBox(輸入 & i &, & j & 元素) Next jNext iEnd Sub當(dāng)數(shù)組較小,或者只需要對(duì)數(shù)組中指定元素賦值時(shí),也可用賦值語句Option Base 1Dim stuname( ) As StringSub Form_Click( ) ReDim stuname(4) As String strname(1) = “Zhang” strname(2) = “Wang” strname(3) = “Li” strnam

23、e(4) = “Zhao”End Sub在Visual Basic 6.0中,可以使用一條賦值語句,將一個(gè)數(shù)組元素的值賦給另一個(gè)數(shù)組 Option Base 1 Private Sub Form_Click() Dim a As Variant, b( ) As Variant a = Array(1, 2, 3, 4, 5) b = a Print b(2) End Sub 例:以下定義數(shù)組或給數(shù)組元素賦值,正確的是 A)Dim a As Variant B) Dim a(10) As Integer a=Array(1,2,3,4,5) a=Array(1,2,3,4,5) C)Dim a

24、%(10) D) Dim a(3),b(3) As Integer a(1)= “ABCDE” a(0)=0 a(1)=1 a(2)=2 b=a344、數(shù)組的輸出 本章目錄數(shù)組元素可以在窗體或圖片框中使用Print方法輸出,也可以在多行文本框、列表框或組合框中輸出。例:二維數(shù)組的輸入和輸出。假設(shè)有如下三行三列數(shù)據(jù):1 2 3 4 5 6 7 8 9 利用InputBox函數(shù)輸入上面數(shù)據(jù),然后仍按原來的3行3列輸出。 Option Base 1Private Sub Form_Click() Dim a(3, 3) As IntegerFor i = 1 To 3 For j = 1 To 3

25、a(i, j) = Val(InputBox(enter data:) Next j Next i For i = 1 To 3 For j = 1 To 3 Print a(i, j); ; Next j Print Next iEnd Sub例5.3 形成55的方陣,分別輸出方陣中各元素、上三角和下三角元素 方陣規(guī)律:第一行的元素為04,以后每一行是前一行對(duì)應(yīng)元素增加5上三角規(guī)律: 每一行的起始列與行號(hào)相同,只要控制內(nèi)循環(huán)的初值 用Tab函數(shù)或Space定位控制輸出的空格,Private Sub Form_Click() Dim sc%(4, 4) Picture1.Print 產(chǎn)生方陣數(shù)

26、據(jù) For i = 0 To 4 For j = 0 To 4 sc(i, j) = i * 5 + j Picture1.Print Tab(j * 5); sc(i, j); Next j Picture1.Print Next i Picture2.Print 顯示上三角數(shù)組元素 For i = 0 To 4 For j = i To 4 Picture2.Print Tab(j * 5); sc(i, j); Next j Picture2.Print Next i Picture3.Print 顯示下三角數(shù)組元素 For i = 0 To 4 For j = 0 To i Pictu

27、re3.Print Tab(j * 5); sc(i, j); Next j Picture3.Print Next iEnd Sub385、求數(shù)組和、最值、位置及交換元素求元素和 通過循環(huán)將每個(gè)元素進(jìn)行累加Private Sub Form_Click() Dim sc, sum As Integer sum = 0 sc = Array(10, 12, 11, 6, 5, 7, 19) For i = 0 To 6 sum = sum + sc(i) Next i Print sumEnd Sub 求數(shù)組中最小元素 假設(shè)第一個(gè)元素為最小,然后將該數(shù)與其他元素逐一比較,若發(fā)現(xiàn)小于最小值,就用新

28、值替換最小值,同時(shí)記錄下標(biāo)值。求最大值的方法與求最小值相似例5.4 求一維數(shù)組中各元素之和、最小數(shù)組元素,并將最小值數(shù)組元素與數(shù)組中第一個(gè)元素交換Private Sub Command1_Click() Dim a, i%, min%, imin%, sum%, t% a = Array(26, 43, 61, 87, 33, 19, 37, 59, 76, 69) min = a(0): imin = 0: sum = a(0) For i = 1 To UBound(a) sum = sum + a(i) If a(i) min Then min = a(i) imin = i End I

29、f Next i Print min, imin t = a(0): a(0) = a(imin): a(imin) = t Print 數(shù)組元素和=; sum, 最小元素值為:; a(0)End Sub406、數(shù)組排序排序是將一組數(shù)按遞增或遞減的次序排列,例如按學(xué)生的成績、球賽積分等排序。排序的算法有許多,常用的有選擇法、冒泡法等 (1)選擇法排序基本思想:每次在若干個(gè)無序數(shù)中找最小(大)數(shù),并放在相應(yīng)的位置本章目錄41例對(duì)于有n個(gè)數(shù)的數(shù)組,按遞增次序排序的步驟:1) 從n個(gè)數(shù)中找出最小數(shù)的下標(biāo),出了內(nèi)循環(huán),最小數(shù)與第1個(gè)數(shù)交換位置;通過這一輪排序,第1個(gè)數(shù)已確定好。2) 除已排序的數(shù)外,其

30、余數(shù)再按步驟1)的方法選出最小的數(shù),與未排序數(shù)中的第1個(gè)數(shù)交換位置。3) 重復(fù)步驟 2),最后構(gòu)成遞增序列。本章目錄36-2912-34073211a(1) a(2) a(3) a(4) a(5) a(6) a(7) a(8) a(9) a(10)42例5.5 對(duì)已知存放在數(shù)組中的6個(gè)數(shù),用選擇法按遞增順序排序 原始數(shù)據(jù)8 6 9 3 2 7a(1)a(2)a(3)a(4)a(5)a(6)第1輪比較2 6 9 3 8 7a(2)a(3)a(4)a(5)a(6)第2輪比較2 3 9 6 8 7a(3)a(4)a(5)a(6)第3輪比較2 3 6 9 8 7a(4)a(5)a(6)第4輪比較2 3

31、 6 7 8 9a(5)a(6) 第5輪比較2 3 6 7 8 9本章目錄Private Sub Command1_Click() Dim a(), iMin%, n%, i%, j%, t% a = Array(8, 6, 9, 3, 2, 7) n = UBound(a) For i = 0 To n - 1 iMin = i For j = i + 1 To n If a(j) a(j + 1) Then t = a(j): a(j) = a(j + 1): a(j + 1) = t End If Next j Next i For i = 0 To n Print a(i); Next

32、 iEnd Sub487、插入數(shù)據(jù) 插入數(shù)據(jù)基本思想是:1)首先查找待插入數(shù)據(jù)在數(shù)組中的位置k;2)然后從最后一個(gè)元素開始往前直到下標(biāo)為k的元素依次往后移動(dòng)一個(gè)位置;3) 第k個(gè)元素的位置騰出,將數(shù)據(jù)插入。本章目錄例5.7在有序數(shù)組a中插入數(shù)值x Private Sub Form_Click() Dim a(), i%, k%, x%, n% a = Array(1, 4, 7, 9, 12, 23, 56) n = UBound(a) x = 14 For k = 0 To n If x n Then MsgBox (找不到此數(shù)據(jù)): Exit Sub For i = k + 1 To n

33、a(i - 1) = a(i) Next i n = n - 1 ReDim Preserve a(n) For i = 0 To n Print a(i); Next iEnd Sub例:矩陣轉(zhuǎn)置將一個(gè)nm 的矩陣,的行和列互換。 a矩陣為: 轉(zhuǎn)置后的矩陣為b:1 2 34 5 6a = 1 453 6b = Option Base 1Private Sub Form_Click()Dim a(2, 3) As Integer, b(3, 2) As Integer For i = 1 To 2 For j = 1 To 3 a(i, j) = Val(InputBox(輸入a數(shù)組:) Ne

34、xt j Next i For i = 1 To 2 For j = 1 To 3 b(j, i) = a(i, j) Next j Next iPrint maxtrix a For i = 1 To 2 For j = 1 To 3 Print Tab(4 * j + 1); a(i, j); Next j Print Next i Print maxtrix b For i = 1 To 3 For j = 1 To 2Print Tab(4 * j + 1); b(i, j); Next j Print Next iEnd Sub例:有如下程序: Option Base 1 Priva

35、te Sub Form_Click() Dim arr, Sum Sum = 0 arr = Array(1, 3, 5, 7, 9, 11, 13, 15, 17, 19) For i = 1 To 10 If arr(i) / 3 = arr(i) 3 Then Sum = Sum + arr(i) End If Next i Print Sum End Sub 程序運(yùn)行后,單擊窗體,輸出結(jié)果為 A)25 B)26 C)27 D)28 例:Option Base 1Dim arr() As IntegerPrivate Sub Form_Click() Dim i As Integer,

36、j As Integer ReDim arr(3, 2) For i = 1 To 3 For j = 1 To 2 arr(i, j) = i * 2 + j Next j Next i ReDim Preserve arr(3, 4) For j = 3 To 4 arr(3, j) = j + 9 Next j Print arr(3, 2) + arr(3, 4)End Sub 程序運(yùn)行后,單擊窗體,輸入結(jié)果為 A)21 B)13 C)8 D)25例:在窗體上畫一個(gè)名稱為Command1的命令按鈕 Option Base 1Private Sub Command1_Click() Di

37、m c As Integer, d As Integer,x d = 0 c = 6 x = Array(2, 4, 6, 8, 10, 12) For i = 1 To 6 If x(i) c Then d = d + x(i) c = x(i) Else d = d c End If Next i Print dEnd Sub 程序運(yùn)行后,若單擊命令按鈕,則在窗體上輸出的內(nèi)容為 A) 10 B) 16 C) 12 D) 20例在窗體上畫一個(gè)名稱為Command1的命令按鈕 Option Base 1 Private Sub Command1_Click() Dim a a=Array(1,

38、2,3,4,5) For i=1 To UBound(a) a(i)=a(i)+i-1 Next i Print a(3) End Sub程序運(yùn)行后單擊命令按鈕則在窗體上顯示的內(nèi)容是A)4 B)5 C)6 D)7例窗體上畫一個(gè)名稱為Command1的命令按鈕Option Base 1Private Sub Command1_Click() Dim a As Variant a=Array(1,2,3,4,5) Sum=0 For i=1 To 5 Sum=Sum+a(i) Next i x=Sum/5 For i=1 To 5 If a(i)x Then Print a(i) Next iEn

39、d Sub程序運(yùn)行后單擊命令按鈕在窗體上顯示的內(nèi)容是A)1 2 B)1 2 3 C) 3 4 5 D)4 5例. 設(shè)有程序:Option Base 1Private Sub Command1_Click() Dim arr1, Max As Integer arr1 = Array(12, 435, 76, 24, 7, 54, 866, 43) = arr1(1) For i = 1 To 8 If arr1(i) Max Then Next i Print 最大值是: ; MaxEnd Sub以上程序的功能是:用Array函數(shù)建立一個(gè)含有8個(gè)元素的數(shù)組,然后查找并輸出該數(shù)組中元素的最大值請(qǐng)

40、填空MaxMax = arr1(i)例:設(shè)有如下程序:Option Base 0Private Sub form_click() Dim a Dim i As Integer a = Array(1, 2, 3, 4, 5, 6, 7, 8, 9) For i = 0 To 3 Print a(5 - i); Next iEnd Sub程序運(yùn)行后,單擊窗體,則在窗體上顯示的是A)4321 B)5432 C)6543 D)76545.3 列表框和組合框 列表框和組合框?qū)嵸|(zhì)是一維字符串?dāng)?shù)組的使用, 直觀顯示其項(xiàng)目列表列表框:可顯示多個(gè)選項(xiàng)供用戶選擇,不能直接修改其中的內(nèi)容。組合框: 組合了文本框和

41、列表框的特性而形成的一種控件。組合框有3種式樣。1、列表框(ListBox)主要屬性屬性類型說明屬性值設(shè)置List字符數(shù)組存放列表項(xiàng)目值: List1.List(0) 第1個(gè)元素下標(biāo)為:0屬性窗口代碼窗口ListIndex整型程序運(yùn)行時(shí)被選定的項(xiàng)目的序號(hào),未選中為-1, List1.ListIndex代碼窗口ListCount整型列表框中項(xiàng)目的總數(shù)項(xiàng)目下標(biāo):0 ListCount-1代碼窗口Sorted邏輯型決定在程序運(yùn)行期間項(xiàng)目是否排序?qū)傩源翱赥ext字符型選定項(xiàng)目的文本內(nèi)容List1. Text代碼窗口Selected邏輯型數(shù)組列表框某項(xiàng)選中狀態(tài):選中為True否則為False代碼窗口Mu

42、ltiSelect整型確定列表框是否容許多選0不能多選;1用鼠標(biāo)單擊或按空格鍵多選;2-Shift+Ctrl選定多個(gè)連續(xù)項(xiàng)屬性窗口64(1) List :是一個(gè)集合如:大學(xué)計(jì)算機(jī)基礎(chǔ) VB程序設(shè)計(jì) C/C+程序設(shè)計(jì) 多媒體技術(shù)及應(yīng)用 數(shù)據(jù)庫技術(shù)及應(yīng)用 Web技術(shù)及應(yīng)用第一個(gè)元素下表為0如:List1.List(0) 為“大學(xué)計(jì)算機(jī)基礎(chǔ)”(2) ListIndex 選定項(xiàng)的序號(hào)(從0開始)例如圖: List1.ListIndex的值為2(3) ListCount項(xiàng)目總數(shù)量 :例如圖: List1.ListCount為6(4) Text 被選定的文本內(nèi)容 List1.Text的值為“C/C+程序設(shè)

43、計(jì)”(5)Selected選中狀態(tài):List1.Selected(2)為TrueList1.Text 為 C/C+程序設(shè)計(jì) List1.List(List1.ListIndex)等于List1.Text 等于List1.List(2)(2)、常用方法 AddItem方法:把一個(gè)項(xiàng)目加入列表框中 列表框?qū)ο?AddItem 項(xiàng)目字符串 ,索引值索引值:決定新增項(xiàng)在列表中的位置,省略則加在最后例:List1.AddItem “計(jì)算機(jī), 2 RemoveItem方法:刪除列表中索引值指定項(xiàng)目 列表框?qū)ο?RemoveItem 索引值例:List1.RemoveItem 2 Clear:清除列表框中所

44、有項(xiàng)目例如:List1.Clear 67(3)、重要事件列表框:Click、DblClick例5.9編寫一個(gè)能對(duì)列表框進(jìn)行項(xiàng)目添加、修改和刪除的應(yīng)用程序。 (1)在Form_Load事件中用AddItem方法添加若干項(xiàng)目(2)選定某項(xiàng)項(xiàng)目內(nèi)容和下標(biāo)自動(dòng)在Label1顯示(3)添加按鈕將Text1輸入的項(xiàng)目添加在列表框最后(4)刪除按鈕:對(duì)選定項(xiàng)目刪除(5)清除按鈕:清除列表框所有項(xiàng)目本章目錄Private Sub Form_Load() List1.AddItem 大學(xué)計(jì)算機(jī)基礎(chǔ),0 List1.AddItem 程序設(shè)計(jì),1 List1.AddItem C/C+程序設(shè)計(jì),2 List1.Add

45、Item 多媒體技術(shù)及應(yīng)用,3 List1.AddItem 數(shù)據(jù)庫技術(shù)及應(yīng)用,4 List1.AddItem Web技術(shù)及應(yīng)用,5End SubPrivate Sub List1_Click() Label1 = List1.Text & 下標(biāo)為: & List1.ListIndexEnd SubPrivate Sub Command1_Click() List1.AddItem Text1 Text1 = End SubPrivate Sub Command2_Click() List1.RemoveItem List1.ListIndexEnd SubPrivate Sub Command

46、3_Click() List1.ClearEnd Sub 例:在窗體上畫一個(gè)列表框和一個(gè)命令按鈕,其名稱分別為List1和Command1,然后編寫如下事件過程: Private Sub Form_Load() List1.AddItem Item 1“ List1.AddItem Item 2“ List1.AddItem Item 3“ End Sub Private Sub Command1_Click() List1.List(List1.ListCount) = AAAA“ End Sub 程序運(yùn)行后,單擊命令按鈕,其結(jié)果為A)把字符串“AAAA”添加到列表框中,但位置不能確定B)把

47、字符串“AAAA”添加到列表框的最后(即“Item 3”的后面)C)把列表框中原有的最后一項(xiàng)改為“AAAA”D)把字符串“AAAA”插入到列表框的最前面(即“Item 1”的前面) 例:在窗體上畫一個(gè)名稱為List1的列表框,一個(gè)名稱為Label1的標(biāo)簽,列表框中顯示若干個(gè)項(xiàng)目。當(dāng)單擊列表框中的某個(gè)項(xiàng)目時(shí),在標(biāo)簽中顯示被選中項(xiàng)目的內(nèi)容。下列能正確實(shí)現(xiàn)上述操作的程序是:A)Private Sub List1_Click() Label1.Caption = List1.ListIndexEnd SubB)Private Sub List1_Click() Label1.Name=List1.Li

48、stIndex End SubC) Private Sub List1_Click() Label1.Name=List1.Text End SubD) Private Sub List1_Click() Label1.Caption =List1.Text End Sub例: 在窗體上畫一個(gè)名稱為List1的列表框,為了對(duì)列表框中的每個(gè)項(xiàng)目都能進(jìn)行處理,應(yīng)使用的循環(huán)語句為A)For i=0 To List1.ListCount-1 NextB) For i=0 To List1.Count-1 NextC) For i=1 To List1.ListCount-1 NextD) For i=

49、1 To List1. Count-1 Next例. 設(shè)窗體上有一個(gè)列表框控件List1,且其中含有若干列表項(xiàng)。則以下能表示當(dāng)前被選中的列表項(xiàng)內(nèi)容的是A)List1.List B)List1.ListIndex C)List1.Index D)List1. Text 2. 組合框(ComboBox)重要屬性ComboBox 控件將 TextBox 控件和 ListBox 控件的特性結(jié)合在一起(1)可以在控件的文本框部分輸入信息,但必須通過AddItem方法將內(nèi)容添加到列表框(2)可在列表框選擇一項(xiàng),選中項(xiàng)目同時(shí)在文本框顯示ComboBox 控件有三種類型,由Style屬性確定。Style =0

50、:下拉式組合框(文本框+下拉列表框)Style = 1:簡單組合框(文本框+列表框)Style = 2:下拉式列表框(無文本框,只能顯示選擇不能輸入)其余屬性、方法、事件同ListBox例5.10編寫一個(gè)使用屏幕字體、字號(hào)的程序 (1) 屏幕字體通過Screen對(duì)象的Fonts字符數(shù)組獲得在Combo1顯示,用戶不能輸入采用下拉式列表框(2)字號(hào)通過程序輸入640磅偶數(shù),在Combo2顯示,用戶可以輸入奇數(shù),采用下拉式組合框Private Sub Form_Load() For i = 0 To Screen.FontCount-1 Combo1.AddItem Screen.Fonts(i)

51、 Next i For i = 6 To 40 Step 2 Combo2.AddItem i Next iEnd SubPrivate Sub Combo1_Click() Label1.FontName = Combo1.TextEnd SubPrivate Sub Combo2_Click() Label1.FontSize = Combo2.TextEnd SubPrivate Sub Combo2_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then Label1.FontSize = Combo2.Text End IfEnd Sub

52、例:窗體上有1個(gè)名稱為List1的列表框,1個(gè)Text1文本框,1個(gè)Label1、Caption屬性為“Sum“的標(biāo)簽,1個(gè)Command1、標(biāo)題為“計(jì)算”的按鈕。程序運(yùn)行后,把1100能夠被7整除的數(shù)添加到列表框中。單擊計(jì)算按鈕,則對(duì)List1中的數(shù)進(jìn)行累加求和,并在文本框中顯示計(jì)算結(jié)果如圖所示。能實(shí)現(xiàn)上述功能的程序請(qǐng)?zhí)羁?Private Sub Form_Load()For i=1 To 100If i Mod 7=0 ThenEnd IfNext iEnd SubPrivate Sub Command1_Click()Sum=0For i=0 To Sum=Sum+ Next iText

53、1.Text=SumEnd SubList1.AddItem iList1.ListCount-1List1.List(i)例. 設(shè)組合框Combo1中有3個(gè)項(xiàng)目,則以下能刪除最后一項(xiàng)的語句是A)Combo1.RemoveItem Text B)Combo1. RemoveItem 2 C)Combo1.RemoveItem 3 D)Combo1.RemoveItem Combo1.Listcount 例. 在窗體上畫一個(gè)列表框、一個(gè)命令按鈕和一個(gè)標(biāo)簽,分別為List1、Command1和Label1,通過屬性窗口把列表框中的項(xiàng)目設(shè)置為:“第一個(gè)項(xiàng)目”、“第二個(gè)項(xiàng)目“、”第三個(gè)項(xiàng)目“、”第四個(gè)

54、項(xiàng)目“。程序運(yùn)行后,在列表框中選擇一個(gè)項(xiàng)目,然后單擊命令按鈕,即可將所選擇的項(xiàng)目刪除,并在標(biāo)簽中顯示列表框當(dāng)前的項(xiàng)目數(shù),下面是實(shí)現(xiàn)上述功能的程序,請(qǐng)?zhí)羁铡?Private Sub Command1_Click()If List1.ListIndex = Then List1.RemoveItem Label1.Caption = Else MsgBox 請(qǐng)選擇要?jiǎng)h除的項(xiàng)目End If End Sub 0List1.ListIndex List1.ListCount例:在窗體上畫一個(gè)Combo1的組合框,畫Label1和Label2,屬性分別為“城市名稱”和空白的標(biāo)簽。程序運(yùn)行后當(dāng)在組合框中輸入

55、一個(gè)新項(xiàng)后按回車鍵時(shí),如果輸入的項(xiàng)在組合框的列表中不存在則自動(dòng)添加到組合框的列表中,并在Label2中 顯示“已成功添加輸入項(xiàng)”如圖所示:若存在,則在Label2中顯示“輸入項(xiàng)已在組合框中” 請(qǐng)?jiān)诳仗帉⒊绦蜓a(bǔ)充完整。Private Sub Combol_ (KeyAscii As integer) If KeyAscii13 Then For i0 To Combo1ListCount-1 If Combo1Text Then Label2Caption”輸入項(xiàng)己在組合框中” Exit Sub End lf Next i Label2Caption“已成功添加輸入項(xiàng)” Combo1 Combo

56、1Text End lf End SubKeyPressCombo1.List(i)AddItem例:如圖所示,在列表框List1中已經(jīng)有若干人的簡單信息,運(yùn)行時(shí)在Text1文本框(即“查找對(duì)象”右邊)輸入一個(gè)姓或姓名單擊“查找”按鈕,則在列表框中進(jìn)行查找,若找到,則把該人的信息顯示在Text2文本框中。若有多個(gè)匹配的列表項(xiàng),則只顯示第1個(gè)若未找到,則在Text2中顯示“查無此人”。請(qǐng)?zhí)羁铡?Private Sub Command1_Click() Dim k As Integer, n As Integer, found As Boolean found = False n = Len( )

57、 k = 0 Do While k List1.ListCount And Not found If Text1 = Left(List1.List(k), n) Then Text2 = found = True End If k = k + 1 Loop If Not found Then Text2 = 查無此人 End If End Subtext1.textlist1.list(k)例5.11使用列表框?qū)崿F(xiàn)排序、查找、刪除(1)在Form_Load事件中用AddItem方法在列表框中自動(dòng) 形成有序的數(shù)據(jù)項(xiàng)目(2)插入按鈕將Text1輸入的內(nèi)容插入在列表框中仍保持有序(3)查找刪除按鈕:要?jiǎng)h除的值由文本框輸入的值決定(4)刪除選定內(nèi)容按鈕:刪除列表框中選定的項(xiàng)目Private Sub Fo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論