2023年12月6日发(作者:)

二级VISUAL BASIC-26-1

(总分69.5, 做题时间90分钟)

一、选择题

1.

使用Line控件在窗体上画一条从(0,0)到(600,700)的直线,则其相应属性的值应是______。

A X1=0,X2=600,Y1=0,Y2=700

B Y1=0,Y2=600,X1=0,X2=700

C X1=0,X2=0,Y1=600,Y2=700

D Y1=0,Y2=0,X1=600,X2=700

分值: 1

答案:A

[解析] X1、Y1、X2、Y2属性是直线的起点、终点坐标。故选A。

2.

在新建一个VisualBasic工程时,将新建窗体的Name属性设置为TheFirst,则默认的窗体文件名为 ____ 。

SSS_SINGLE_SELSSS_SINGLE_SELA

B 工程

C

D

分值: 2

答案:C

[解析] 设置Name的属性其实就是给窗体重命名。窗体的文件名是由文件名和后缀名(.frm)组成,即“自定义名.frm”。

3.

往窗体Form1上添加一个列表框控件List1,并编写如下代码:

Private Sub Form_Load()

For i=0 To 6

mi

Next i

End Sub

为了在程序运行时,按住Ctrl键单击列表中的项目可以选中多个项目,可以设置List1的属性 ______。

SSS_SINGLE_SEL

A

B dex

C List1. MultiSelect

D

分值: 1

答案:C [解析] Load事件是在窗体被装入工作区时触发的事件。当应用程序启动时,自动执行该事件,所以该事件通常用来在启动应用时对属性和变量进行初始化。而MouseDown、MouseUp是鼠标指针在某个对象上按键时激发的,Click是鼠标单击时激发的。

4.

能对顺序文件进行输出的语句是______。

SSS_SINGLE_SEL

A Put

B Get

C Write

D Read

分值: 2

答案:C

5.

在窗体上画一个命令按钮,然后编写如下事件过程:

Private Sub Command1_Click()

For i=1 To 4

x=4

For j=1 To 2

x=x+6

Next

Next

Print x

End Sub

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

SSS_SINGLE_SEL

A 12

B 13

C 16

D 17

分值: 2

答案:C

[解析] 观察程序,由于每次执行外层循环时x都被重新赋值,因此只要看到i=4时,执行内循环所得到的结果即可。 6.

若要使标签控件显示时,不覆盖其背景内容,应设置标签控件的______属性。

SSS_SINGLE_SEL

A BackColor

B BorderStyle

C ForeColor

D BackStyle

分值: 2

答案:D

7.

现有语句:y=IIf(x>0,x Mod 3,0)

设x=10,则y的值是______。

SSS_SINGLE_SELA 0

B 1

C 3

D 语句有错

分值: 1

答案:B

[解析] IIF是条件函数,它的语法格式是:

IIf(<条件表达式>,<表达式为True时的取值>,<表达式为False时的取值>),本题中,x=10时,条件表达式x>0的值为True,执行x Mod 3即10

Mod 3结果为1。故选B。

8.

Visual Basic程序中分隔各语句的字符是 ____ 。

SSS_SINGLE_SEL

A "

B :

C

D _

分值: 2

答案:B

9.

在窗体上画一个通用对话框,程序运行后,通过ShowOpen方法显示“打开”对话框,要求在该对话框的“文件类型”栏中只显示扩展名为.DOC的文件,则对通用对话框的 Filter属性的正确设置是______。

SSS_SINGLE_SELA "(*.DOC) *.DOC"

B "(*.DOC) |(.DOC) "

C "(*.DOC) ‖*.DOC"

D "(*.DOC) |*.DOC"

分值: 2

答案:D

[解析] =-"(*.DOC)|*.DOC",通过ShowOpen方法显示“打开”对话框时对话框的“文件类型”栏中只显示扩展名为.DOC的文件。

10.

以下不属于对象的基本特点的是 ______。

SSS_SINGLE_SELA 分类性

B 多态性

C 继承性

D 封装性

分值: 2

