第5章 数组和自定义类型

更新时间:2024-06-09 18:04:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第5章 数组和用户自定义类型

一. 例题与解析

(1)在窗体上画一个名称为Command1的命令按钮,然后编写如下代码: Option Base 1

Private Sub Command1_Click()

d = 0: c = 10

x = Array(10, 12, 21, 32, 24) For i = 1 To 5 If x(i) > c Then

d = d + x(i) c = x(i) Else

d = d - c End If Next i Print d End Sub

程序运行后,单击命令按钮,则窗体上的输出结果为 。

A)89 B)99 C)23 D)77 【答案】C

【解析】语句Option Base 1使得数组的下标从1开始,因此,语句x = Array(10, 12, 21, 32, 24)使得数组x各元素的值分别为:x(1)=10,x(2)=12,x(3)=21,x(4)=32,x(5)=24。当i为1时,x(i)>c的值为假,执行语句d=d-c,使得d的值为-10;i为2时,x(i)>c的值为真,执行语句d=d+x(i)和c=x(i),使得d和c的值分别为2和12;i为3时,x(i)>c的值为真,执行语句d=d+ x(i)和c=x(i),使得d和c的值分别为23和21; i为4时,x(i)>c的值为真,执行语句d=d+x(i)和c=x(i),使得d和c的值分别为55和32; i为5时,x(i)>c的值为假,执行语句d=d-c,使得d的值为55-32=23。

(2)在窗体画一个名称为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 【答案】A

【解析】根据程序,i=1时,j的值分别为2、3、4,则array(1,2)=3,array(1,3)=4,array(1,4)=5;i=2时,j的值分别为2、3、4,则array(2,2)=4,array(2,3)=5,array(2,4)=6;i=3时,j的值分别为2、3、4,则array(3,2)=5,array(3,3)=6,array(3,4)=7。因此文本框内显示的值应该为12。

(3)设有如下程序:

Private Sub Command1_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 End Sub

程序运行后,单击命令按钮,则在窗体上显示的是 。 A)4 3 2 1 B)5 4 3 2 C)6 5 4 3 D)7 6 5 4 【答案】C

【解析】数组a初始化后,数组各元素的值分别是: a(0)=1,a(1)=2,a(2)=3,a(3)=4,a(4)=5,a(5)=6,a(6)=7,a(7)=8,a(8)=9。 For循环内的Print语句在同一行输出元素a(5)、a(4)、a(3)、a(2)的值,即6、5、4、3。

(4)用下面语句定义的数组的元素个数是 。

Dim A(-3 To 5) As Integer A)6 B)7 C)8 D)9 【答案】D 【解析】在声明数组的同时指定数组下标下界(如本例的-3)和下标上界(如本例的5),则数组A的元素分别是A(-3)、A(-2)、A(-1)、A(0)、A(1)、A(2)、A(3)、A(4)、A(5),共9个元素。

(5)设有如下数组声明语句,则下列对数组元素的引用中错误的是 。 Dim A(5) A)A(0)=1.57 B)A(6)=12 C)A(5)=\ D)A(1)=True 【答案】B

【解析】在声明数组时,没有指定数组下标下界,系统默认的下界值是0,则数组A的元素应该是A(0)、A(1)、A(2)、A(3)、A(4)、A(5)。使用A(6)会产生数组下标越界的错误。 另外,在本题中声明数组A时省略了数据类型,则系统默认为Variant类型,即数组的每个元素可以存放不同类型的数据。 (6)运行下列程序,单击窗体,则运行结果是 。

Option Base 1

Private Sub Form_Click() Dim a(10) For i = 1 To 10

a(i) = 10 - i + i Mod 2 Next i

For i = 10 To 1 Step -2

Print a(i); Next i End Sub A) 0 2 4 6 8 B) 8 6 4 2 0

C) 1 3 5 7 9 D) 9 7 5 3 1

