1、国家二级( VB)机试模拟试卷 27及答案与解析 一、选择题 1 在医院,每个医生只属于某一个诊疗科,医生同一天可为多位患者看病,而一名患者可在多个科室治疗。则实体医生和患者之间的联系是 ( A)多对多 ( B)多对一 ( C)一对多 ( D)一对一 2 设序列长度为 n,在最坏情况下,时间复杂度为 O(log2n)的算法是 ( A)二分法查找 ( B)顺序查找 ( C)分块查找 ( D)哈希查找 3 设数据集合为 D= 1,3,5,7,9 , D上的关系为 R,下列数据结构 B=( D, R)中为非线性结构 的是 ( A) R= (5,1), (7,9), (1,7), (9,3) ( B)
2、 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) 4 深度为 7的二叉树共有 127个结点,则下列说法中错误的是 ( A)该二叉树有一个度为 1的结点 ( B)该二叉树是满二叉树 ( C)该二叉树是完全二叉树 ( D)该二叉树有 64个叶子结点 5 某二叉树的中序序列为 BDCA,后序序列为 DCBA,则前序序列为 ( A) DCBA ( B) BDCA ( C) ABCD ( D) BADC 6 下面能作为软件需求分析工具的是 ( A) PAD图 ( B)
3、程序流程图 ( C)甘特图 ( D)数据流程图 (DFD图 ) 7 下面不属于对象主要特征的是 ( A)唯一性 ( B)多态性 ( C)可复用性 ( D)封装性 8 表达式 Sin(0) + Abs(-1) + Int(Rnd(0) + Len(Str(3.14)的值是 ( A) -1 ( B) 4 ( C) 5 ( D) 6 9 以下有关表达式的说法中,正确的是 ( A)表达式 LCase(“AB12“)Left(“abc“,2) And Len(“12.3“)=5 的值是 True ( B)表达式 Int(Rnd() * 11) + 10表示的值的范围是 10 21 ( C)表达式 “12
4、34“ABCD“的值为 Flase ( D)表达式 Chr(Asc(“B“)=UCase(“b“)的值为 False 10 下列符号常量的声明中,不合法的是 ( A) Const e As Single = 2.718, pi = 3.14 ( B) Const a As Double=Sin(1) ( C) Private Const a=“计算机等级考试 “ ( D) Const a As String=Visual Basic“ 11 以下叙述中错误的是 ( A)设计窗体时,单击窗体上任何一个控件后,就可以在属性窗口中设置窗体的属性 ( B)窗体是对象 ( C)窗体可以被移动 ( D)窗
5、体的 Name属性在程序运行过程中不能被修改 12 以下语句或子句中,符合 Visual Basic语法要求的是 ( A) Print a=;10+20 ( B) If xy Then t=x,x=y,y=t ( C) y = Log(Exp(x) + Abs(Atn(x) + Cos(x) 2 ( D) Case Is60 And Is0, ab),下面不能正确计算 a除以 b的余数的表达式是 ( A) a - a b * b ( B) a Mod b ( C) a - Int(a / b) * b ( D) a - (a b) * b 14 下列表达式中值为 -6的是 ( A) Int(-
6、5.678) ( B) Int(-5.678-0.5) ( C) Fix(-5.678+0.5) ( D) Fix(-5.678) 15 在窗体上画一个文本框、一个标签,其名称分别为 Text1、 Label1,然后编写如下事件过程: Private Sub Text1_Change() Label1.Caption = UCase(Mid(Trim(Text1.Text), 7, 3) End Sub 程序运行时,如果在文本框中输入字符串 “VisualBasic计算机等级考试 “,则在标签Label1中显示的内容是。 ( A) asi ( B) ASI ( C) Bas ( D) BAS
7、16 为了使组合框成为下拉式列表框,应把其 Style属性设置为 ( A) 0 ( B) 1 ( C) 2 ( D) 3 17 窗体上有一个名称为 Label1的标签控件,其 Caption属性的初始值为 0,还有一个计时器。为了在程序运行时,标签上的数字每秒加 1,应该把语句:Label1.Caption = Label1.Caption + 1 写在一个事件过程中,这个事件过程是 ( A)标签的 Timer事件过程 ( B)计时器的 Timer事件过程 ( C)标签的 Click事件过程 ( D)计时器的 Click事件过程 18 当直线控件的 BorderStyle属性被设置为: 2 -
8、 Dash,控件显示的是 ( A)实线 ( B)虚线 ( C)点线 ( D)不可见 19 下面关于列表框控件的叙述中错误的是 ( A) Selected属性是一个字符数组 ( B) List属性是一个字符数组 ( C)在运行时,列表框中的列表项可以多选 ( D) ListCount属性不能在属性窗口中设置 20 下列有关控件数组的说法中,正确的是 ( A)控件数组中所包含的控件必须是同一种类型 的,且它们的 Name属性值相同,但每个控件的 Index属性值不同 ( B)控件数组中所包含的控件必须是同一种类型的,且它们的 Name属性值不能相同 ( C)可以将窗体上的各种类型的控件创建到一个控
9、件数组中 ( D)程序运行时,对控件数组中的不同控件操作而触发事件时,执行的是对应于各个控件的事件过程代码 21 设有数组声明: Dim s(2, 3),下面错误的程序段是 ( 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 I ( C) For i = 1 To 3 For j = 1 To 2 s(j, i) = 0 Next j Next I ( D) For i = 0 To 2 For j = 0
10、To 3 s(i, j) = 0 Next j Next I 22 假定在某个事件过程中需要计算: y = 3! + 5! 的值,下面最好的设计是 ( 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 下面不能正确计算 1 + ( 1 + 2 ) + ( 1 + 2 + 3 )
11、+ + ( 1 + 2 + + 10 ) 的是 ( 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_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 Sub ( C) Private Sub Com
12、mand1_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 Sub ( D) Private Sub Command1_Click() s = 0 : t = 0 For i = 1 To 10 t = t + i s = s + t Next i Print s End Sub 24 如果窗体模块 A中有一个过程: Private Sub Proc( ) End Sub 则下面叙述中错误的是 ( A)在窗体模块 B中可以调用此过程
13、( B)在窗体模块 B中可以有与此相同名 称的过程 ( C)窗体模块 A中任何其他过程都可以调用此过程 ( D)在标准模块中不能调用此过程 25 以下叙述中错误的是 ( A)程序运行过程中,可以利用代码重新设置菜单项的 Visible属性的值 ( B)在菜单标题中,由 “10+20,选项 A错误; If语句以 End If结束,选项 B错误;表达大于 60小于 100用 Case 60 To 90,选项D错误;故正确答案为选项 C。 13 【正确答案】 A 【试题解析】 运算符 “/“是除,结果可能产生小数,而运算符 “是 整除,结果一定是整数,选项 A的表达式很可能是负数,不可能是 a除以
14、b 的余数,故正确答案为选项 A。 14 【正确答案】 A 【试题解析】 Int(x)返回不大于 x的最大整数, Fix( x)为取整函数,返回 x的整数部分。选项 A表达式的值为 -6;选项 B 表达式的值为 -7;选项 C表达式的值为 -5;选项 D表达式的值为 -5,故正确答案为选项 A。 15 【正确答案】 D 【试题解析】 Trim( C)函数是去掉字符串 C两端的空格; Mid( C, 7, 3)函数截取 C中从第 7个字符开始的共 3个字符; Ucase函数是将 C中的小写字母转化为大写字母。故正确答案为选项 D。 16 【正确答案】 C 【试题解析】 Style属性:决定组合框
15、的外观样式。可以取 0、 1和 2这 3个值。0: Dropdown ComboBox,称为 “下拉式组合框 “。 1: Simple ComboBox,称为 “简单组合框 “。 2: Dropdown ListBox,称为 “下拉式列表框 “。故本题正确答案为C选项。 17 【正确答案】 B 【试题解析】 标签的主要事件有单击( Click)和双击( DbClick)事件,没有Timer事件。故选项 A错误 ;标签的 Click 事件,只有当单击标签控件时才会触发该事件。而本程序在运行时,标签的数字是自动添加的,而非通过单击事件。故选项 C错误;计时器只支持 Timer事件。故选项 D错误;
16、本题正确答案为 B。 18 【正确答案】 B 【试题解析】 直线控件的 BorderStyle属性用来设置直线的线型,取值范围为 0 6; 2 - Dash 表示虚线。故正确答案为选项 B。 19 【正确答案】 A 【试题解析】 Selected 属性表示列表框中各个项目是否被选中,是一个逻辑型数组; List属性用来列出表项 内容,是一个字符数组;选项 C、 D描述均正确。故正确答案为选项 A。 20 【正确答案】 A 【试题解析】 控件数组中所包含的控件必须是同一种类型的,且它们的 Name属性值相同,但每个控件的 Index属性值不同,选项 B错误;一个控件数组的控件类型必须是同一类型,
17、选项 C错误;控件数组共享过程,在对不同控件操作时触发的是同一事件,选项 D错误;故正确答案为选项 A。 21 【正确答案】 A 【试题解析】 本题考查二维数组的初始化,题中定义了 3行 4列的二维数组, i代表第一维下标上界为 3, j代表第二维 下标上界为 4。本题中 s( 2, 3)有 3行( 0-2)、 4列( 0-3),共 12个数组元素, A选项中数组元素 s( 3, 2)超出了数组界限,故正确答案为选项 A。 22 【正确答案】 A 【试题解析】 3!和 5!都是计算某个数 n 的阶乘,所以设计 1个计算 n!的函数f( n)即可。故正确答案为选项 A。 23 【正确答案】 A
18、【试题解析】 选项 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。 24 【正确答案】 A 【试题解析】 过程所处的位置不同,其控制的范围也不同,在窗体中定义的过程能被本模块即窗体中的其他过程调用,不能被其他窗体中的模块调用。选项 A表述错误,故正确答案为选项
19、 A。 25 【正确答案】 C 【试题解析】 选项 C中,同一窗体的菜单项,是 “名称 “不能相同,即 “name“属性不能相同,但 “caption“标题属性可以相同。故正确答案为选项 C。 26 【正确答案】 B 【试题解析】 一个工程可由多个窗体模块、标准模块和类模块组成, A选项、 C选项错误。窗体模块的主要操作是在标准模块中进行的, D选项错误,故正确答案为 B选项。 27 【正确答案】 A 【试题解析】 Do Loop Until 循环,当程序开始执行时,先执行循环体,再计算循环 “条件 “值,当条件为真时结束循环,否则执行循环体。 Do WhileLoop ,当程序开始执行时,先
20、计算循环 “条件 “值,当条件 为假时结束循环,否则执行循环体。 Num=0, Num10为假,继续执行内层 while循环, ,当 Num=10时, Num0为假,因 Num10为真, flag = False,退出内层 while循环,退出 If 语句。进入外层 Do Loop Until 循环, Until中循环条件flag = False为真,结束外层循环。故最后输出结果为 11。本题正确答案为 A。 28 【正确答案】 C 【试题解析】 题 中循环条件判断 4次,循环体执行 3次,第一次循环结果 n = 1, k = 3;第二次循环结果 n = 2, k = 9;第三次循环结果 n
21、=3, k = 21。故正确答案为选项 C。 29 【正确答案】 D 【试题解析】 Do WhileLoop 循环执行时,首先计算 “条件 “值,然后判断条件是否为真,条件为真时继续执行循环体,条件为假时跳出循环, A选项中条件为假,跳出循环体, y值不变; DoLoop While 循环执行时首先执行循环体,然后计算条件值,判断条件是否为真,条件为真时返回继续执行循环体,条件为假时跳出循环, B选项中执行循环体后 y为 1,判断条件时永远为真, DO 循环会陷入“死循环 “; Do UntilLoop 循环执行时,首先计算 “条件 “值,然后判断条件是否为真,条件为假时继续执行循环体,条件为
22、真时跳出循环, C选项判断条件时为真,跳出循环, y值不变; DoLoop Until 循环执行时首先执行循环体,然后计算条件值,判断条件是否为真,条件为假时返回继续执行循环体,条件为真时跳出循环, D选项执行循环体后 y为 1,判断条件时为真,跳出循环,故本题正确答案为选项 D。 30 【正确答案】 D 【试题解析 】 采用 for循环的方式,实现将数组元素逆序排列,判断循环终止的条件为数组 A的最小下标和最大下标和的一半,并且定义变量 T,作为中间变量用来互换中心对称的元素。故正确答案为选项 D。 31 【正确答案】 C 【试题解析】 文件的打开, 格式 Open 文件说明 For方式 A
23、ccess 存取类型 锁定 As #文件号 Len=记录长度 。其功能,为文件的输入输出分配缓冲区,并确定缓冲区所使用的存取方式。 Input$函数, 格式 Input $( n,#文件号 )。该函数返回从指定文件中读出的 n个字符的字符 串(即它可以在数据文件中读取指定数目的字符)。文件指针 Seek, 格式 Seek #文件号,位置,用于实现文件指针的定位。程序开始执行时,先定义了两个字符串变量 s1, s2。 Open “D:data.txt“ For Input As #1,上面的代码是以顺序输入方式打开已经存在于 D盘下的 data.txt文件,并为其起个别名为文件号 1, Seek
24、 #1,5将文件指针定位于位置 5; s1 = Input$(2,#1)从 D盘下的 data.txt文件中读出的 2个字符,当前文件指针向后移 2位,文件指针位于位置 7; s2 = Input$(3,#1)从 D盘下的 data.txt文件中读出的 3个字符,当前文件指针向后移 3位,文件指针位于位置 10; Print Seek(1)返回文件指针当前的位置,当前文件指针位于 10。 Close #1关闭文件 1,即 D盘下的 data.txt文件。故本题正确答案为 C。 32 【正确答案】 C 【试题解析】 InputBox 函数可以产生一个对话框,作为输入数据的界面,等待用户输入数据,
25、并且返回输入的内容。类型转换函数 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
26、 1这时定义一维数组下标从 1开始;故 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。 33 【正确答案】 C 【试题解析】 文本框中 LostFocus 事件是当一个对象失去焦点时触发该事件。当按
27、 Tab 键或用鼠标单击另一个对象时,都会使焦点所在对象失去焦点。 GotFocus事件与 LostFocus 事件正好相反,当一个对象获得焦点时触发该事件。 Change事件是当用户在文本框中输入内容或者程序代码中给 Text属性赋新值时触发该事件。故正确答案为选项 C。 34 【正确答案】 B 【试题解析】 对象的基本特点是:标识唯一性、分 类性、多态性、封装性、模块独立性好。封装是指隐藏对象的属性和实现细节,将数据和操作结合于统一体,仅对外提供访问方式, B 选项正确。 35 【正确答案】 A 36 【正确答案】 B 37 【正确答案】 B 【试题解析】 在树结构中,定义一棵树的根结点所
28、在的层次为,其他结点所在的层次等于它的父结点所在的层次加,树的最大层次称为树的深度。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干结点。深度为 6的满二叉树,结点个数为 26-1=63,则第 7层共有 125-63=62个叶子结点,分别挂在第 6层的左边 62 个结点上,加上第 6层的最后 1个叶子结点,该完全二叉树共有 63个叶子结点,故 B选项正确。 38 【正确答案】 C 【试题解析】 有序是特指元素按非递减排列,即从小到大排列,但允许相邻元素相等, A选项错误。有序表可以顺序存储也可以链式存储, B 选项错。能使用二分法查找的线性表必须满足两个条件
29、:用顺序存储结构;线性表是有序表, D选项错误。故 C选项正确。 39 【正确答案】 D 【试题解析】 计算机软件由两部分组成:一是机器可执行的程序和数据;二是机器不 可执行的,与软件开发、运行、维护、使用等有关的文档。故 D选项正确。 40 【正确答案】 B 【试题解析】 需求分析阶段的工作可以分为个方面:需求获取、需求分析、编写需求规格说明书和需求评审。故 B 选项正确。 二、基本操作题 41 【正确答案】 (1)【操作步骤】步骤 1:建立界面,在窗体中添加一个框架和两个单选按钮,并设置控件的属性。程序中的控件属性见表 3.43。步骤 2:调试并运行程序,关闭程序后按题目要求存盘。 (2)
30、【操作步骤】步骤 1:新建一个窗体,按照题目要求建立驱动器列表框、目录列表框、 文件列表框控件并设置其属性。步骤 2:按照步骤 1建立其他控件并设置相关属性,程序中用到的控件及属性见表 3.44和表 3.45。 步骤 3:编写程序代码。参考答案 Private Sub Dir1_Change() File1.Path = Dir1.PathEnd SubPrivate Sub Drive1_Change() Dir1.Path = Drive1.DriveEnd SubPrivate Sub File1_Click() Label2 = File1.FileNameEnd Sub步骤 4:调试
31、并运行 程序,关闭程序后按题目要求存盘。 三、简单应用题 42 【正确答案】 (1)【操作步骤】 步骤 1:打开本题工程文件。 步骤 2:分析并编写程序代码。 程序提供代码 Dim a(10) As Integer Private Sub Form_Load() For i = 1 To 10 a(i) = Int(Rnd * 100) Next End Sub Private Sub Command1_Click() x = a(1) y = a(1) For i = 2 To 10 If Option1.Value = True Then If a(i) ? x Then ? = a(i)
32、 End If ElseIf a(i) ? y Then ? = a(i) End If Next If Option1.Value = True Then Label2.Caption = x Else Label2.Caption = y End If End Sub 程序结束 参考答案 第 1个?处填入: 第 2个?处填入: x 第 3个?处填入: 第 4个?处 填入: y 步骤 3:调试并运行程序,关闭程序后按题目要求存盘。 (2)【操作步骤】 步骤 1:打开本题工程文件, 设置 List1列表框的 MultiSelect属性为 2。 步骤 2:分析并编写程序代码。 程序提供代码 Pr
33、ivate Sub List1_DblClick() Call MoveItem(? ) End Sub Private Sub Command1_Click() Call MoveAll End Sub Public Sub MoveItem(L1 As ListBox, L2 As ListBox) L2.AddItem ? L1.RemoveItem ? End Sub Public Sub MoveAll() For i = 0 To ? List2.AddItem List1.List(i) Next End Sub 程序结束 参考答案 第 1个?处填入: List1, List2
34、第 2个?处填入: List1.Text 第 3个?处填入: List1.ListIndex 第 4个?处填入: List1.ListCount - 1 步骤 3:调试并运行程序,关闭程序后按题目要求 存盘。 四、综合应用题 43 【正确答案】 【操作步骤】 步骤 1:打开本题工程文件。 步骤 2:分析并编写程序代码。 程序提供代码 Private Sub Command1_Click() Randomize For k = 0 To 9 Text1(k) = CInt(Rnd() * 899 + 100) Next End Sub Private Sub Command2_Click() D
35、im i%, j%, temp%, flag As Boolean i = 0 j = ? ? = Text1(j) flag = True While (i ?) If flag Then If Text1(i) Mod 2 = 0 Then Text1(j) = Text1(i) j = j - 1 flag = Not flag Else i = i + 1 End If Else If Text1(j) Mod 2 = ? Then Text1(i) = Text1(j) i = i + 1 flag = Not flag Else j = j - 1 End If End If Wend Text1(i) = temp End Sub 程序结束 参考答案 第 1个?处填入: 9 第 2个?处填入: temp 第 3个?处填入: j 第 4个?处填入: 1 步骤 3:调试并运行程序,关闭程序后按题 目要求存盘。