VB_数组与记录习题

2018-11-08 14:14

第八章 数组与记录

教学要求:

掌握一维、二维数组的定义、引用、初始化,掌握静态和动态数组及其差别,掌握数组的基本使用方法:数组元素的输入、输出和赋值等,掌握使用For Each...Next语句操作数组元素的方法;掌握控件数组的定义、建立和使用,掌握排序算法。掌握记录类型及记录数组的概念、记录变量的初始化及引用。

知识点:

数组的定义、引用、初始化;静态和动态数组及其差别;For Each...Next语句;控件数组。 熟练数组“遍历”算法的设计规律,冒泡排序、快速排序算法,顺序查找、有序表对分查找、字符查找算法。

内容导航:

一、数组的概念 (一)数组的定义 在Visual Basic中,可以用4个语句来定义数组,这4个语句格式相同,但适用范围不一样。Dim用在窗体模块或标准模块中,定义窗体或标准模块数组;ReDim、 Static可用于过程中;Public 用在标准模块中,定义全局数组。 Visual Basic 提供两种格式: 第一种格式:

一维数组 Dim 数组名(下标上界) As 类型名称

二维数组 Dim 数组名(第一维下标上界,第二维下标上界) As 类型名称 第二种格式:

Dim 数组名 ([下界 To] 上界[,[下界To]上界]……) Dim 数组名 ([下界 To[ 上界[,[下界To]上界]……) (二)默认数组 在Visual Basic中,允许定义默认数组。默认数组就是数据类型为Variant(默认)的数组。在一般情况下,定义数组应指明其类型。 二、动态数组

(一)动态数组的定义 动态数组以变量作为下标值,在程序运行过程中完成定义,通常分为两步:首先在窗体层、标准模块或过程中用Dim或Public声明一个没有下标的数组(括号不能省略),然后在过程中用 ReDim 语句定义带下标的数组。 ReDim 语句格式:

ReDim [ Preserve ] 变量 ( 下标 ) As 类型 (二)数组的清除和重定义 数组一经定义,便在内存中分配了相应的存储空间,其大小不能改变。有时需要清除数组的内容或对数组重新定义,其格式为: 数组的清除:Erase数组名[,数组名]…… 重定义:ReDim

三、数组的基本操作

(一)数组元素的输入、输出和复制 1.数组的引用 数组的引用通常是指对数组元素的引用,其方法是,在数组后面的括号中指定下标。 2.数组元素的输入 数组元素一般通过For循环语句及InputBox函数输入,当数组较小,或只需要对数组中的指定元素赋值时,可以用赋值语句来实现数组元素的输入,多维数组元素的输入通过多重循环来实现

3.数组元素的输出 数组元素的输出可以用Print方法来实现。 4.数组元素的复制 单个数组元素可以像简单变量一样从一个数组复制到另一个数组,二维数组中的元素可以复制到另一个二维数组中的某个元素,也可以复制到一个一维数组中的某个元素,并且反之亦然

(二)For Each…Next语句 For Each…Next语句类似于For…Next语句,两者都用来执行指定重复次数的一组操作,但For Each…Next语句专门用于数组或对象“集合”(本书不涉及集合),其一般格式为: For Each成员In 数组 循环体 [Exit For] ……

Next[成员] 这里的“成员”是一个变体变量,它是为循环提供的,代表的是数组中的每个元素。“数组”是一个数组名,没有括号和上下界。 四、数组的初始化 用 Array函数来给数组元素赋值,其格式为: 数组变量名=Arra(数组元素值) 注意,Array函数只适用于一维数组。即只能对一维数组进行初始化,不能对二维或多维数组进行初始化。 五、控件数组 (一)基本概念 控件数组由一组相同类型的控件组成,这些控件共用一个相同的控件名,具有同样的属性设置。数组中的每个控件都有唯一的索引号(IndexNumber),即下标,其所有元素的Name属性必须相同。 控件数组的每个元素都有一个与之关联的下标,或称索引(Index),下标值由Index属性指定。Index属性与控件数组中的某个元素有关 (二)建立控件数组 通过以下两种方法来建立控件数组:

第一种方法,步骤如下:

(1)在窗体上画出作为数组元素的各个控件; (2)单击要包含到数组中的某个控件,将其激活;

(3)在属性窗口中选择“(名称)”属性,并键入控件的名称; (4)对每个要加到数组中的控件重复(2)、(3)步,键入与第(3)步中相同的名称。 当对第二个控件键入与第一个控件相同的名称后,Visual Basic将显示一个对话框,询问是否确实要建立控件数组。单击“是”将建立控件数组,单击“否”则放弃建立操作。 第二种方法,步骤如下:

(1)在窗体上画出一个控件,将其激活;

(2)执行“编辑”菜单中的“复制”命令(热键为Ctrl+C),将该控件放入剪贴板; (3)执行“编辑”菜单中的“粘贴”命令(热键为Ctrl+V),将显示一个对话框,询问是否建立控件数组;

(4)单击对话框中的“是”按钮,窗体的左上角将出现一个控件,它就是控件数组的第二个因素,执行“编辑”菜单中的“粘贴”命令,或按热键Ctrl+V,建立控件数组中的其他元素。 控件数组建立后,只要改变一个控件的“Name”属性值,并把Index属性置为空(不是0),就能把该控件从控件数组中删除。控件数组中的控件执行相同的事件过程,通过Index属性可以决定控件数组中的相应控件所执行的操作。 六、记录

(一)记录类型和记录类型变量 1.记录类型定义格式:

[Private|Public] Type 数据类型 元素名[(下标)] As 类型名 元素名[(下标)] As 类型名 … End Type

2.定义记录类型变量 记录类型变量的定义和基本了类型变量的定义一样,在引用是有所不同,用“变量元素”的格式应用记录中的成员。

(二)记录类型变量的初始化及其引用 1.记录类型变量的初始化 用赋值语句或输入语句对记录各个成员分别赋值。 2.记录类型变量的引用及其操作 成员的引用: 记录变量.成员名 七、记录数组

定义的一般格式:Dim 数组名([下界]To上界) As 记录名 引用记录数组元素的成员: 记录数组名(下标).成员名

训练:

一、选择题

1.如下数组声明语句中正确的是________。

A) Dim A(4 5) As Integer B) Dim A(n,n) As Integer C) Dim A(4,5) As Integer D) Dim A[4,5] As Integer