【答案】A 【解析】本题要注意两点:第一个For语句的循环体有一条a(i) = 10- i + i Mod 2 语句,完成数组元素的生成;另外,第二个For语句的参数是10 To 1 Step -2,逆向间隔输出。计算数组元素中Mod运算符优先,当i是奇数时,i Mod 2的值为1,当i是偶数时,i Mod 2的值为0,10-i在循环中得到9 8 7,6,5,4,3,2,1,0,当i是奇数时加1,因此a数组中的 数是10,8,8,6,6,4,4,2,2,0,最后逆向间隔输出,输出的结果是0,2,4,6,8。 (7)运行下列程序,单击窗体,则运行结果是 。

Option Base 1

Private Sub Form_Click() Dim a

a = Array(1, 5, \ For i = 1 To 3 Print a(i); Next i End Sub

A) 1 5 abcde B) 1 5 \C) 出错信息 D) 1

5

abcde 【答案】A 【解析】a是变体变量,使用Array函数进行数组初始化时,数组的各个元素类型可以不同;并且字符串输出是不带定界符(一对西文双引号)。

(2)设窗体上有一个列表框控件List1,且其中含有若干列表项。则以下能表示当前被选中的列表项内容的是 。 A) List1.List B) List1.ListIndex C) List1.Index D) List1.Text 【答案】D

【解析】列表框的Text属性的值是最后一次选中的列表项的文本;ListIndex属性的值是最后一次选中的列表项的Index值;List属性和Index属性均为数组。因而本题的正确答案是选项D。

(3)为了清除列表框中的所有内容,应使用的方法是 。 A)Cls B)Clear C)Remove D)RemoveItem 【答案】B

【解析】Cls和Remove不是列表框的方法;Clear方法用来删除列表框中的所有项目;RemoveItem方法从列表框删除指定项目。

(15)设置组合框的样式,可用的属性是 。

A)BackStyle B)BorderStyle C)Style D)Sorted

【答案】C 【解析】组合框没有BackStyle和BorderStyle属性。组合框的Sorted属性控制列表项是否按序排列,若设置为True按升序排列,否则按加入先后顺序排列。组合框的Style属性控制组合框的样式,0为下拉式组合框,1为简单组合框,2为下拉式列表(只能选择不能输入)。

二.练习题

1.单项选择题

(1)下面程序运行后,单击窗体,窗体输出为 。

Option Base 1

Private Sub Form_Click()

x = Array(10, 25, 15, 20, 25, 25, 50, 40, 50, 60) p = x(1)

For i = 2 To 10 If x(i) > p Then

p = x(i) s = s + p

End If Next i Print p; s End Sub

A) 10 10 B) 60 70 C) 60 135

D) 10 65

(2)在窗体上放一个命令按钮,并编写如下程序,运行后单击命令按钮,则输出结果

是 。

Private Sub Command1_Click( ) Dim A

A = Array(1, 2, 3, 4) S = 0

For I = 1 To 2 S = S + A(I) Print S; Next I End Sub A)2 5 B)1 3 C)5 D)4 (3)在窗体上画一个名称为Command1的命令按钮,然后编写如下程序: Private Sub Command1_Click() Dim i, 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 B) 2 3 4 C) 1 4 7 D) 1 2 3 2 4 6 3 4 5 2 5 8 4 5 6 3 6 9 4 5 6 3 6 9 7 8 9

(4)设有如下程序

Private Sub Form_Click() Dim abc() As Integer n1 = Int(10 * Rnd())

n2 = Int(10 * Rnd() + 50) ReDim abc(n1 To n2)

Print LBound(abc); UBound(abc) End Sub

运行程序后,多次单击窗体,则输出结果范围最大的两个数是 A)10 60 B)10 59 C)0 59 D)0 60 (5)下面四个选项中,正确的用户定义类型是 。

A) Dec abc B) Dec abc xm As String xm As String * 4 nl As Integer nl As Integer xb As Boolean xb As Boolean End Dec End Dec C) Type abc D) Type abc xm As String xm As String * 4 nl As Integer nl As Integer xb As Boolean xb As Boolean End Type End Type (6)设有如下程序 Option Base 1

Private Sub Form_Click()

a = Array(\张\刘\郝\陈\王\ w = a(1)

For i = 1 To 4 a(i) = a(i + 1) Next i a(5) = w

For i = 5 To 1 Step -1 Print a(i); Next i

A) ab B) bd C) ac D) 出错

