1、国家二级 VB 机试(选择题)-试卷 8 及答案解析(总分:80.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.下列叙述中正确的是(分数:2.00)A.每一个结点有两个指针域的链表一定是非线性结构B.所有结点的指针域都为非空的链表一定是非线性结构C.循环链表是循环队列的链式存储结构D.线性结构的存储结点也可以有多个指针2.使用白盒测试方法时,设计测试用例应根据(分数:2.00)A.程序的内部逻辑B.程序的复杂结构C.程序的功能D.使用说明书3.在医院,每个医生只属于某一个诊疗科,医生同一天可为多位患者看病,而一名患者可在多个科室治疗。则实体医生和患者之间的联系是(
2、分数:2.00)A.多对多B.多对一C.一对多D.一对一4.设序列长度为 n,在最坏情况下,时间复杂度为 O(log2n)的算法是(分数:2.00)A.二分法查找B.顺序查找C.分块查找D.哈希查找5.设数据集合为 D= 1,3,5,7,9 ,D 上的关系为 R,下列数据结构 B=(D,R)中为非线性结构的是(分数:2.00)A.R= (5,1), (7,9), (1,7), (9,3) B.R= (9,7), (1,3), (7,1), (3,5) C.R= (1,9), (9,7), (7,5), (5,3) D.R= (1,3), (3,5), (5,9) 6.深度为 7 的二叉树共有
3、127 个结点,则下列说法中错误的是(分数:2.00)A.该二叉树有一个度为 1 的结点B.该二叉树是满二叉树C.该二叉树是完全二叉树D.该二叉树有 64 个叶子结点7.某二叉树的中序序列为 BDCA,后序序列为 DCBA,则前序序列为(分数:2.00)A.DCBAB.BDCAC.ABCDD.BADC8.下面能作为软件需求分析工具的是(分数:2.00)A.PAD 图B.程序流程图C.甘特图D.数据流程图(DFD 图)9.下面不属于对象主要特征的是(分数:2.00)A.唯一性B.多态性C.可复用性D.封装性10.关系 R 经过运算 A=BC4D3(R)的结果为 (分数:2.00)A.(c,c,1
4、1,4)B.(c,c,11,4)C.(a,a,2,4)D.(a,a,2,4)和(e,e,6,1)11.表达式 Sin(0) + Abs(-1) + Int(Rnd(0) + Len(Str(3.14)的值是(分数:2.00)A.-1B.4C.5D.612.以下有关表达式的说法中,正确的是(分数:2.00)A.表达式 LCase(“AB12“)Left(“abc“,2) And Len(“12.3“)=5 的值是 TrueB.表达式 Int(Rnd() * 11) + 10 表示的值的范围是 1021C.表达式“1234“ABCD“的值为 FlaseD.表达式 Chr(Asc(“B“)=UCas
5、e(“b“)的值为 False13.下列符号常量的声明中,不合法的是(分数:2.00)A.Const e As Single = 2.718, pi = 3.14B.Const a As Double=Sin(1)C.Private Const a=“计算机等级考试“D.Const a As String=Visual Basic“14.以下叙述中错误的是(分数:2.00)A.设计窗体时,单击窗体上任何一个控件后,就可以在属性窗口中设置窗体的属性B.窗体是对象C.窗体可以被移动D.窗体的 Name 属性在程序运行过程中不能被修改15.以下语句或子句中,符合 Visual Basic 语法要求的
6、是(分数:2.00)A.Print a=;10+20B.If xy Then t=x,x=y,y=tC.y = Log(Exp(x) + Abs(Atn(x) + Cos(x) 2D.Case Is60 And Is0,ab),下面不能正确计算 a 除以 b 的余数的表达式是(分数:2.00)A.a - a / b * bB.a Mod bC.a - Int(a / b) * bD.a - (a / b) * b17.下列表达式中值为-6 的是(分数:2.00)A.Int(-5.678)B.Int(-5.678-0.5)C.Fix(-5.678+0.5)D.Fix(-5.678)18.在窗体上
7、画一个文本框、一个标签,其名称分别为 Text1、Label1,然后编写如下事件过程:Private Sub Text1_Change() Label1.Caption = UCase(Mid(Trim(Text1.Text), 7, 3)End Sub 程序运行时,如果在文本框中输入字符串“VisualBasic 计算机等级考试“,则在标签 Label1 中显示的内容是。(分数:2.00)A.asiB.ASIC.BasD.BAS19.为了使组合框成为下拉式列表框,应把其 Style 属性设置为(分数:2.00)A.0B.1C.2D.320.窗体上有一个名称为 Label1 的标签控件,其 C
8、aption 属性的初始值为 0,还有一个计时器。为了在程序运行时,标签上的数字每秒加 1,应该把语句:Label1.Caption = Label1.Caption + 1 写在一个事件过程中,这个事件过程是(分数:2.00)A.标签的 Timer 事件过程B.计时器的 Timer 事件过程C.标签的 Click 事件过程D.计时器的 Click 事件过程21.当直线控件的 BorderStyle 属性被设置为:2 - Dash,控件显示的是(分数:2.00)A.实线B.虚线C.点线D.不可见22.下面关于列表框控件的叙述中错误的是(分数:2.00)A.Selected 属性是一个字符数组B
9、.List 属性是一个字符数组C.在运行时,列表框中的列表项可以多选D.ListCount 属性不能在属性窗口中设置23.下列有关控件数组的说法中,正确的是(分数:2.00)A.控件数组中所包含的控件必须是同一种类型的,且它们的 Name 属性值相同,但每个控件的 Index 属性值不同B.控件数组中所包含的控件必须是同一种类型的,且它们的 Name 属性值不能相同C.可以将窗体上的各种类型的控件创建到一个控件数组中D.程序运行时,对控件数组中的不同控件操作而触发事件时,执行的是对应于各个控件的事件过程代码24.设有数组声明:Dim s(2, 3),下面错误的程序段是(分数:2.00)A.Fo
10、r i = 1 To 3 For j = 1 To 2 s(i, j) = 0 Next j Next IB.For i = 1 To 2 For j = 1 To 3 s(i, j) = 0 Next j Next IC.For i = 1 To 3 For j = 1 To 2 s(j, i) = 0 Next j Next ID.For i = 0 To 2 For j = 0 To 3 s(i, j) = 0 Next j Next I25.假定在某个事件过程中需要计算:y = 3! + 5! 的值,下面最好的设计是(分数:2.00)A.设计 1 个计算 n! 的函数 f(n),调用方
11、式为:y = f(3) + f(5)B.设计 1 个专门计算 3!+5!的函数 f( ),调用方式为:y = f( )C.设计 2 个函数 f3( )和 f5( )分别计算 3!,5!,调用方式为:y = f3( ) + f5( )D.不用单独的函数计算阶乘,全部代码放在同一个事件过程中26.下面不能正确计算 1 + ( 1 + 2 ) + ( 1 + 2 + 3 ) + + ( 1 + 2 + + 10 ) 的是(分数:2.00)A.Private Sub Command1_Click() s = 0 : t = 0 For i = 1 To 10 For j = 1 To i t = t
12、+ j Next j s = s + t Next i Print s End SubB.Private Sub Command1_Click() s = 0 For i = 1 To 10 t = 0 For j = 1 To i t = t + j Next j s = s + t Next i Print s End SubC.Private Sub Command1_Click() s = 0 For i = 10 To 1 Step -1 t = 0 For j = 1 To i t = t + j Next j s = s + t Next i Print s End SubD.P
13、rivate Sub Command1_Click() s = 0 : t = 0 For i = 1 To 10 t = t + i s = s + t Next i Print s End Sub27.如果窗体模块 A 中有一个过程:Private Sub Proc( ) End Sub 则下面叙述中错误的是(分数:2.00)A.在窗体模块 B 中可以调用此过程B.在窗体模块 B 中可以有与此相同名称的过程C.窗体模块 A 中任何其他过程都可以调用此过程D.在标准模块中不能调用此过程28.以下叙述中错误的是(分数:2.00)A.程序运行过程中,可以利用代码重新设置菜单项的 Visible
14、属性的值B.在菜单标题中,由“10+20B.If xy Then t=x,x=y,y=tC.y = Log(Exp(x) + Abs(Atn(x) + Cos(x) 2 D.Case Is60 And Is0,ab),下面不能正确计算 a 除以 b 的余数的表达式是(分数:2.00)A.a - a / b * b B.a Mod bC.a - Int(a / b) * bD.a - (a / b) * b解析:解析:运算符“/“是除,结果可能产生小数,而运算符“是整除,结果一定是整数,选项 A 的表达式很可能是负数,不可能是 a 除以 b 的余数,故正确答案为选项 A。17.下列表达式中值为-
15、6 的是(分数:2.00)A.Int(-5.678) B.Int(-5.678-0.5)C.Fix(-5.678+0.5)D.Fix(-5.678)解析:解析:Int(x)返回不大于 x 的最大整数,Fix(x)为取整函数,返回 x 的整数部分。选项 A 表达式的值为-6;选项 B 表达式的值为-7;选项 C 表达式的值为-5;选项 D 表达式的值为-5,故正确答案为选项A。18.在窗体上画一个文本框、一个标签,其名称分别为 Text1、Label1,然后编写如下事件过程:Private Sub Text1_Change() Label1.Caption = UCase(Mid(Trim(Te
16、xt1.Text), 7, 3)End Sub 程序运行时,如果在文本框中输入字符串“VisualBasic 计算机等级考试“,则在标签 Label1 中显示的内容是。(分数:2.00)A.asiB.ASIC.BasD.BAS 解析:解析:Trim(C)函数是去掉字符串 C 两端的空格;Mid(C,7,3)函数截取 C 中从第 7 个字符开始的共 3 个字符;Ucase 函数是将 C 中的小写字母转化为大写字母。故正确答案为选项 D。19.为了使组合框成为下拉式列表框,应把其 Style 属性设置为(分数:2.00)A.0B.1C.2 D.3解析:解析:Style 属性:决定组合框的外观样式。
17、可以取 0、1 和 2 这 3 个值。0:Dropdown ComboBox,称为“下拉式组合框“。1:Simple ComboBox,称为“简单组合框“。2:Dropdown ListBox,称为“下拉式列表框“。故本题正确答案为 C 选项。20.窗体上有一个名称为 Label1 的标签控件,其 Caption 属性的初始值为 0,还有一个计时器。为了在程序运行时,标签上的数字每秒加 1,应该把语句:Label1.Caption = Label1.Caption + 1 写在一个事件过程中,这个事件过程是(分数:2.00)A.标签的 Timer 事件过程B.计时器的 Timer 事件过程 C
18、.标签的 Click 事件过程D.计时器的 Click 事件过程解析:解析:标签的主要事件有单击(Click)和双击(DbClick)事件,没有 Timer 事件。故选项 A 错误;标签的 Click 事件,只有当单击标签控件时才会触发该事件。而本程序在运行时,标签的数字是自动添加的,而非通过单击事件。故选项 C 错误;计时器只支持 Timer 事件。故选项 D 错误;本题正确答案为 B。21.当直线控件的 BorderStyle 属性被设置为:2 - Dash,控件显示的是(分数:2.00)A.实线B.虚线 C.点线D.不可见解析:解析:直线控件的 BorderStyle 属性用来设置直线的
19、线型,取值范围为 0 6;2 - Dash 表示虚线。故正确答案为选项 B。22.下面关于列表框控件的叙述中错误的是(分数:2.00)A.Selected 属性是一个字符数组 B.List 属性是一个字符数组C.在运行时,列表框中的列表项可以多选D.ListCount 属性不能在属性窗口中设置解析:解析:Selected 属性表示列表框中各个项目是否被选中,是一个逻辑型数组;List 属性用来列出表项内容,是一个字符数组;选项 C、D 描述均正确。故正确答案为选项 A。23.下列有关控件数组的说法中,正确的是(分数:2.00)A.控件数组中所包含的控件必须是同一种类型的,且它们的 Name 属
20、性值相同,但每个控件的 Index 属性值不同 B.控件数组中所包含的控件必须是同一种类型的,且它们的 Name 属性值不能相同C.可以将窗体上的各种类型的控件创建到一个控件数组中D.程序运行时,对控件数组中的不同控件操作而触发事件时,执行的是对应于各个控件的事件过程代码解析:解析:控件数组中所包含的控件必须是同一种类型的,且它们的 Name 属性值相同,但每个控件的Index 属性值不同,选项 B 错误;一个控件数组的控件类型必须是同一类型,选项 C 错误;控件数组共享过程,在对不同控件操作时触发的是同一事件,选项 D 错误;故正确答案为选项 A。24.设有数组声明:Dim s(2, 3),
21、下面错误的程序段是(分数:2.00)A.For i = 1 To 3 For j = 1 To 2 s(i, j) = 0 Next j Next I B.For i = 1 To 2 For j = 1 To 3 s(i, j) = 0 Next j Next IC.For i = 1 To 3 For j = 1 To 2 s(j, i) = 0 Next j Next ID.For i = 0 To 2 For j = 0 To 3 s(i, j) = 0 Next j Next I解析:解析:本题考查二维数组的初始化,题中定义了 3 行 4 列的二维数组, i 代表第一维下标上界为3,
22、j 代表第二维下标上界为 4。本题中 s(2,3)有 3 行(0-2)、4 列(0-3),共 12 个数组元素,A 选项中数组元素 s(3,2)超出了数组界限,故正确答案为选项 A。25.假定在某个事件过程中需要计算:y = 3! + 5! 的值,下面最好的设计是(分数:2.00)A.设计 1 个计算 n! 的函数 f(n),调用方式为:y = f(3) + f(5) B.设计 1 个专门计算 3!+5!的函数 f( ),调用方式为:y = f( )C.设计 2 个函数 f3( )和 f5( )分别计算 3!,5!,调用方式为:y = f3( ) + f5( )D.不用单独的函数计算阶乘,全部
23、代码放在同一个事件过程中解析:解析:3!和 5!都是计算某个数 n 的阶乘,所以设计 1 个计算 n!的函数 f(n)即可。故正确答案为选项 A。26.下面不能正确计算 1 + ( 1 + 2 ) + ( 1 + 2 + 3 ) + + ( 1 + 2 + + 10 ) 的是(分数:2.00)A.Private Sub Command1_Click() s = 0 : t = 0 For i = 1 To 10 For j = 1 To i t = t + j Next j s = s + t Next i Print s End Sub B.Private Sub Command1_Clic
24、k() s = 0 For i = 1 To 10 t = 0 For j = 1 To i t = t + j Next j s = s + t Next i Print s End SubC.Private Sub Command1_Click() s = 0 For i = 10 To 1 Step -1 t = 0 For j = 1 To i t = t + j Next j s = s + t Next i Print s End SubD.Private Sub Command1_Click() s = 0 : t = 0 For i = 1 To 10 t = t + i s
25、= s + t Next i Print s End Sub解析:解析:选项 A,当外层循环变量 i=1 时,执行内层循环,内层循环变量 j=1 时,执行结果为 t=1,内层循环结束,s=1;当外层循环变量 i=2 时,执行内层循环,内层循环变量 j=1 时,t=1+1,内层循环变量 j=2 时,t=1+1+2,内层循环结束,s=1+t=1+(1+1+2),至此,A 选项已经不符合要求。按照同样的方法分析 B、C、D 选项,均满足题目要求,故正确答案为选项 A。27.如果窗体模块 A 中有一个过程:Private Sub Proc( ) End Sub 则下面叙述中错误的是(分数:2.00)A
26、.在窗体模块 B 中可以调用此过程 B.在窗体模块 B 中可以有与此相同名称的过程C.窗体模块 A 中任何其他过程都可以调用此过程D.在标准模块中不能调用此过程解析:解析:过程所处的位置不同,其控制的范围也不同,在窗体中定义的过程能被本模块即窗体中的其他过程调用,不能被其他窗体中的模块调用。选项 A 表述错误,故正确答案为选项 A。28.以下叙述中错误的是(分数:2.00)A.程序运行过程中,可以利用代码重新设置菜单项的 Visible 属性的值B.在菜单标题中,由“&“所引导的字母指明了访问该菜单项的访问键C.在同一窗体的菜单项中,不允许出现标题相同的菜单项 D.弹出式菜单也在菜单编辑器中进
27、行设计解析:解析:选项 C 中,同一窗体的菜单项,是“名称“不能相同,即“name“属性不能相同,但“caption“标题属性可以相同。故正确答案为选项 C。29.下面叙述中正确的是(分数:2.00)A.一个工程由一个窗体模块和一个标准模块组成B.一个窗体是一个窗体模块 C.一个工程中只能有一个标准模块D.窗体模块中包含本窗体的所有事件过程,标准模块中包含本标准模块的所有事件过程解析:解析:一个工程可由多个窗体模块、标准模块和类模块组成,A 选项、C 选项错误。窗体模块的主要操作是在标准模块中进行的,D 选项错误,故正确答案为 B 选项。30.有如下程序代码: Private Sub Form
28、_Click() Dim flag As Boolean Dim Num As Integer flag = True Num = 0 Do Do While Num 10 Then flag = False Exit Do End If Loop Loop Until flag = False Print Num End Sub 运行程序,单击窗体,输出结果是(分数:2.00)A.11 B.10C.TrueD.False解析:解析:Do Loop Until 循环,当程序开始执行时,先执行循环体,再计算循环“条件“值,当条件为真时结束循环,否则执行循环体。Do WhileLoop,当程序开始
29、执行时,先计算循环“条件“值,当条件为假时结束循环,否则执行循环体。Num=0,Num10 为假,继续执行内层 while 循环,当 Num=10时,Num0 为假,因 Num10 为真,flag = False,退出内层 while 循环,退出 If 语句。进入外层 Do Loop Until 循环,Until 中循环条件 flag = False 为真,结束外层循环。故最后输出结果为 11。本题正确答案为 A。31.有如下程序代码:Private Sub Form_Click() n = 0 k = 1 While n = a(k) Then a(k + 1) = x Exit Do El
30、se a(k + 1) = a(k) If k = 0 Then a(k) = x k = k - 1 End If Loop Until k a If a d(k) Then m = k + 1 k = (m + n) / 2 Loop If d(k) = a Then b = k Else b = -1 End Sub 程序运行过程中单击命令按钮 Command1,在出现的输入对话框中输入“-1“并回车后,则程序的输出结果为(分数:2.00)A.-1B.1C.2 D.-2解析:解析:InputBox 函数可以产生一个对话框,作为输入数据的界面,等待用户输入数据,并且返回输入的内容。类型转换
31、函数 Val(s),返回值为字符串表达式 s 中所包含的数值,若遇到字母(指数符号除外)则终止转换。m = Val(InputBox(“输入“)=Val(-1) = -1。变体型数组 data。用 Call 语句调用Sub 过程。如果形参前面有关键字 ByVal,则该参数以传值方式传送。默认是按地址传递,data,m,n 把地址传给了形参 d,a,b 后,d,a,b 值的变化会引起相应实参值的变化。在过程 ser 中,UBound 函数返回为指定的数组维可用的最大下标,LBound 函数返回为指定的数组维可用的最小下标。程序开头定义了 Option Base 1 这时定义一维数组下标从 1 开
32、始;故 m = LBound(d)=1,n= UBund(d)=5。k=(m+n)/2=6/2=3。Do WhileLoop,当程序开始执行时,先计算循环“条件“值,当条件为假时结束循环,否则执行循环体。while m a,第一次执行,循环条件 1-1,其中 d(3)=0,a=-1,a-1 为假,结束循环,再执行 if Thenelse 语句,d(k)=d(2)=-1,故 b=k=2,对应的实参为 n,所以 n=2。故本题正确答案为 C。39.窗体上有一个名称为 Text1 的文本框,要求在获得焦点时选中文本框中所有内容,以下能实现该功能的事件过程是(分数:2.00)A.Private Sub
33、 Text1_Change() Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) End SubB.Private Sub Text1_LostFocus() Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) End SubC.Private Sub Text1_GotFocus() Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) End Sub D.Private Sub Text1_SetFocus() Text1.Sel
34、Start = 0 Text1.SelLength = Len(Text1.Text) End Sub解析:解析:文本框中 LostFocus 事件是当一个对象失去焦点时触发该事件。当按 Tab 键或用鼠标单击另一个对象时,都会使焦点所在对象失去焦点。GotFocus 事件与 LostFocus 事件正好相反,当一个对象获得焦点时触发该事件。Change 事件是当用户在文本框中输入内容或者程序代码中给 Text 属性赋新值时触发该事件。故正确答案为选项 C。40.设窗体上有一个 List1 列表框,其中的列表项如图所示。 (分数:2.00)A.把“南京“两字改成了“天津“ B.删除了“南京“列表项C.在“南京“列表项的后面添加了一个新列表项D.删除了“南京“列表项,并在最后面又添加了一个新列表项解析:解析:ListIndex 属性返回当前被选择项目的索引号 n;ListCount 属性返回列表框中项目的数值,题中为 7;AddItem 方法用来为列表框添加新的项目;RemoveItem 方法用来删除列表框指定的项目。题中首先删除“南京“项目,后用“天津“项目添加到删除的位置。故正确答案为选项 A。