3.语句Option Base 1:Dim a(3,4)定义的数组所包含的数组元素的个数是________。 A) 7 B) 12 C) 15 D) 20

4.要分配存放如下方阵的数据,正确的且最节约存储空间的数组声明语句是________。 1.1 2.2 3.3 4.4 5.5 6.6

A) Dim a(6) As Single B) Dim a(2,3) As Single

C) Dim a(2 To 3,-3 To –1) As Single D) Dim a(1,2) As Integer

5.设有数组声明:Dim a(-2 To 4,3 To 6),则下面引用数组元素正确的是________。 A) a(-2,3)B) a(5) C) a[-2,4] D) a(-1,7)

6.用下面语句定义的数组元素个数是________。 Dim A(-3 To 5) As Integer A) 6 B) 7 C) 8 D) 9

7.语句Dim arr(-3 To 5,2 To 6) As Integer定义的数组元素有________。 A) 45 B) 40 C) 11 D) 54

8.以下程序输出的结果是________。 Option Base 1

Private Sub Form_Click() Dim a,B(3,3) a=Array(1,2,3,4,5,6,7,8,9) For i=1 To 3 For j=1 To 3 B(i,j)=a(i*j) If(i>=j) Then print Tab(j*3);format(B(i,j),\ Next j Print Next i End Sub A) 1 2 3 4 5 6 7 8 9 B) 1 2 4 3 6 9 C) 1 4 7 2 4 6 3 6 9 D) 1 2 3 4 6 9

9.在窗体上面画一个命令按钮,然后编写如下事件过程: Option Base 1

Private Sub Command1_Click() Dim a a=Array(1,2,3,4)

j=1 For i=4 To 1 Step -1 s=s+a(i)*j j=j*10 Next i Print s End Sub

运行上面的程序,单击命令按钮,其输出结果是________。 A) 4321 B) 12 C) 34 D) 1234

10.在窗体上画一个名称为Text1的文本框和一个名称为Command1的命令按钮,然后编写如下事件过程:

Private Sub Command1_Click() Dim array1(10,10) As Integer Dim i,j As Integer For i=1 To 3 For j=2 To 4 array1(i,j)=i+j Next j Next i Text1.Text=array1(2,3)+array1(3,4) End Sub 程序运行后,单击命令按钮,在文本框中显示的值是________。 A) 12 B) 13 C) 14 D) 15

11.在窗体上画一个名称为Command1的命令按钮,然后编写如下事件过程: Private 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 i End Sub 程序运行后,单击命令按钮,在窗体上显示的值是________。 A) 1 2 3 2 3 4 3 6 9 B) 2 3 4 3 4 5 4 5 6 C) 1 4 7 2 5 8

3 6 9 D) 1 2 3 4 5 6 7 8 9