答案:C

[解析] 对象有一些基本特点,即标识惟一性、分类性、多态性、封装性和模块独立性。

11.

下列程序的运行结果是

Private Sub Form_Click()

Dim k As Integer

n=5

m=1

k=1

Do

m=m+2

k=k+1

Loop Until k>n

Print m

End Sub

SSS_SINGLE_SEL

A 1

B 12

C 11

D 32

分值: 1

答案:C

[解析] 本题主要是对Do...Loop Until循环语句的考查。当Loop Until后的条件不成立时,即退出循环。该题在k为1、2、3、 4、5时,都执行了循环语句,故一共执行了五次,同时m=m+2也执行了五次,最后m的值增加了10,故运行结果为11。

12.

Visual Basic窗体设计器的主要功能是 ______。

SSS_SINGLE_SEL

A

B

C

D

建立用户界面

编写源程序代码

画图

显示文字 分值: 1

答案:A

[解析] 窗体设计器窗口简称窗体(Form),是应用程序最终面向用户的窗口,它对应于应用程序的运行结果。

13.

数据的完整性是指数据的正确性、有效性和______。

SSS_SINGLE_SEL

A 可维护性

B 独立性

C 安全性

D 相容性

分值: 1

答案:D

14.

窗体上有名称为Command1的命令按钮和名称为Text1的文本框 ____ 。

Private Sub Command1_Click()

="程序设计"

us

End Sub

Private Sub Text1_GotFocus()

="等级考试"

End Sub

运行以上程序,单击命令按钮后 ____ 。

A 文本框中显示的是“程序设计”,且焦点在文本框中

B 文本框中显示的是“等级考试”,且焦点在文本框中

C 文本框中显示的是“程序设计”,且焦点在命令按钮上

D 文本框中显示的是“等级考试”,且焦点在命令按钮上

分值: 2

答案:B

[解析] SetFocus方法用于将焦点移到指定的对象上,而当一个对象获得焦点时将触发其GotFocus事件过程。

15.

以下能够正确计算1+2+3+…+10的程序是

A Private sub Command1_Click( )sum=0For 1=1 To 10Sum=sum+1,Next

IPrint SumEnd Sub

B Private sub Command1_Click( )Sum=0,I=1Do While l<=10Sum=Sum+1I=I+1Print SumEnd Sub

C Private **mand1_click( )Sum=0:I=1DoSum=Sum+1I=I+1Loop While I<10Print SumEnd Sub

D Private **mand1_ClickSum=0:I=1DoSum=Sum+1l=I+1Loop Until I<10Print SumEnd Sub

分值: 1

SSS_SINGLE_SELSSS_SINGLE_SEL 答案:A

[解析] A选项进行10次循环,分别将1至10累加给Sum,故正确。选项B缺少Loop关键词,否则也是正确的。选项C与D由于受条件“Iclo"’限制,Do循环只能进行一次。

16.

表达式2*3~2+4*2/2+3~2的值是______。

SSS_SINGLE_SEL

A 30

B 31

C 49

D 48

分值: 1

答案:B

[解析] 根据VB中算术运算符的优先级顺序计算。先计算^,即2*9+4*2/2+9;再计算*/,即18+4+9;最后计算+,结果为31,故选B。

17.

在窗体上有一个名为Text1的文本框。当光标在文本框中时,如果按下字母键“A”,则被调用的事件过程是

SSS_SINGLE_SELA Form_KeyPress()

B Text1_LostFocus()

C Text1_Click()

D Text1_Change()

分值: 2

答案:D

[解析] 按下字母键A将触发Change事件,调用的过程为Text1_Change()。当按下并松开A键时触发KeyPress事件。Click是鼠标单击事件,LostFocus是失去焦点事件,按下A键后光标还在文本框中,未失去焦点。

18.

结构化程序所要求的基本结构不包括______。

SSS_SINGLE_SEL

A 顺序结构

B GOTO跳转

C 选择(分支)结构

D 重复(循环)结构

分值: 3

答案:B

