VB数组与记录教学练习题_第1页
VB数组与记录教学练习题_第2页
VB数组与记录教学练习题_第3页
VB数组与记录教学练习题_第4页
VB数组与记录教学练习题_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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成员这里的“成员”是一个变体变量,它是为循环提供的,代表的是数组中的每个元素。“数组”是一个数组名,没有括号和上下界。四、数组的初始化用 Array函数来给数组元素赋值,其格式为:数组变量名=Arra(数组元素值)注意,Array函数只适用于一维数组。即只能对一维数组进行初始化,不能对二维或多维数组进行初始化。五、控件数组(一)基本概念控件数组由一组相同类型的控件组成,这些控件共用一个相同的控件名,具有同样的属性设置。

6、数组中的每个控件都有唯一的索引号(IndexNumber),即下标,其所有元素的Name属性必须相同。控件数组的每个元素都有一个与之关联的下标,或称索引(Index),下标值由Index属性指定。Index属性与控件数组中的某个元素有关(二)建立控件数组通过以下两种方法来建立控件数组:第一种方法,步骤如下:(1)在窗体上画出作为数组元素的各个控件;(2)单击要包含到数组中的某个控件,将其激活;(3)在属性窗口中选择“(名称)”属性,并键入控件的名称;(4)对每个要加到数组中的控件重复(2)、(3)步,键入与第(3)步中相同的名称。当对第二个控件键入与第一个控件相同的名称后,Visual Bas

7、ic将显示一个对话框,询问是否确实要建立控件数组。单击“是”将建立控件数组,单击“否”则放弃建立操作。第二种方法,步骤如下:(1)在窗体上画出一个控件,将其激活;(2)执行“编辑”菜单中的“复制”命令(热键为Ctrl+C),将该控件放入剪贴板;(3)执行“编辑”菜单中的“粘贴”命令(热键为Ctrl+V),将显示一个对话框,询问是否建立控件数组;(4)单击对话框中的“是”按钮,窗体的左上角将出现一个控件,它就是控件数组的第二个因素,执行“编辑”菜单中的“粘贴”命令,或按热键Ctrl+V,建立控件数组中的其他元素。控件数组建立后,只要改变一个控件的“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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论