12.设有如下程序: Option Base 1

Private 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 i End Sub 程序运行后,单击命令按钮,在窗体上显示的值是________。 A) 5 4 3 2 B) 6 5 4 3 C) 4 3 2 1 D) 7 6 5 4

13.执行以下Command1的Click事件过程在窗体上显示________。 Option Base 1

Private Sub Command1_Click() Dim a a=Array(\ Print a(1);a(3);a(5) End Sub

A) abc B) bdf C) ace D) 出错 14.设有如下程序: Dim a(3,3) As Integer For m=1 To 3 For n=1 To 3 a(m,n)=(m-1)*3+n Next n Next m

For m=2 To 3 For n=1 To 2 Print a(n,m); Next n Next m 运行后输出的结果是 ________。 A) 2 5 3 6 B) 2 3 5 6 C) 4 7 5 8 D) 4 5 7 8 15.下列程序段的执行结果为________。 Dim A(4) n=3 A(1)=1

For k=0 To n-1 For P=1 To k+1

X=k+2-P A(X)=A(x)+A(x-1) If k

A) 1 2 1 B) 1 2 3 C) 2 4 6 D) 1 3 1

16.有如下程序,运行后输出的结果是________。 Option Base 1

Private Sub Command1_Click() Dim aj(1 To 10) For j=6 To 10 aj(j)=j*2 Next j Print aj(1)+aj(j) End Sub

A) 5 B) 20 C) 22 D) 显示出错信息

17.当发生Command1_Click事件,以下程序的输出结果是________。 Private Sub Command1_Click() Dim a a=Array(1,2,3,4,5) For i=1 To 4 Print a(i)-a(i-1); Next i End Sub

A) 1 1 1 1 1 B) 1 1 1 1 C) 1 1 1 D) 2 2 2

18.当发生Command1_Click事件,以下程序的输出结果是________。 Private Sub Command1_Click() Dim i As Integer Dim a(10) As Integer For i=9 To 0 Step -1 a(i)=10-i Next i Print a(2);a(5);a(8) End Sub

A) 2 5 8 B) 7 4 1 C) 8 5 2 D) 3 6 9

19.下面关于控件数组与一般控件的叙述中正确的是________。

A) 控件数组一定有1个以上同类型的控件组成,而一般控件只有一个控件。 B) 控件数组的索引属性值Index值为0,而一般控件的Index值为空。 C) 控件数组的Index值为1,而一般控件的Index值为0。

D) 控件数组的建立通过Dim语句声明,而一般控件不需要声明。 20.下面说法正确的是________。

A) ReDim语句只能更改数组下标上界。 B) ReDim语句只能更改数组下标下界。

C) ReDim语句不能更改数组维数。 D) ReDim语句可以更改数组维数。 二、填空题

1.由Array函数建立的数组的类型必须是________。

2.Visual Basic的数组下标默认为________,可通过________________语句使数组下标从1开始。

3.在窗体上画一个命令按钮,然后编写如下事件过程: Private Sub Form_Click() Dim a(0 To 10) Dim p(1 To 3) K=0

For I=1 To 4 a(i)=I

For j=1 To 3 P(j)=a(j*j) Next j For j=1 To 3 K=K+p(j)*2 Next j Print k Next i End Sub

程序运行后,单击命令按钮,输出结果是______________。

4.Visual Basic课程考试10道选择题的正确答案依次为A、C、C、D、A、A、C、C、D、D,每题2分。下面的程序利用InputBox对话框输入学生答案,计算出得分,当输入字符E或e是可提前结束输入。阅读程序并填空。 Option Base 1

Private Sub Command1_Click() 【 】 a=Array(\ score=0 For i=1 To 10 Str1$=\请输入考生第\题答案,输入E结束\ X$=【 】 If X=a(i) Then score=score+2 If 【 】Then Exit For Cls Print \ Next End Sub

5.下面的程序实现矩阵的转置(即行列互换)。阅读程序并填空。 Option Base 1

Private Sub Command1_Click()

m = 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) =【 】 Next: Next End Sub

6.下面的程序分别求方阵两对角线元素之和。阅读程序并填空。 Option Base 1