[解析] 1966年Boehm和Jacopini证明了程序设计语言仅仅使用顺序、选择和重复三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。

19.

A (-A)^2 Log(Exp(k))/(A-B)<(3-A)*(B+8)*Sin(75)

SSS_SINGLE_SEL B (-A)^2*Log(Exp(K))/Log(10)/(A-B)<=(3-A)*(B+8)*Sin(75/180*3.14159)

C (-A)^2 Log(Exp(K))/(A-B)<=(3-A)*(B+8)*Sin(75/180)

D (-A)^2*Log(Exp(K))/Log(10)/(A-B)<=(3-A)*(B+8)*Sin(75*3.14159)

分值: 1

答案:B

20.

设有如下程序:

Private Sub Form_Click()

Dim ary(1 To 5)As Integer

Dim i As Integer

Dim sum As Integer

For i=1 To 5

ary(i)=i+1

sum=sum+ary(i)

Next i

Print sum

End Sub

程序运行后,单击窗体,则在窗体上显示的是 ____ 。

SSS_SINGLE_SEL

A 15

B 16

C 20

D 25

分值: 2

答案:C

[解析] 本题是一个简单的循环累加问题,在每次循环中累加i+1,即最后输出结果为2+3+4+5+6=20。

21.

在软件生产过程中,需求信息的来源是 ____ 。

SSS_SINGLE_SEL

A 程序员

B 项目经理

C 设计人员

D 软件用户

分值: 2

答案:D

[解析] 软件需求是指用户对目标软件系统在功能、性能、设计约束等方面的要求,是由用户提出的。

22.

以下语句中那句可以选择指定的表项或取消已选择的表项

A 列表框.Selected(索引值)

B 列表框.Selected(索引值);True|False

SSS_SINGLE_SEL C 列表框.Selected

D 列表框.Selected=True |False

分值: 1

答案:B

[解析] Selected属性实际上是一个数组,每个元素的值为True或False,每个元素与列表框中的一项相对应。当元素的值为True时,表示选择了该项;当元素的值为False时,表示未选择该项。列表框名. Selected(索引值);True|False语句可以选择指定的表项或取消已选择的表项。由于Selected是个数组,所以如果语句中缺少了索引值就不正确了。

23.

下列不能打开代码窗口的操作是______。

SSS_SINGLE_SEL

A 双击窗体上的某个控件

B 双击窗体

C 按<F7>键

D 单击窗体或控件

分值: 1

答案:D

24.

命令按钮Command1的事件过程如下:

Private Sub Command1_Click()

Dim art(5, 5)As Integer

Dim i As Integer, j As Integer

For i=1 To 4

For j=2 To 4

arr(i, j)=i+j

Next j

Next i

Print arr(1, 3)+arr(3, 4)

End Sub

执行上述过程,输出结果是

SSS_SINGLE_SELA 6

B 7

C 11

D 12

分值: 2.5

答案:C

[解析] 本题中首先在一个二重循环中给二维数组arr的部分元素赋值,循环结束后输出两个数组元素的和,根据题意arr(1,3)+arr(3,4)=4+7=11。

25.

假定有下列两个过程:

Private Sub PPP(a As Single, b As Single)

a=a+b

Print a, b

b=a+b

Print a, b

End Sub

Private Sub Form_Activate()

x=18

Call PPP((x), (x))

Print x

End Sub

则下列说法中不正确的是 ____ 。

A 形参是a和b,两个实参(x)和(x)允许重名

B 形参是a和b,实参(x)表示传值调用

C 形参是a和b,实参(x)表示是非传址调用

D 形参是a和b,两个实参(x)和(x)不允许重名

分值: 2

答案:D

[解析] 过程调用时,实参的变量名用括号括起来,表示传值调用,实参传递时,参数允许重名,只要与形参在类型和个数上一一对应就可以了,因此选项D)错误。

二、填空题

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=______

For j=______

If a(i)______a(j)Then

a1=a(i)

a(i)=a(j)

a(j)=a1

End If

Next j

Next i

For i=1 To 10

Print a(i)

