




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第八章 數組與記錄 教學要求:掌握一維、二維數組的定義、引用、初始化,掌握靜態和動態數組及其差別,掌握數組的基本使用方法:數組元素的輸入、輸出和賦值等,掌握使用For Each.Next語句操作數組元素的方法;掌握控件數組的定義、建立和使用,掌握排序算法。掌握記錄類型及記錄數組的概念、記錄變量的初始化及引用。 知識點:數組的定義、引用、初始化;靜態和動態數組及其差別;For Each.Next語句;控件數組。熟練數組“遍歷”算法的設計規律,冒泡排序、快速排序算法,順序查找、有序表對分查找、字符查找算法。 內容導航:一、數組的概念(一)數組的定義在Visual Basic中,可以用4個語句來定義
2、數組,這4個語句格式相同,但適用范圍不一樣。Dim用在窗體模塊或標準模塊中,定義窗體或標準模塊數組;ReDim、 Static可用于過程中;Public 用在標準模塊中,定義全局數組。Visual Basic 提供兩種格式:第一種格式:一維數組 Dim 數組名(下標上界) As 類型名稱 二維數組 Dim 數組名(第一維下標上界,第二維下標上界) As 類型名稱第二種格式:Dim 數組名 (下界 To 上界,下界To上界)Dim 數組名 (下界 To 上界,下界To上界)(二)默認數組在Visual Basic中,允許定義默認數組。默認數組就是數據類型為Variant(默認)的數組。在一般情況
3、下,定義數組應指明其類型。二、動態數組(一)動態數組的定義動態數組以變量作為下標值,在程序運行過程中完成定義,通常分為兩步:首先在窗體層、標準模塊或過程中用Dim或Public聲明一個沒有下標的數組(括號不能省略),然后在過程中用 ReDim 語句定義帶下標的數組。ReDim 語句格式:ReDim Preserve 變量 ( 下標 ) As 類型(二)數組的清除和重定義數組一經定義,便在內存中分配了相應的存儲空間,其大小不能改變。有時需要清除數組的內容或對數組重新定義,其格式為:數組的清除:Erase數組名,數組名重定義:ReDim三、數組的基本操作(一)數組元素的輸入、輸出和復制1數組的引用
4、數組的引用通常是指對數組元素的引用,其方法是,在數組后面的括號中指定下標。2數組元素的輸入數組元素一般通過For循環語句及InputBox函數輸入,當數組較小,或只需要對數組中的指定元素賦值時,可以用賦值語句來實現數組元素的輸入,多維數組元素的輸入通過多重循環來實現3數組元素的輸出數組元素的輸出可以用Print方法來實現。4數組元素的復制單個數組元素可以像簡單變量一樣從一個數組復制到另一個數組,二維數組中的元素可以復制到另一個二維數組中的某個元素,也可以復制到一個一維數組中的某個元素,并且反之亦然(二)For EachNext語句For EachNext語句類似于ForNext語句,兩者都用來
5、執行指定重復次數的一組操作,但For EachNext語句專門用于數組或對象“集合”(本書不涉及集合),其一般格式為:For Each成員In 數組循環體Exit ForNext成員這里的“成員”是一個變體變量,它是為循環提供的,代表的是數組中的每個元素?!皵到M”是一個數組名,沒有括號和上下界。四、數組的初始化用 Array函數來給數組元素賦值,其格式為:數組變量名=Arra(數組元素值)注意,Array函數只適用于一維數組。即只能對一維數組進行初始化,不能對二維或多維數組進行初始化。五、控件數組(一)基本概念控件數組由一組相同類型的控件組成,這些控件共用一個相同的控件名,具有同樣的屬性設置。
6、數組中的每個控件都有唯一的索引號(IndexNumber),即下標,其所有元素的Name屬性必須相同??丶到M的每個元素都有一個與之關聯的下標,或稱索引(Index),下標值由Index屬性指定。Index屬性與控件數組中的某個元素有關(二)建立控件數組通過以下兩種方法來建立控件數組:第一種方法,步驟如下:(1)在窗體上畫出作為數組元素的各個控件;(2)單擊要包含到數組中的某個控件,將其激活;(3)在屬性窗口中選擇“(名稱)”屬性,并鍵入控件的名稱;(4)對每個要加到數組中的控件重復(2)、(3)步,鍵入與第(3)步中相同的名稱。當對第二個控件鍵入與第一個控件相同的名稱后,Visual Bas
7、ic將顯示一個對話框,詢問是否確實要建立控件數組。單擊“是”將建立控件數組,單擊“否”則放棄建立操作。第二種方法,步驟如下:(1)在窗體上畫出一個控件,將其激活;(2)執行“編輯”菜單中的“復制”命令(熱鍵為Ctrl+C),將該控件放入剪貼板;(3)執行“編輯”菜單中的“粘貼”命令(熱鍵為Ctrl+V),將顯示一個對話框,詢問是否建立控件數組;(4)單擊對話框中的“是”按鈕,窗體的左上角將出現一個控件,它就是控件數組的第二個因素,執行“編輯”菜單中的“粘貼”命令,或按熱鍵Ctrl+V,建立控件數組中的其他元素??丶到M建立后,只要改變一個控件的“Name”屬性值,并把Index屬性置為空(不是
8、0),就能把該控件從控件數組中刪除。控件數組中的控件執行相同的事件過程,通過Index屬性可以決定控件數組中的相應控件所執行的操作。 六、記錄(一)記錄類型和記錄類型變量1記錄類型定義格式:Private|Public Type 數據類型元素名(下標) As 類型名元素名(下標) As 類型名End Type2定義記錄類型變量記錄類型變量的定義和基本了類型變量的定義一樣,在引用是有所不同,用“變量元素”的格式應用記錄中的成員。(二)記錄類型變量的初始化及其引用1記錄類型變量的初始化用賦值語句或輸入語句對記錄各個成員分別賦值。2記錄類型變量的引用及其操作成員的引用: 記錄變量.成員名七、記錄數組
9、定義的一般格式:Dim 數組名(下界To上界) As 記錄名引用記錄數組元素的成員: 記錄數組名(下標).成員名 訓練:一、選擇題1如下數組聲明語句中正確的是_。A) Dim A(4 5) As IntegerB) Dim A(n,n) As IntegerC) Dim A(4,5) As IntegerD) Dim A4,5 As Integer3語句Option Base 1:Dim a(3,4)定義的數組所包含的數組元素的個數是_。A) 7B) 12C) 15D) 204要分配存放如下方陣的數據,正確的且最節約存儲空間的數組聲明語句是_。 1.1 2.2 3.3 4.4 5.5 6.6A
10、) Dim a(6) As SingleB) Dim a(2,3) As SingleC) Dim a(2 To 3,-3 To 1) As SingleD) Dim a(1,2) As Integer5設有數組聲明:Dim a(-2 To 4,3 To 6),則下面引用數組元素正確的是_。A) a(-2,3)B) a(5)C) a-2,4D) a(-1,7)6用下面語句定義的數組元素個數是_。Dim A(-3 To 5) As IntegerA) 6B) 7C) 8D) 97語句Dim arr(-3 To 5,2 To 6) As Integer定義的數組元素有_。A) 45B) 40C)
11、11D) 548以下程序輸出的結果是_。Option Base 1Private Sub Form_Click()Dim a,B(3,3)a=Array(1,2,3,4,5,6,7,8,9)For i=1 To 3For j=1 To 3B(i,j)=a(i*j)If(i>=j) Then print Tab(j*3);format(B(i,j),"#");Next jPrintNext iEnd SubA) 1 2 3 4 5 6 7 8 9B) 1 2 4 3 6 9C) 1 4 7 2 4 6 3 6 9D) 1 2 3 4 6 99在窗體上面畫一個命令按鈕,然
12、后編寫如下事件過程:Option Base 1Private Sub Command1_Click()Dim aa=Array(1,2,3,4)j=1For i=4 To 1 Step -1s=s+a(i)*jj=j*10Next iPrint sEnd Sub運行上面的程序,單擊命令按鈕,其輸出結果是_。A) 4321B) 12C) 34D) 123410在窗體上畫一個名稱為Text1的文本框和一個名稱為Command1的命令按鈕,然后編寫如下事件過程:Private Sub Command1_Click()Dim array1(10,10) As IntegerDim i,j As Int
13、egerFor i=1 To 3For j=2 To 4array1(i,j)=i+jNext jNext iText1.Text=array1(2,3)+array1(3,4)End Sub程序運行后,單擊命令按鈕,在文本框中顯示的值是_。A) 12B) 13C) 14D) 1511在窗體上畫一個名稱為Command1的命令按鈕,然后編寫如下事件過程:Private Sub Command1_Click()Dim i As Integer,j As IntegerDim a(10,10) As IntegerFor i=1 To 3For j=1 To 3a(i,j)=(i-1)*3+jPr
14、int a(i,j);Next jPrint Next iEnd Sub程序運行后,單擊命令按鈕,在窗體上顯示的值是_。A) 1 2 3 2 3 4 3 6 9B) 2 3 4 3 4 5 4 5 6C) 1 4 7 2 5 8 3 6 9D) 1 2 3 4 5 6 7 8 912設有如下程序:Option Base 1Private Sub Form_Click()Dim aDim i As Integera=Array(1,2,3,4,5,6,7,8,9)For i=0 To 3Print a(5-i);Next iEnd Sub程序運行后,單擊命令按鈕,在窗體上顯示的值是_。A) 5
15、4 3 2 B) 6 5 4 3C) 4 3 2 1 D) 7 6 5 413執行以下Command1的Click事件過程在窗體上顯示_。Option Base 1Private Sub Command1_Click()Dim aa=Array("a","b","c","d","e","f","g")Print a(1);a(3);a(5)End SubA) abcB) bdfC) aceD) 出錯14設有如下程序:Dim a(3,3) As Intege
16、rFor m=1 To 3For n=1 To 3a(m,n)=(m-1)*3+nNext nNext mFor m=2 To 3For n=1 To 2Print a(n,m);Next nNext m運行后輸出的結果是 _。A) 2 5 3 6B) 2 3 5 6C) 4 7 5 8D) 4 5 7 815下列程序段的執行結果為_。Dim A(4)n=3A(1)=1For k=0 To n-1For P=1 To k+1X=k+2-PA(X)=A(x)+A(x-1)If k<n-1 Then Exit ForPrint A(x)Next PNext kA) 1 2 1B) 1 2 3
17、C) 2 4 6D) 1 3 116有如下程序,運行后輸出的結果是_。Option Base 1Private Sub Command1_Click()Dim aj(1 To 10)For j=6 To 10aj(j)=j*2Next jPrint aj(1)+aj(j)End SubA) 5B) 20C) 22D) 顯示出錯信息17當發生Command1_Click事件,以下程序的輸出結果是_。Private Sub Command1_Click()Dim a a=Array(1,2,3,4,5)For i=1 To 4Print a(i)-a(i-1);Next iEnd SubA) 1
18、1 1 1 1B) 1 1 1 1C) 1 1 1D) 2 2 218當發生Command1_Click事件,以下程序的輸出結果是_。Private Sub Command1_Click()Dim i As IntegerDim a(10) As IntegerFor i=9 To 0 Step -1a(i)=10-iNext iPrint a(2);a(5);a(8)End SubA) 2 5 8B) 7 4 1C) 8 5 2D) 3 6 919下面關于控件數組與一般控件的敘述中正確的是_。A) 控件數組一定有1個以上同類型的控件組成,而一般控件只有一個控件。B) 控件數組的索引屬性值In
19、dex值為0,而一般控件的Index值為空。C) 控件數組的Index值為1,而一般控件的Index值為0。D) 控件數組的建立通過Dim語句聲明,而一般控件不需要聲明。20下面說法正確的是_。A) ReDim語句只能更改數組下標上界。B) ReDim語句只能更改數組下標下界。C) ReDim語句不能更改數組維數。D) ReDim語句可以更改數組維數。二、填空題1由Array函數建立的數組的類型必須是_。2Visual Basic的數組下標默認為_,可通過_語句使數組下標從1開始。3在窗體上畫一個命令按鈕,然后編寫如下事件過程:Private Sub Form_Click()Dim a(0 T
20、o 10)Dim p(1 To 3)K=0For I=1 To 4a(i)=I For j=1 To 3P(j)=a(j*j)Next jFor j=1 To 3K=K+p(j)*2Next jPrint kNext iEnd Sub程序運行后,單擊命令按鈕,輸出結果是_。4Visual Basic課程考試10道選擇題的正確答案依次為A、C、C、D、A、A、C、C、D、D,每題2分。下面的程序利用InputBox對話框輸入學生答案,計算出得分,當輸入字符E或e是可提前結束輸入。閱讀程序并填空。Option Base 1Private Sub Command1_Click()【 】a=Array
21、("A","C","C","D","A","A","C","C","D","D")score=0For i=1 To 10Str1$="請輸入考生第" & i & "題答案,輸入E結束"X$=【 】If X=a(i) Then score=score+2If 【 】Then Exit ForClsPrint "score="
22、;scoreNextEnd Sub5下面的程序實現矩陣的轉置(即行列互換)。閱讀程序并填空。Option Base 1Private Sub Command1_Click() m = InputBox("輸入行數"): n = InputBox("輸入列數") 【 】 a(m, n) As Integer, B(n, m) As Integer For i = 1 To m For j = 1 To n a(i, j) = Int(Rnd * 90) + 10 Next: Next For i = 1 To n For j = 1 To m B(i, j
23、) =【 】 Next: NextEnd Sub6下面的程序分別求方陣兩對角線元素之和。閱讀程序并填空。Option Base 1Private Sub Command1_Click()m=InputBox("輸入方陣的階數")ReDim a(m,n) As IntegerFor i=1 To mFor j=1 To ma(i,j)=Int(Rnd*90)+10Next : Nextp=0For i=1 To m【 】Nextq=0For i=1 To m【 】NextFor i=1 To mFor j=1 To mPrint a(i,j);NextPrint : Prin
24、tNext Print p;qEnd Sub7下列程序的輸出結果為_。Private Sub Command1_Click()Dim a(1 To 20)Dim iFor i=1 To 20a(i)=iNext iFor Each i In a()a(i)=20Next iPrint a(2)End Sub8下列程序的輸出結果為_。Private Sub Command1_Click()Dim a ReDim a(6)For j=1 To 5a(j)=j*jNext jPrint a(a(2)*a(3)-a(4)*2)+a(5)End Sub9下列程序是將具有10元素的數組A的元素倒序存放,即
25、第一個變為最后一個,第二個變為倒數第二個,完成下列程序。potion base 1Private Sub Backward(a()Dim i As Integer,Tmp As IntegerFor i=1 To 5Tmp=a(i)【 】【 】Next iEnd Sub10下面的程序的功能是求一維數組的最大值及其下標,閱讀程序并填空。Option Base 1Private Sub Form_Click()Dim a(10) As Integer,max_iFor i=1 To 10a(i)=InputBox("請輸入一個元素值")Next imax_i=【 】For i=
26、2 To 10If 【 】Then max_i=iNext iPrint a(max_i),max_iEnd Sub11下列程序的功能是對一個具有二十個元素的一為數組a按每行5個元素輸出,請在下劃線處填上適當的內容。Option Base 1Private Sub Command1_Click()Dim A(20) As IntegerFor i=1 To 20A(i)=i*i/2Next iFor i=1 To 20Print A(i),If 【 】ThenPrint End IfNext iEnd Sub12以下程序的功能是對二維數組a(3,4)按行輸出,請在下劃線處填上適當的內容。For
27、 i=1 To 3For j=1 To 4Print a(i,j),Next j【 】Next I13控件數組中的各個元素由_屬性決定。14控件數組共用事件和方法,區分事件是由哪一個元素產生的,可用過引用控件數組事件過程的參數_來實現。三、程序閱讀題1寫出下面程序的輸出結果。Option base 1Private Sub Command1_Click()Dim a(10),p(3) As Integerk=5For i=1 To 10a(i)=iNext iFor i=1 To 3p(i)=a(i*i)Next iFor i=1 To 3k=k+p(i)*2Next iPrint kEnd
28、Sub2在窗體上畫一個命令按鈕(其Name屬性為Command1),編寫如下代碼,寫出程序運行后,單擊命令按鈕,輸出的結果。Option Base 1Private Sub Command1_Click()Dim a(4,4)For i=1 To 4For j=1 To 4a(i,j)=(i-1)*3+jNext jNext iFor i=3 To 4For j=3 To 4Print a(i,j);Next jPrintNext iEnd Sub3寫出下面程序的運行結果。Option Base 1Private Sub Text1_KeyPress(KeyAscii As Integer)a
29、=Array(237,126,87,48,498)m1=a(1)m2=1If KeyAscii=13 ThenFor i=2 To 5If a(i)>m1 Thenm1=a(i)m2=iEnd IfNext iEnd IfPrint m1Print m2End Sub4寫出當發生Command1_Click事件后,下面程序的運行結果。Private Sub Command1_Click()Dim a(10) As Integer, p(2) As Integer,i As integer,k As Integerk=5For i=0 To 9a(i)=iNext iFor i=0 To
30、2p(i)=a(i*(i+1)Next iFor i=0 To 2k=k+p(i)*2Next iPrint kEnd Sub5寫出當發生Command1_Click事件后,下面程序的運行結果。Private Sub Command1_Click()Dim y As Integer,i As IntegerDim a(8) As Integery=18 : i=0Do a(i)=y Mod 2i=i+1y=y2Loop Until y<1For j=i-1 To 0 Step -1Print a(j)Next jEnd Sub6寫出當發生Command1_Click事件后,下面程序的運行
31、結果。Private Sub Command1_Click()Dim B(2,2) As IntegerDim i,k,t As IntegerFor i=0 To 2For j=0 To 2B(i,j)=jNext jNextit=1For i=0 To 2For j=i To 2t=t+B(i,B(j,j)Next jNext i Print tEnd Sub7寫出當發生Command1_Click事件后,下面程序的運行結果。Option Base 1Private Sub Command1_Click()Dim aa(4,4) As IntegerDim i,s As Integers=
32、0For i=1 To 4For j=1 To 4aa(i,j)=(i-1)*4+j*2Next jNext iFor i=1 To 4s=s+aa(i,1)Next iPrint sEnd Sub8寫出下面程序的運行結果。Private Sub Command1_Click()Dim a(1 To 10)Dim p(1 To 4)k=5For i=1 To 10a(i)=i+1Next iFor i=1 To 4p(i)=a(i*2)Next iFor i=1 To 4k=k+p(i)*2Next iPrint kEnd Sub四、程序填空題1下面程序的功能是用”冒泡”法將數組a中的10個整
33、數按序排列,閱讀程序并填空。Option Base 1Private Sub Command1_Click()Dim aa=Array(678,45,324,528,439,387,87,875,273,823)For i=【1 】For j=【2 】If a(j) 【3 】a(j+1) Thena1=a(j)a(j)=a(j+1)a(j+1)=a1End IfNext jNext iFor i=1 To 10Print a(i)Next iEnd Sub2以下程序代碼使用二維數租A表示矩陣實現單擊命令按鈕Command1時使矩陣的兩條對角線上的元素值全為1,其余元素值全為0,閱讀程序并填空。
34、Option Base 1Private Sub Command1_Click()Dim A(4,4)For i=1 To 4For j=1 To 4A【1 】=0Next jA【2 】=1A【3 】=1Next iFor i=1 To 4For j=1 To 4Print A(i,j);Next jPrintNext iEnd Sub3以下程序的功能是從鍵盤上輸入3行4列的數組,求出它的每行最大值及其下標,閱讀程序并填空。Option base 1Private Sub Form_Click()Dim a(3,4) As IntegerDim i As Integer,j As Intege
35、rDim max(3) As Integer,col(3) As IntegerFor i=1 To 3For j=1 To 4a(i,j)=InputBox("請輸入一個元素值")Next jNext iFor i=1 To 3max(i)=a(i,1) : 【1 】For j=2 To 4If max(i)<a(i,j) Thenmax(i)=a(i,j) : 【2 】End IfNext iPrint "數組元素值為","最大值","最大值下標"For i=1 To 3For j=1 To 4【3 】Next j【4 】Next iEnd Sub4下面程序的功能是對具有10個元素的數組a中的元素進行選擇法排序,閱讀程序并填空。Option base 1Private Sub Form_Click()Dim a(10) As Integer,i As Integer,j As IntegerDim k As IntegerFor i=1 To 10a(i)=InputBox("請輸入一個數組元素值")Next iFor i=1 To 9【1 】For j=i+1 To 10If 【2 】Then k=jNext jIf k<>i Th
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 考研保過協議包含全程輔導與心理支持合同
- 助浴承包合同協議書
- 關注熱點中級會計實務考試試題及答案分享
- 2025年新零售下實體書店如何實現數字化轉型與品牌差異化競爭策略研究報告
- 社會學的研究工具與方法試題及答案
- 商用租房合同協議書
- 合同糾紛仲裁協議書
- 印刷材料保密協議書
- 勞動合同棄簽協議書
- 和平解決事故協議書
- 普惠金融大學試題及答案
- 2025年公共營養師考試的重點知識回顧試題及答案
- 帶狀皰疹知識
- 2025-2030納米銀行業市場深度調研及前景趨勢與投資研究報告
- 全媒體運營師運營管理技能試題及答案
- 職業教育“雙師型”教師隊伍建設路徑與質量提升研究
- 青年紅色筑夢之旅活動
- 高中主題班會 常規管理促狀態規范月課件-高二上學期主題班會
- 拓撲結構特征提取-深度研究
- 家具鑒賞知到智慧樹章節測試課后答案2024年秋東北林業大學
- 統編版語文七年級下第18課《井岡翠竹》公開課一等獎創新教學設計
評論
0/150
提交評論