(28)窗体上有一个名称为Text1 的文本框,一个名称为Command1 的命令按钮。编写如下的代码:

Private Type x a As Integer b As Integer End Type

Private Sub Command1_Click Dim y As x

y.a =inputBox(\ If y.a\\2=y.a/2 Then y.b=y.a*y.a Else

y.b=Fix(y.a/2) End If

Text1.Text=y.b End Sub

对以上程序,下列叙述中错误的是 A) x是用户定义的类型

B) InputBox函数弹出的对话框中没有提示信息 C) 若输入的是偶数,y.b的值为该偶数的平方

D) Fix(y.a/2)把y.a/2的小数部分四舍五入,转换为整数返回

2.填空题

(1)用户可以用 语句定义自己的数据类型。

(2)组合框的Style属性决定了它的3种不同类型,其中使得组合框只能选择而不能输入数据的Style值为 。

(3)下列程序的功能是求sin(0.3125)的值。由台劳级数可知:

sinx=x-x3/3!+ x5/5!- x7/7!+??

用有限步取代sinx的无限步计算,请填空。

(注意:不得增行或删行, 也不得更改程序的结构!) Private Sub Form_Click() k = 2: n = 80 x = 0.3125 sin1 = 0

fn = 1: fx = x For i = 1 To n

sin1 = sin1 + fx / fn

fn = fx = k = k + 2 Next i

Print sin1 End Sub

(4)下列程序的功能是:计算并输出100以内的所有能被3整除且个位数是6的所有整数,请填空。(注意:不得增行或删行, 也不得更改程序的结构!) Private Sub Form_Click()

Dim i As Integer, j As Integer

For i = 0 To j = i * 10 + 6

If Then Print j End If Next i End Sub

(5)在窗体上有一个名称为Label1的标签和一个名称List1的列表框。程序运行后,在列表框中添加若干列表项。当双击列表框中的某个项目时,在标签Label1中显示所选中的项目,如图所示。请在空白处填入适当的内容,将程序补充完整。

Private Sub Form_load()

List1.AddItem \北京\ List1.AddItem \上海\ List1.AddItem \河北\ End Sub

Private Sub List1_DblClick() Label1.Caption=  End Sub

(6)在窗体上有一个列表框,然后编写如下两个事件过程:

Private Sub Form_Click() List1.RemoveItem 1 List1.RemoveItem 2 List1.RemoveItem 3 End Sub

Private Sub Form_Load() List1.AddItem\List1.AddItem\ List1.AddItem\List1.AddItem\ List1.AddItem\ List1.AddItem\End Sub

运行上面的程序,然后单击窗体,列表框中显示的项目是  。

(7)下列程序功能是,产生10个0~100的随机数,输出其中的最大值。请将程序补充完整。

Private Sub Form_Click() Dim an(10) As Integer Dim max As Integer Randomize For i=1 To 10

an(i)= Next i

max=an(1) For i=2 to 10

if an(i)>max then max=an(i) End If Next Print max End Sub (8)下面程序的功能是产生10个小于100(不含100)的随机正整数,并统计其中能被5整除的数所占比例,但程序不完整,请补充完整。

Private Sub Form_Click() Randomize Dim a(10) For i=1 To 10

a(i)=Int( ) If Then k=k+1 Print a(i) Next i Print

Print k / 10 End Sub

一、单项选择题答案 1. C 11. B 21. B 2. A 12. A 22. B 3. D 13. B 23. C 4. C 14. A 24. D 5. D 15. C 25. B 6. A 16. C 26. B 7. A 17. C 27. B 8. C 18. C 28. D 9. A 19. A 10. C 20. A 二、填空题答案 1. Type 2. 2 3. 空1:fn*k*(k+1) 或 fn*(i*2)*(i*2+1) 空2:-fx*x^2 4. 空1:9 空2:j mod 3 =0 5. list1.text 6. ItemA ItemC ItemE 7. rnd*100 8. 空1:rnd*99+1 空2:a(i) mod 5=0

本文来源:https://www.bwwdw.com/article/qsw6.html

Top