Next i

End Sub

SSS_FILLSSS_SINGLE_SEL 分值: 6

a To 9

i+1 To 10

>= [解析] Option Base 1指示数组下标从1开始。冒泡排序为首先将第一个记录的关键字与第二个记录的关键字进行比较,若逆序则交换,然后比较第二个与第三个,依此类推,直至第n-1个和第n个记录的关键字进行比较为止。上述过程为第一趟冒泡排序,使最大的关键字元素放到最后。依此类推,进行第2~n次冒泡排序。根据冒泡排序的原理,结合本题,构成二重循环,应填a

To 9和i+1 To 10,此时将判断a(i)与a(j)的大小,根据题意,故填>=。

2.

有如下事件过程:

Private Sub Form_Active()

Dim Score(1 to 3) As Integer

Dim i As Integer

Dim t As Variant

For i=3 To 1 step-1

Score (i)=2*i

Next

For Each t In Score

Print t

Next

End Sub

程序运行后窗体上显示的值为______。

SSS_FILL

分值: 2

2 4 6[解析] 本题考查数组的定义和For Each…Next语句。题中定义了下标下界为1,下标上界为3的Score数组,通过For循环语句赋值后,再通过For

Each…Next语句在窗体上输出数组中的每个成员。

3.

有以下程序:

Private Sub Form_Activate()

Fori=1 to 3

x=3

For i=i to 2

x=x+6

Next

Next

Print X

End Sub

程序运行后,窗体上显示的结果为 ________

SSS_FILL

分值: 2

15[解析] 每一次j的赋值后,x都等于3,所以只用计算最后一层循环。当j=3,i=1时,x=3+6=9;i=2时,x=9+6=15。

4. 以下过程用来在w数组中插入x,w数组中的数已按由小到大的顺序存放,n指存储单元中存放数组中数据的个数,插入后数组中的数仍有序。请填空补充程序。

Sub fun(w,x,n)

Dim i,p

p=0

w(n)=x

Do While x>w(p)

______

Loop

For i=n to p+1 Step-1

w(i)=______

Next i

w(p)=x

n=n+1

Sub End

SSS_FILL

分值: 1

p=p+1 w(i-1)[解析] 先要找到x的插入点,从w(0)开始与x比较,找到第一个大于x的元素,该元素的位置即为x的插入点,DoWhile语句就是完成这个功能,p作为下标变量,每循环比较一次,就移动一次,因此要对p进行加1的操作;找到x的插入点后,要将其后元素依次后移,从最后一个元素开始移动,把前一个元素的值送到后一个元素处。

5.

假定有如下程序代码,程序运行后,把鼠标光标移到窗体内,每单击一次,变换一种鼠标光标的形状,依次显示鼠标光标的15个属性。请在划线处将程序补充完整。

Private Sub Form_Click( )

Static x As Integer

Cls

Print "Mousepointer Property is now "; x

Forml. ________ =x

x=-x+1

If x = 15 Then x = 0

End Sub

SSS_FILL

分值: 1

MousePointer [解析] MousePointer属性可以通过代码设置,也可以通过属性窗口设置,在程序代码中设置MousePoimer属性的一般格式为:

对象.MousePointer=设置值

由于程序中使用Static关键字定义变量x,每次单击窗体时x的值增加1,并且下次单击窗体时,x能保留上次的值,这样就能保证每次单击窗体时看到到鼠标光标都和上一次看到的不一样。

6. 有一个事件过程,其功能是:从已存在于磁盘上的顺序文件中读取数据,计算读出数据的平方值,将该数据及其平方值存入新的顺序文件中。请填空。

Private Sub Form_Click0

Dim X As Single,y As Single

Open""For Input As #1

Open""For OutputAs#2

Do While Not EOF(1)

______

Print X

y=x^2

Print#2,x,f

Printy

Loop

Close#1,#2

End Sub

SSS_FILL

分值: 2

Input#1,x

7.

已知变量boo1 Var是一个布尔型的变量,如果要给其赋值为True,则正确的赋值语句就是______。