Private Sub Command1_Click() m=InputBox(\输入方阵的阶数\ ReDim a(m,n) As Integer For i=1 To m For j=1 To m a(i,j)=Int(Rnd*90)+10 Next : Next p=0 For i=1 To m 【 】 Next q=0 For i=1 To m 【 】 Next For i=1 To m For j=1 To m Print a(i,j); Next Print : Print Next Print p;q End Sub

7.下列程序的输出结果为________。 Private Sub Command1_Click() Dim a(1 To 20) Dim i For i=1 To 20 a(i)=i Next i For Each i In a() a(i)=20

Next i Print a(2) End Sub

8.下列程序的输出结果为________。 Private Sub Command1_Click() Dim a ReDim a(6) For j=1 To 5 a(j)=j*j Next j Print a(a(2)*a(3)-a(4)*2)+a(5) End Sub

9.下列程序是将具有10元素的数组A的元素倒序存放,即第一个变为最后一个,第二个变为倒数第二个,完成下列程序。 potion base 1

Private Sub Backward(a()) Dim i As Integer,Tmp As Integer For i=1 To 5 Tmp=a(i) 【 】 【 】 Next i End Sub

10.下面的程序的功能是求一维数组的最大值及其下标,阅读程序并填空。 Option Base 1

Private Sub Form_Click() Dim a(10) As Integer,max_i For i=1 To 10 a(i)=InputBox(\请输入一个元素值\ Next i max_i=【 】 For i=2 To 10 If 【 】Then max_i=i Next i Print a(max_i),max_i End Sub

11.下列程序的功能是对一个具有二十个元素的一为数组a按每行5个元素输出,请在下划线处填上适当的内容。 Option Base 1

Private Sub Command1_Click() Dim A(20) As Integer For i=1 To 20 A(i)=i*i/2 Next i

For i=1 To 20 Print A(i), If 【 】Then Print End If Next i End Sub

12.以下程序的功能是对二维数组a(3,4)按行输出,请在下划线处填上适当的内容。 For i=1 To 3 For j=1 To 4 Print a(i,j), Next j 【 】 Next I

13.控件数组中的各个元素由________属性决定。

14.控件数组共用事件和方法,区分事件是由哪一个元素产生的,可用过引用控件数组事件过程的参数________来实现。 三、程序阅读题

1.写出下面程序的输出结果。 Option base 1

Private Sub Command1_Click() Dim a(10),p(3) As Integer k=5 For i=1 To 10 a(i)=i Next i For i=1 To 3 p(i)=a(i*i) Next i For i=1 To 3 k=k+p(i)*2 Next i Print k End Sub 2.在窗体上画一个命令按钮(其Name属性为Command1),编写如下代码,写出程序运行后,单击命令按钮,输出的结果。 Option Base 1

Private Sub Command1_Click() Dim a(4,4) For i=1 To 4 For j=1 To 4 a(i,j)=(i-1)*3+j Next j Next i

For i=3 To 4 For j=3 To 4 Print a(i,j); Next j Print Next i End Sub

3.写出下面程序的运行结果。 Option Base 1

Private Sub Text1_KeyPress(KeyAscii As Integer) a=Array(237,126,87,48,498) m1=a(1) m2=1 If KeyAscii=13 Then For i=2 To 5 If a(i)>m1 Then m1=a(i) m2=i End If Next i End If Print m1 Print m2 End Sub

4.写出当发生Command1_Click事件后,下面程序的运行结果。 Private Sub Command1_Click() Dim a(10) As Integer, p(2) As Integer,i As integer,k As Integer k=5 For i=0 To 9 a(i)=i Next i For i=0 To 2 p(i)=a(i*(i+1)) Next i For i=0 To 2 k=k+p(i)*2 Next i Print k End Sub

5.写出当发生Command1_Click事件后,下面程序的运行结果。 Private Sub Command1_Click() Dim y As Integer,i As Integer Dim a(8) As Integer y=18 : i=0

Do a(i)=y Mod 2 i=i+1 y=y\\2 Loop Until y<1 For j=i-1 To 0 Step -1 Print a(j) Next j End Sub

6.写出当发生Command1_Click事件后,下面程序的运行结果。 Private Sub Command1_Click() Dim B(2,2) As Integer Dim i,k,t As Integer For i=0 To 2 For j=0 To 2 B(i,j)=j Next j Nexti t=1 For i=0 To 2 For j=i To 2 t=t+B(i,B(j,j)) Next j Next i Print t End Sub

7.写出当发生Command1_Click事件后,下面程序的运行结果。 Option Base 1

Private Sub Command1_Click() Dim aa(4,4) As Integer Dim i,s As Integer s=0 For i=1 To 4 For j=1 To 4 aa(i,j)=(i-1)*4+j*2 Next j Next i For i=1 To 4 s=s+aa(i,1) Next i Print s End Sub

8.写出下面程序的运行结果。 Private Sub Command1_Click()

Dim a(1 To 10) Dim p(1 To 4) k=5 For i=1 To 10 a(i)=i+1 Next i For i=1 To 4 p(i)=a(i*2) Next i For i=1 To 4 k=k+p(i)*2 Next i Print k End Sub

四、程序填空题

1.下面程序的功能是用”冒泡”法将数组a中的10个整数按序排列,阅读程序并填空。 Option Base 1

Private Sub Command1_Click() Dim a a=Array(678,45,324,528,439,387,87,875,273,823) For i=【1 】 For j=【2 】 If a(j) 【3 】a(j+1) Then a1=a(j) a(j)=a(j+1) a(j+1)=a1 End If Next j Next i For i=1 To 10 Print a(i) Next i End Sub 2.以下程序代码使用二维数租A表示矩阵实现单击命令按钮Command1时使矩阵的两条对角线上的元素值全为1,其余元素值全为0,阅读程序并填空。 Option Base 1

Private Sub Command1_Click() Dim A(4,4) For i=1 To 4 For j=1 To 4 A【1 】=0 Next j A【2 】=1 A【3 】=1

Next i For i=1 To 4 For j=1 To 4 Print A(i,j); Next j Print Next i End Sub

3.以下程序的功能是从键盘上输入3行4列的数组,求出它的每行最大值及其下标,阅读程序并填空。 Option base 1

Private Sub Form_Click() Dim a(3,4) As Integer Dim i As Integer,j As Integer Dim max(3) As Integer,col(3) As Integer For i=1 To 3 For j=1 To 4 a(i,j)=InputBox(\请输入一个元素值\ Next j Next i For i=1 To 3 max(i)=a(i,1) : 【1 】 For j=2 To 4 If max(i)

Private Sub Form_Click() Dim a(10) As Integer,i As Integer,j As Integer Dim k As Integer For i=1 To 10 a(i)=InputBox(\请输入一个数组元素值\ Next i For i=1 To 9

【1 】 For j=i+1 To 10 If 【2 】Then k=j Next j If k<>i Then t=a(k) : 【3 】 : a(i)=t End If Next i For i=1 To 10 Print a(i); Next i End Sub 5.以下程序的功能是把一个具有三行四列的A矩阵和一个具有四行三列的B矩阵相乘的结果存放到C矩阵中,阅读程序并填空。 Option Base 1

Private Sub Command1_Click() Dim a(3,4) As Integer,b(4,3) As Integer Dim c(3,3) As Integer,i As Integer,j As Integer,k As Integer For i=1 To 3 For j=1 To 4 a(i,j)=i+j Next j Next i For i=1 To 4 For j=1 To 3 b(i,j)=i*j Next j Next i For i=1 To 3 For j=1 To 3 For k=1 To 4 c(i,j)= 【1 】 Next k Next j Next i For i=1 To 3 For j=1 To 3 Print c(i,j), Next j 【2 】 Next i End Sub 五、编程题

1.编程实现数组插入操作,通过InputBox函数输入的一个数插入到按递减的有序数列中,

插入后的序列仍有序。

2.编程删除具有10个元素数组中指定位置的元素,并输出删除后的结果。 3.编程用二分查找法在已排好序10个元素的数组中查找输入的数,如果找在窗体上输出该数的下标,否则输出“没有找到”

4.编程用冒泡法对6个元素的数组a进行从小到大排序。

第九章 数组与记录

一、选择题 1.C 2.D 3.B 4.C 5.A 6. B 7.A 8.B 9.D 10.A 11.D 12.A 13.C 14.A 15.A 16.D 17.B 二、填空题 1.变体类型

2.0 opting base 1 3.2 4 6 16

4.Dim a As Variant InputBox(str1) x = \5.ReDim a(j, i)

6.p = a(i, i) + p q = a(i, m + 1 - i) + q 7.20 8.41

9.a(i)=a(10+1-i) a(10+1-i)=tmp 10.1 a(i) > a(max_i) 11.i Mod 5 = 0 12.Print 13.index 14.index

三、程序阅读题 1.33 2.9 10 12 13 3.495 5 4.21 5.1 0 0 1 0 6.9 7.32 8.53

四、程序填空题

1.1 to 9 1 to 10-i > 2.(i,j) (i,i) (i,4-i+1)

3.col(i)=1 col(i)=j Print a(i, j), Print max(i), col(i)

18.C

19.A

20.D

4.k = i a(j) < a(k) a(k) = a(i) 5.c(i, j) + a(i, k) * b(k, j) Print


VB_数组与记录习题.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:塑料管体项目可行性研究报告(发改立项备案+2013年最新案例范文)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: