1、国家二级( VB)机试模拟试卷 56及答案与解析 一、选择题 1 文件列表框中用于设置或返回所选文件路径和文件名的属性是 ( A) File ( B) FilePath ( C) Path ( D) FileName 2 在窗体上画 2个名称分别为 Text1和 Text2的文本框,然后编写如下事件过程: Private Sub Form_Load() Show Text1.Text = “ABCDEF“ Text2.SetFocus End Sub Private Sub Text1_GotFocus() Text1.SelStart = 2 Text1.SelLength = 3 End
2、Sub 运行程序,单击 Text1,该文本框中的内容为 ( A)显示 ABCDEF,且 BCD被选中 ( B)显示 ABCDEF,且 CDE被选中 ( C)显示 BCD ( D)显示 CDE 3 下面关于框架控件的叙述中正确的是 ( A)框架响应 Click事件 ( B)框架可以接受焦点 ( C)框架的标题是字符串,放在 Text属性中 ( D)可以在框架中输入文本 4 通过语句 X = InputBox(“输入数据 “, “示例 “, “0“)对变体类型的变量 X输入数据,程序运行后,如果在对话框的输入区中输入数值 100并按回车键,则下列叙述中正确的是 ( A)变量 X的值是字符串 “0“
3、 ( B)在 InputBox 对话框标题栏中显示的是 “输入数据 “ ( C)输入对话框的输入区中的初始默认值为数值 0 ( D)变量 X的值是字符串 “100“ 5 下面说法中错误的是 ( A)使用 ReDim语句可以改变数组的维数 ( B)使用 ReDim语句可以改变数组的类型 ( C)使用 ReDim语句可以改变数组的每一维的大小 ( D) ReDim语句可以使原数组中的内容被清除 6 若程序中有语句: y = proc(6),则 proc 应该是 ( A)一个 Function过程的名称 ( B)一个 Sub过程的名称 ( C)一个事件过程的名称 ( D)既可能是一个 Functio
4、n过程的名称,也可能是一个 Sub过程的名称 7 下列说法中正确的是 ( A)任何情况下都可以用标准工具栏的 “菜单编辑器 “按钮打开菜单编辑器 ( B)任何情况下都可以用标准工具栏的 “菜单编辑器 “按钮打开菜单编辑器 ( C)任何情况下都可以用 “工具 “菜单中的 “菜单 编辑器 “命令打开菜单编辑器 ( D)只有当某个窗体为当前活动窗体时,才能打开菜单编辑器 8 下面关于菜单的叙述中正确的是 ( A)弹出式菜单和下拉式菜单都可用菜单编辑器编辑 ( B)弹出式菜单不能有子菜单 ( C)菜单项可以响应 Click事件和 DblClick事件 ( D)有子菜单的菜单项不响应 Click事件 9
5、 为了向 c盘根目录下的 Stud.txt文件中添加数据而不破坏其原有数据,下列正确打开该文件的语句是 ( A) Open “c:Stud.txt“ For Output As #1 ( B) Open “c:Stud.txt“ For Append As #1 ( C) Open c:Stud.txt For Output As #1 ( D) Open c:Stud.txt For Append As #1 10 如果希望向一个顺序文件写入数据,但又要保留文件中的原有内容,应采取的文件打开方式是 ( A) Append ( B) Output ( C) Random ( D) Input
6、11 设有如下事件过程: Private Sub Command1_Click() ch = “ABCDEFG“ n = Len(ch) k = 1 Do Print Mid(ch, k, 1); Mid(ch, n, 1); k = k + 1 n = n - 1 Loop Until k n End Sub 运行此过程所产生的输出是 ( A) AGBFCEDD ( B) AGBFCED ( C) GFEDCBA ( D) GAFBECD 12 有如下事件过程: Private Sub Form_Click() Dim a As Long, b As Long Dim sum As Long
7、 Dim x As Integer a = 1 b = 1 For x = 1 To 11 Step 2 a = b * x _ s = s + a sum = sum + s Next x Print sum End Sub 以上程序的功能是,计算 1!+(1!+3!)+(1!+3!+5!)+ +(1!+3!+5!+11!) 的值并输出。程序不完整,在 _处应填入的内容是 ( A) b = a * (x + 1) ( B) a = a * (x - 1) ( C) a = a * (x + 1) ( D) b = a * x 13 下面程序的功能是找出这样一个三位整数:它等于每位数字的阶乘之
8、和,例如145就是这样的数(即 145 = 1! + 4! + 5!) Private Sub Command1_Click() Dim x As Integer, i As Integer, j As Integer, k As Integer For i = 1 To 9 For j = 0 To 9 For k = 0 To 9 a = _ If a = fact(i) + fact(j) + fact(k) Then Print a End If Next k Next j Next i End Sub Function fact(n As Integer) As Long Dim x
9、 As Long x = 1 For k = 1 To n x = x * k Next k fact = x End Function 程序不完整,在横线上应填写的是 ( A) i * 100 + j * 10 + k ( B) i * 1000 + j * 100 + k * 10 ( C) i * 10 + j * 10 + k * 10 ( D) fact(0) + fact(1) + fact(9) 14 有如下通用过程: Private Sub St(ByVal strX As String, strY As String) Dim Ts As String i = Len(str
10、X) Do While i = 1 Ts = Ts + Mid(strX, i, 1) i = i - 1 Loop strY = Ts End Sub 在窗体上画一个命令按钮,其名称为 Command1,然后编写如下事件过程: Private Sub Command1_Click() Dim s1 As String, s2 As String s1 = “abcd“ Call St(s1, s2) Print s2 End Sub 程序运行后,单击命令按 钮,输出结果是 ( A) abcd ( B) dabc ( C) dcba ( D) abdc 15 在窗体上画一个名称为 Comman
11、d1的命令按钮,然后编写如下程序代码: Dim x As Integer Private Sub MySub() Static x As Integer Dim y As Integer x = x + 10 y = y + 10 Print “x=“; x; “y=“; y; End Sub Private Sub Form_Load() x = 50 End Sub Private Sub Command1_Click() Call MySub MySub Print “x=“; x End Sub 程序运行时,单击 Command1,则在窗体上输出的结果是 ( A) x=10 y=10
12、x=60 y=10 x=60 ( B) x=60 y=10 x=70 y=10 x=70 ( C) x=60 y=10 x=70 y=10 x=50 ( D) x=10 y=10 x=20 y=10 x=50 16 在窗体上画个文 本框(名称分别为 Text1和 Text2),一个命令按钮(名称为Command1)。并定义以下记录类型和变量: Private Type Teacher ID As Integer Name As String * 10 End Type Dim Teach As Teacher 程序运行后,在 Text1中输入编号( ID),在 Text2中输入姓名( Name
13、),然后单击命令按钮,则把两个文本框中的内容写入随机文件 d:f1.txt。以下能够正确实现上述功能的事件过程是 ( A) Private Sub Command1_Click() Open “d:f1.txt“ For Random As #1 Len = Len(Teach) Teach.ID = Val(Text1.Text) Teach.Name = Text2.Text Put #1, 1, Teach Close #1 End Sub ( B) Private Sub Command1_Click() Open “d:f1.txt“ For Random As #1 Len = L
14、en(Teach) Teach.ID = Val(Text1.Text) Teach.Name = Text2.Text Put #1, Teach.ID, Teach.Name Close #1 End Sub ( C) Private Sub Command1_Click() Open “d:f1.txt“ For Random As #1 Len = Len(Teach) Teach.ID = Val(Text1.Text) Teach.Name = Text2.Text Write #1, 1, Teach Close #1 End Sub ( D) Private Sub Comma
15、nd1_Click() Open “d:f1.txt“ For Random As #1 Len = Len(Teach) Teach.ID = Val(Text1.Text) Teach.Name = Text2.Text Write #1, Teach.ID, Teach.Name Close #1 End Sub 17 在窗体上画 2个名称分别为 Label1和 Label2的标签,然后编写如下程序代码: Sub S(L As Label, ByVal a As Integer) L.Caption = “1234“ a = a * a End Sub Private Sub Form_
16、Load() Label1.Caption = “ABCD“ Label2.Caption = 10 End Sub Private Sub Form_Click() Dim a As Integer a = Val(Label2.Caption) S Label1, a Label2.Caption = a End Sub 运行程序,单击窗体,在两个标签中显示的内容分别是 ( A) ABCD和 10 ( B) 1234和 100 ( C) ABCD和 100 ( D) ABCD和 100 18 在窗体上画一个名称为 Command1的命令按钮,一个名称为 Text1的文本框数组(含个文本框,
17、下标从开始),然后编写如下事件过程: Private Sub Command1_Click() Dim i As Integer, n As Integer For Each TextBox In Text1 Text1(i) = Text1(i).Index n = 10 * (n + Val(Text1(i).Text) i = i + 1 Next Print n End Sub 运行程序,单击命令按钮 Command1,则在窗体上的输出结果是 ( A) 0123 ( B) 123 ( C) 1234 ( D) 1230 19 有如下通用过程: Function Fs(ByVal n A
18、s Long) As Long Dim k As Long k = 1 n = Abs(n) Do While n k = k * (n Mod 10) n = n 10 Loop Fs = k End Function 编写如下事件过程: Private Sub Form_Click() Dim a As Long Dim b As Long a = InputBox(“请输入一个数 “) a = CLng(A) b = Fs(A) Print b End Sub 程序运行后,单击窗体,在输入对话框中输入 567,输出结果为 ( A) 56 ( B) 67 ( C) 210 ( D) 18
19、20 在 窗体上画一个名称为 Command1的命令按钮,然后编写如下事件过程: Option Base 1 Private Sub Command1_Click() Dim a(3, 3) As Integer Dim i As Integer, j As Integer, s As Integer s = 0 For i = LBound(a, 1) To UBound(a, 1) For j = LBound(a, 2) To UBound(a, 2) a(i, j) = (i - 1) * 3 + j If i = j Then s = s + a(i, j) End If Next
20、j, i Print s End Sub 程序运行时,单击 Command1,则在窗体上输出的结果是 ( A) 15 ( B) 26 ( C) 34 ( D) 19 21 下列叙述中正确的是 ( A)每一个结点有两个指针域的链表一定是非线性结构 ( B)所有结点的指针域都为非空的链表一定是非线性结构 ( C)循环链表是 循环队列的链式存储结构 ( D)线性结构的存储结点也可以有多个指针 22 使用白盒测试方法时,设计测试用例应根据 ( A)程序的内部逻辑 ( B)程序的复杂结构 ( C)程序的功能 ( D)使用说明书 23 在医院,每个医生只属于某一个诊疗科,医生同一天可为多位患者看病,而一名
21、患者可在多个科室治疗。则实体医生和患者之间的联系是 ( A)多对多 ( B)多对一 ( C)一对多 ( D)一对一 24 设序列长度为 n,在最坏情况下,时间复杂度为 O(log2n)的算法是 ( A)二分法查找 ( B)顺序 查找 ( C)分块查找 ( D)哈希查找 25 设数据集合为 D= 1,3,5,7,9 , D上的关系为 R,下列数据结构 B=( D, R)中为非线性结构的是 ( 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)
22、( D) R= (1,3), (3,5), (5,9) 26 深度为 7的二叉树共有 127个结点,则下列说法中错误的是 ( A)该二叉树有一个度为 1的结点 ( B)该二叉树是满二叉树 ( C)该二叉树是完全二叉树 ( D)该二叉树有 64个叶子结点 27 某二叉树的中序序列为 BDCA,后序序列为 DCBA,则前序序列为 ( A) DCBA ( B) BDCA ( C) ABCD ( D) BADC 28 下面能作为软件需求分析工具的是 ( A) PAD图 ( B)程序流程图 ( C)甘特图 ( D)数据流程图 (DFD图 ) 29 下面不属于对象主要特征的是 ( A)唯一性 ( B)多态
23、性 ( C)可复用性 ( D)封装性 30 表 达式 Sin(0) + Abs(-1) + Int(Rnd(0) + Len(Str(3.14)的值是 ( A) -1 ( B) 4 ( C) 5 ( D) 6 31 以下有关表达式的说法中,正确的是 ( A)表达式 LCase(“AB12“)Left(“abc“,2) And Len(“12.3“)=5 的值是 True ( B)表达式 Int(Rnd() * 11) + 10表示的值的范围是 10 21 ( C)表达式 “1234“ABCD“的值为 Flase ( D)表达式 Chr(Asc(“B“)=UCase(“b“)的值为 False
24、32 下列符号常量的声明中,不合法的是 ( 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“ 33 以下叙述中错误的是 ( A)设计窗体时,单击窗体上任何一个控件后,就可以在属性窗口中设置窗体的属性 ( B)窗体是对象 ( C)窗体可以被移动 ( D)窗体的 Name属性在程序运行过程中不能被修改 34 以下语句或子句中,符合 Visual Basic语法要求的是 (
25、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 36 下列表达式中值为 -6的是 ( A) Int(-5.678) ( B) Int(-5.678-0.5) ( C) Fix(-5.678+0.5) ( D) Fix(-
26、5.678) 37 在窗体上画一个文本框、一个标签,其名称分别为 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 38 为了使组合框成为下拉式列表框,应把其 Style属性设置为 ( A) 0 ( B) 1 ( C) 2 ( D)
27、3 39 窗体上有一个名称为 Label1的标签控件,其 Caption属性的初始值为 0,还有一个计时器。为了在程序运行时,标签上的数字每秒加 1,应该把语句:Label1.Caption = Label1.Caption + 1 写在一个事件过程中,这个事件过程是 ( A)标签的 Timer事件过程 ( B)计时器的 Timer事件过程 ( C)标签的 Click事件过程 ( D)计时器的 Click事件过程 40 当直线控件的 BorderStyle属性被设置为: 2 - Dash,控件显示的是 ( A)实线 ( B)虚线 ( C)点线 ( D)不可见 二、基本操作题 41 (1)在名称
28、为 Form1的窗体上添加一个名称为 Label1、标题为 “滚动条控件 ”的标签,一个名称为 HScroll1的水平滚动 条。请通过属性窗口设置属性使水平滚动条取值范围的最大值为 100,最小值为 1,滚动条的高度为 300,宽度为 3000,滚动块的初始位置为 20。程序运行后的窗体如图所示。 注意:存盘时必须存放在考生文件夹下,工程文件名保存为 sjt1 vbp,窗体文件名保存为 sjt1 frm。 (2)在名称为 Form1的窗体上添加一个名称为 Shape1的形状控件,位置在窗体的顶部,在属性窗口中将其设置为圆形。添加一个名称为 Timer1的计时器,在属性窗口中将其设置为禁用,时间
29、间隔为 0 5秒,窗体如图所示。请编写窗体的 Load事件 过程和计时器的事件过程,使得程序一开始运行,计时器即变为可用,且每隔 0 5秒形状控件向下移动 100。 注意:要求程序中不得使用变量,每个事件过程中只能写一条语句。存盘时必须存放在考生文件夹下,工程文件名保存为 sjt2 vbp,窗体文件名保存为 sjt2 frm。 三、简单应用题 42 (1)在考生目录下有一个工程文件 sjt3 vbp,窗体上有一个组合框 Combo1,其中已经预设了内容;还有一个文本框 Text1和三个命令按钮,名称分别为Command1、 Command2、 Command3,标题分别为 “修改 ”、 “确定
30、 ”、 “添加 ”。程序运行时, “确定 ”按钮不可用,如图所示。 程序的功能是:在运行时,如果选中组合框中的一个列表框,单击 “修改 ”按钮,则把该项复制到 Text1中 (可在 Text1中修改 ),并使 “确定 ”按钮可用;若单击 “确定 ”按钮,则把修改后的 Text1中的内容替换组合框中该列表项的原有内容,同时使 “确定 ”按钮不可用;若单击 “添加 ”按钮,则把在 Text1中的内容添加到组合框中。 所提供的窗体文件已经给出了所有控件和程序,但程序不完整,请去掉程序中的注释符,把程序中的 “?”改为正确的内容。但不能修改程序中 的其他部分,也不能修改控件和属性。最后把修改后的文件按
31、原文件名存盘。 (2)在考生目录下有一个工程文件Sjt4 vbp,窗体中有两个滚动条分别表示红灯亮和绿灯亮的时间 (秒 ),移动滚动框可以调节时间,调节范围为 110秒。刚运行时,红灯亮。单击 “开始 ”按钮则开始切换:红灯到时后自动变为黄灯, 1秒后变为绿灯;绿灯到时后自动变为黄灯, 1秒后变为红灯,如此切换 (如图所示 )。 所提供的窗体文件已经给出了所有控件和程序,但程序不完整,请去掉程序中的注释符,把程序中的“?”改为正确的内容。 提示:在三个图片框 picture1、 picture2、 picture3中分别放置了红灯亮、绿灯亮、黄灯亮的图标,并重叠在一起,当要使某个灯亮时,就使相
32、应的图片框可见,而其他图片框不可见,并保持规定时间,时间到就切换为另一个图片框可见,其他图片框不可见。 注意:考生不得修改工程中已经存在的内容和控件属性,最后把修改后的文件按原文件名存盘。 四、综合应用题 43 在考生文件夹下有一个工程文件 Sjt5 vbp,相应的窗体文件为 sjt5 frm,此外还有一个名为 data in txt的文本文件,其内容如下: 32 43 76 58 28 12 98 57 31 42 53 64 75 86 97 13 24 35 46 57 68 79 80 59 37程序运行后单击窗体,将把文件datain txt中的数据输入二维数组 Mat中,按 5行
33、5列的矩阵形式显示在窗体上,然后交换矩阵第二列和第四列的数据,将交换后的矩阵显示在窗体上,如图所示。在窗体的代码窗口中,已给出了部 分程序,这个程序不完整,请把它补充完整,并能正确运行。 要求:去掉程序中的注释符,把程序中的 ?改为正确的内容 (可以是多行 ),使其实现上述功能,但不能修改程序中的其他部分。最后将修改后的文件按原文件名存盘。 国家二级( VB)机试模拟试卷 56答案与解析 一、选择题 1 【正确答案】 D 【试题解析】 Path 属性返回要显示的文件所在的路径,其默认值为系统的当前工作路径; FileName 属性主要用于返回在文件列表框中被选定文件的文件名。故正确答案为选项
34、D。 2 【正确答案】 B 【试题解 析】 Form_Load 方法即在 Form窗体加载时, Text1.Text的值被赋值为“ABCDEF“, Text2.SetFocus 将光标定于文本框 Text2。 Text1_GotFocus 方法即在Text1获得焦点时, Text1.SelStart = 2从本文框起始位置为 2,即 C的位置,Text1.SelLength = 3 设置选中长度为 3。故正确答案为选项 B。 3 【正确答案】 A 【试题解析】 Frame 控件中不能接收焦点,选项 B错误; Caption属性用来设置框架的标题文本,选项 C错误;框架控 件是一个容器控件,可以
35、在其上放置其他控件对象,但不能输入文本,选项 D错误。故正确答案为选项 A。 4 【正确答案】 D 【试题解析】 InputBox 函数的格式为 InputBox (“提示文本 “, “对话框标题“, “默认值 “),输入数值 100,变量 X的值为字符串 “100“,标题栏中显示的是“示例 “,初始默认值为字符串 “0“,可见,选项 A、 B、 C错误,故正确答案为选项 D。 5 【正确答案】 B 【试题解析】 ReDim语句不能改变动态数组的数据类型,除非动态数组被声明为 Variant类 型,故正确答案为选项 B。 6 【正确答案】 A 【试题解析】 VB 中 Function 过程才有
36、返回值, Sub过程没有返回值,故正确答案为选项 A。 7 【正确答案】 D 【试题解析】 VB 中菜单编辑器是用来设计 VB 应用程序中的菜单的,它可以在编程量很小的情况下完成交互式菜单的快速自定义和建立菜单,菜单即窗体,因此,只有当某个窗体为当前活动窗体时,才能打开菜单编辑器。选项 A、 B、 C错误,正确答案为选项 D。 8 【正确答案】 A 【试题解析】 弹出式菜单也可以有子菜单,选项 B错误;每一 个菜单包括主菜单和子菜单都相当于一个命令按钮,单击菜单项即触发该菜单项的 Click 事件过程,选项 C、 D错误。故正确答案为选项 A。 9 【正确答案】 B 【试题解析】 文件打开格式
37、为 Open 文件说明 For 方式 Access 存取类型 锁定 As # 文件号 Len = 记录长度 。其中,输入输出方式中 Output 指定文件顺序输出方式, Append方式指定文件顺序输出方式,并向文件的尾部追加写入数据。故本题正确答案为 B 选项。 10 【正确答案】 A 【试题解析】 Input、 Output和 Append用于设置顺序文件的打开方式, Input表示从打开的文件中读取数据; Output表示向打开的文件中写入数据,文件中原有的数据被覆盖; Append 向打开的文件中添加数据,但文件中原有的数据被保留,新的数据以文件为开始进行添加。故正确答案为选项 A。
38、11 【正确答案】 A 【试题解析】 函数 Len(ch)返回字符串 ch 的长度, Len( ch)= 7;函数 Mid()表示向后截取一个字符,题目中 k=1,并且每次递增 1,所以 Mid(ch, k, 1)表示从ch 字符串的第 1个字符开 始,每次向后截取 1个字符; n= Len( ch)=7,并且 n 每次递减 1,所以 Mid(ch, n, 1)表示从最后 1个字符开始,每次截取字符串 ch 的 1个字符;直到判断条件 kn 成立。故正确答案为选项 A。 12 【正确答案】 A 【试题解析】 最简单的方法,直接代入一些数字,如 x=1时, A) b=2a; B) a=0; C)
39、a=2a; D)b=a;再代入程序中,知 B选项不符合题意。当循环体执行了两次,即当 x=3时,再分别将 A、 C、 D的答案代入程序中,知 C和 D选项错误;另一种方法是,本程序的主要由累加和累乘两种 运算结合在一起,分析内容,可知, a=b*x,实现的是记录单个数值,如 :1!、 3!、 5!、 7!等,空格处的功能,是要保存下一次阶乘的值,如 7!等价于 a=b!*7, b的值应该是 b=a*( 7+1);故本题正确答案为 A。 13 【正确答案】 A 【试题解析】 本题中 fact()过程表示求得 n 的阶乘,即 n!;程序中, i、 j、 k分别表示该整数的百、十、个位上的数,旨在使
40、得 100 * i + 10 * j + k = i! + j! + k!。故正确答案为选项 A。 14 【正确答案】 C 【试题解析】 求 字符串长函数 Len(s),英文全称: Length,返回字符串 s的长度,即所包含的字符的个数。 Do WhileLoop ,当程序开始执行时,先计算循环 “条件 “值,当条件为假时结束循环,否则执行循环体。字符串截取函数Mid$(s,n1,n2),从 s第 n1 个字符开始,向后截取 n2个字符。 St过程中 strX前有ByVal,是按值传递,即 s1将值传给形参 strX; strY是按地址传递, s2把地址传给了形参 strY, strX的变化
41、不引起 s1的变化,但 strY的变化却能改变 s2。程序开始执行时,先将字符变量 s1的值按值传 递的方式传给了过程 St,i=Len(strX)=Len(s1)=4;执行 do while循环,循环条件 4=1为真,执行循环体,Mid(strX,4,1)=d, Ts = Ts + d = d, i=3;循环条件 3=1为真,执行循环体,Mid(strX,3,1)=c,Ts = Ts+d = dc, i=2;如此循环,知最后 strY=dcba,因 strY与 s2是按地址传递的方式,故 strY值的变化也会引起 s2值的变化,所以s2=strY=dcba;本题正确答案为 C。 15 【正确
42、答案】 D 【试题解析 】 dim定义的变量称为 “自动变量 “,当引用 Dim定义变量时,变量值会被重新设置(数值变量重新设置为 0,字符串变量被设置为空)。也就是说,下次再使用此变量,其值为初始值;而 static定义变量,每次引用该静态变量后,其值会继续保留,作为下一次引用时该变量的初始值。程序先定义了模块变量 x为整型,位置在事件之外;当程序开始运行时,首先加载窗体,得 x=50,然后监听命令按钮事件,当用户点击了命令按钮,程序 Call MySub过程,会用 Call语句调用 Sub过程 MySub。在 MySub 过程中,定义了局部变量 y,和静 态变量 x,位于过程内部, x=x
43、+10=10, y=y+10=10,接着打印 x=10 y=10。注意,本过程执行完后,局部变量 y的值会被重新设置为 0,而 Static定义的变量 x,其值为 10;程序继续执行 MySub,第二次调用 MySub 过程, x=x+10=10+10=20,y=y+10=0+10=10,接着打印 x=20 y=10;程序最后打印 x的值,用 static所定义的变量 x,在过程内,其作用域范围被限定 ,其不会改变模块变量 x的值。故打印出来的结果是 x=50,也就是加载窗体后,对变量 x进行初始化后的值。故本题正 确答案为 D。 16 【正确答案】 A 【试题解析】 向顺序文件写操作格式:
44、Write#文件号,表达式,题目要求为随机文件,故选项 C和 D均错误;向随机文件写操作格式: Put #文件名, 记录号 ,变量,选项 B 是将 Text2中输入姓名写入到随机文件中,而不是将两个文本框的内容写入,故选项 B 错误。本题正确答案为 A。 17 【正确答案】 D 【试题解析】 本题中 Label2.Caption 的值 a为 ByVal按值传递,当过程调用结束后,参数所占用的存储空间也同时被释放, a的值不变,但是 Label1.Caption 的传递方式为默认传递方式( ByRef),对形参的改变会影响实参,即Label1.Caption 会被修改为 “1234“。故正确答案
45、为选项 D。 18 【正确答案】 D 【试题解析】 控件数组是指由一组相同类型的控件组成。数组中的每一个控件都有唯一的索引号( Index)。分析该程序,在 For EachNext 结构中,语句“Text1(i)=Text(i).Index“,实际上是将每个索引( Index)的值赋予每个控件元素的 Text值。第一次执行时, n=0, Text1(0) = Text(0).Index,n=10*(0+Val(Text1(0).Text)=10*(0+0)=0, i=2。第二次执行时, Text1(1) = Text(1).Index, n=10*(0+Val(Text1(1).Text)=
46、10*(0+1)=10, i=3。第三次执行时,Text1(2) = Text(2).Index, n=10*(10+Val(Text1(2).Text)=10*(10+2)=120, i=4。第四次执行时, Text1(3) = Text(3).Index,n=10*(120+Val(Text1(3).Text)=10*(120+3)=1230, i=5。循环结束。故最后输出结果为 1230。本题正确答案为 D。 19 【正确答案】 C 【试题解析】 A的值为 256,调用 Fs 函数,执行 3次循环:第 1次, k=7, n = 56 ;第 2次, k=7*6 = 42, n = 5 ;第
47、 3次, k= 42*5 = 210, n = 0;不满足循环条件,退出循环。故正确答案为选项 C。 20 【正确答案】 C 【试题解析】 UBound 函数返回为指定的数组维可用的最大下标, LBound函数返回为指 定的数组维可用的最小下标。程序开头定义了 Option Base 1 这时定义一维数组下标从 1开始;故 LBound(A, 1)=1, Ubound(A, 1)=3; LBound(A,2)=1, Ubound(A, 2)=3;外层 for循环 ,循环变量 i从 1取到 3,内层 for循环,循环变量 j从 1取到 3,根据 a(i,j)=(i-j)*3+j可知, a(1,
48、1)=1; a(1, 2)=2; a(1,3)=3; a(2, 1)=4; a(2, 2)=5; a(2, 3)=6; a(3, 1)=7; a(3, 2)=8; a(3, 3)=9; If 条件 Then 部分,如果选择的条件为真,则执行 then部分;满足 i=j的数组元素有 a(1, 1), a(2, 1), a(2, 2), a(3, 1), a(3, 2), a(3, 3),将各项值累加得到 s的值, s=34。故正确答案为选项 C。 21 【正确答案】 D 【试题解析】 一个非空的数据结构如果满足以下两个条件:有且只有一个根结点;每一个结点最多有一个前件,也最多有一个后件,则称为线
49、性结构,在数据结构中习惯称为线性表。双向链表结点具有两个指针域,属于线性结构, A选项错误。循环链表所有结点的指针域都为非空,属于线性结构, B选项错误。循环链表是链表,循环队列属于队列,队列只能在队尾入队,在排头退队,链表可以在任何位置插入、删除, C选项错误。双向链表结点具有多个指针域, D选项正确。 22 【正确答案】 A 【试题解析】 白盒测试又称为结构测试或逻辑驱动测试,它允许测试人员利用程序内部的逻辑结构及有关信息来设计或选择测试用例,对程序所有的逻辑路径进行测试,故 A选项正确。 23 【正确答案】 A 【试题解析】 一般来说,实体集之间必须通过联系来建立联接关系,分为三类:一对一联系( 1:1)、一对多联系( 1:m)、多 对多联系( m:n)。医生可为多位患者看病,患者也可以找多位医生看病,实体医生与患者联系是多对多, A选项正确。 24 【正确答案】 A 【试题解析】 对长度为 n 的线性表排序,最坏情况下时间复杂度,二分法查找为O( log2n);顺序查找法为 O( n);分块查找时间复杂度与分块规则有关;哈希查找时间复杂度为 O