SSS_FILL

分值: 2

boo1 Var=Ture[解析] 赋值运算符号为“=”,功能是将右侧的值赋值给左侧的变量,并要求两侧的数据类型匹配,布尔类型的值有两个True或False,所以正确的赋值形式为:布尔型变量名=True (或False)。

8.

软件工程的出现是由于______。

SSS_FILL 分值: 1

软件危机的出现解析:从20世纪60年代中期到70年代中期,随着计算机应用的日益普及,软件数量急剧膨胀,在程序运行时发现的错误必须设法改正,用户有了新的需求时必须相应的修改程序以适应新的环境。种种软件维护工作耗费惊人的资源,更严重的是许多程序个体化使得程序最终无法维护,“软件危机”就这样出现了。为了更有效的开发与维护软件,新兴了一门软件工程学即软件工程。

9.

一个控件在窗体上的位置由Top和Left属性决定,其大小由 ________ 和

________ 属性决定。

SSS_FILL

分值: 1

Width

Height [解析] Left属性决定了控件相对于窗体的左边距。Top属性决定了控 件相对于窗体的顶边距。Width决定的是控件的水平宽度。Height决定的是控件的垂直高度。

10.

由Array函数建立的数组的名字必须是 ________ 类型。

SSS_FILL 分值: 2

变体或Variant [解析] Array返回一个包含数组的Variant。

语法

Army(arglist)

所需的arglist参数是一个用逗号隔开的值表,这些值用于给Variant所包含的数组的各元素赋值。如果不提供参数,则创建一个长度为。的数组。

11.

Visual Basic程序在运行过程中,用户可通过按 ________ 键进入中断状态。

SSS_FILL

分值: 1

<Ctrl+Break>

12.

如果存在如下过程:

Private Function Fun(a()As Integer)

Dim First As Integer,Last As Integer,i As Integer

First=LBound(a)

Last=LBound(a)

Max=a(First)

For i=First To Last

If a(i)>Max Then Max=a(i)

Next

Fun=Max

End Function

在窗体上添加一个命令按钮,然后编写如下事件过程:

Private Sub Command1_Click()

ReDim in(1 To 4)As Integer

m(1=20:m(2)=30:m(3)+50:m(4)=100

c=Fun(m)

Print c

End Sub

单击命令按钮,其输出结果为______。

SSS_FILL

分值: 2

100[解析] 在程序Sub中定义了一个含4个元素的数组,并且分别给它们赋值,数组上界是4,下界为1;将数组m作为实参调用Fmax事件过程,并将数组m的地址传递给数组a,即此时数组a与m共用一个存储空间;将数组的上界和下界分别赋给变量Last和First,在赋值表达式中分别调用了LBound()函数求数组下界及UBound()函数求数组的上界;在循环语句中,变量的初始值为数组的下界为1,终值为数组的上界为4,循环体是一个条件语句,如果a(i) 中的值大于Max,就将a(i)的值赋给Max,当循环结束后,将Max作为函数的返回值,所以此事件过程的功能即为求数组中的最大值。

13.

有序线性表进行二分查找的前提是该线性表必须是 ________ 存储的。

SSS_FILL 分值: 2

顺序或顺序方式[解析] 二分法查找只适用于顺序存储的有序表。在此所说的有序表是指线性表中的元素按值非递减排列(即从小到大,但允许相邻元素值相等)。

14.

有如下程序:

Private Sub Command1_Click()

j =10

For i= -1 To 1 Step 0.3

j =j + 1

Next i

Print j

End Sub

该程序共循环______次,程序执行完毕后j的值是______。

SSS_FILL

分值: 2

7 17

15.

常用的软件结构设计工具是结构图(SC),也称程序结构图。其中,用矩形表示______,用带空心圆的箭头表示传递的是数据。

SSS_FILL

分值: 2

模块[解析] 矩形表示的是模块,箭头表示的是模块间的调用关系。用带实心圆的箭头表示传递的是控制信息,用带空心圆的箭头表示传递的是数据。

1