1、国家二级(VB)机试模拟试卷 170 及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.下列关于栈叙述正确的是( )。(分数:2.00)A.栈顶元素最先能被删除B.栈顶元素最后才能被删除C.栈底元素永远不能被删除D.栈底元素最先被删除2.下列叙述中正确的是( )。(分数:2.00)A.在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B.在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C.在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D.以上说法都不正确3.某二叉树共有 7 个结点,其中叶子结点只有 1 个,则该二叉树的深度
2、为(假设根结点在第 1 层)( )。(分数:2.00)A.3B.4C.6D.74.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是( )。(分数:2.00)A.学生成绩管理系统B.C 语言编译程序C.UNIX 操作系统D.数据库管理系统5.结构化程序所要求的基本结构不包括( )。(分数:2.00)A.顺序结构B.GOTO 跳转C.选择(分支)结构D.重复(循环)结构6.下面描述中错误的是( )。(分数:2.00)A.系统总体结构图支持软件系统的详细设计B.软件设计是将软件需求转换为软件表示的过程C.数据结构与数据库设计是软件设计的任务之一D.PAD 图是软件详
3、细设计的表示工具7.负责数据库中查询操作的数据库语言是( )。(分数:2.00)A.数据定义语言B.数据管理语言C.数据操纵语言D.数据控制语言8.一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是( )。(分数:2.00)A.1:1 联系B.1:m 联系C.m:1 联系D.m:n 联系9.有三个关系 R、S 和 T 如下: (分数:2.00)A.自然连接B.并C.交D.差10.定义无符号整数类为 UInt,下面可以作为类 UInt 实例化值的是( )。(分数:2.00)A.一 369B.369C.0369D.整数集合1,2,3,4,511.VB 中有这样一类文件:该
4、文件不属于任何一个窗体,而且仅包含程序代码,这类文件的扩展名是( )。(分数:2.00)A.vbpB.basC.vbwD.frm12.能够产生 1 到 50 之间(含 1 和 50)随机整数的表达式是( )。(分数:2.00)A.Int(Rnd*51)B.Int(Rnd(50)+1)C.Int(Rnd*50)D.Int(Rnd*50+1)13.要求如果 x 被 7 除余 2,则输 x 的值,下列语句中不能实现此功能的语句是( )。(分数:2.00)A.If x mod 7=2 Then Print xB.If x 一(x7)*7=2*Then Print xC.If x-(x/7)*7=2 T
5、hen Print xD.If x-Int(x/7)*7=2 Then Print x14.表达式 Sgn(025)的值是( )。(分数:2.00)A.一 1B.0C.1D.0515.如下关于变体类型变量的叙述中,错误的是( )。(分数:2.00)A.变体类型数组中只能存放同类型数据B.使用 Array 初始化的数组变量,必须足 Vat4ant 类型C.没有声明而直接使用的变量其默认类型均是 VariantD.在同一程序中,变体类型的变量可以被多次赋以不同类型的数据16.满足下列条件之一的年份是闰年: 1)年份能被 4 整除但不能被 100 整除 2)年份能被 400 整除 若 y 代表年份,
6、下面判断闰年的正确表达式是( )。(分数:2.00)A.y Mod 4 And y Mod 100 Or y Mod 400B.y Mod 4=0 Or y Mod 1000 And y Mod 400=0C.y Mod 1000 And(y Mod 4=0 Or y Mod 400=0)D.y Mod 4=0 And y Mod 1000 Or y Mod 400=017.以下关于键盘事件的叙述中,错误的是( )。(分数:2.00)A.按下键盘按键既能触发 KeyPress 事件,也能触发 KeyDown 事件B.KeyDown、KeyUp 事件过程中,大、小写字母被视作相同的字符C.Key
7、Down、KeyUp 事件能够识别 Shift、Alt、Ctrl 等键D.KeyCode 是 KeyPress 事件的参数18.以下关于窗体的叙述中错误的是( )。(分数:2.00)A.窗体的 Hide 方法将窗体隐藏并卸载B.窗体的 Show 方法可以将窗体装入内存并显示该窗体C.若工程中包含多个窗体,则可指定一个为启动窗体D.窗体的 Load 事件在加载窗体时发生19.如果在窗体模块中所有程序代码的前面有语句:Dim x,则 x 是( )。(分数:2.00)A.全局变量B.局部变量C.静态变量D.窗体级变量20.计算下面分段函数的正确语句是( )。 (分数:2.00)A.y=IIf(x0,
8、x+1,IIf(x0,x-1,x+1)C.y=IIf(x0,x+1,IIf(xb a=ab Wend fun=a End Function 在调试时发现函数是错误的。为使函数能产生正确的返回值,应做的修改是( )。(分数:2.00)A.把 a=ab 改为 a=baB.把 a=ab 改为 a=abC.把 While ab 改为 While ab 改为 While a=b34.在窗体上画 1 个命令按钮和 1 个文本框,其名称分别为 Command1 和 Text1,再编写如下程序: Dim ss As String Private Sub Text1_KeyPress(KeyAscii As I
9、nteger) If Chr(KeyAscii)”123456”Then n=n+1 Print“口令输入错误“n&“次“ End If End SUb 希望程序运行时得到左图所示的效果,即:输入口令,单击“确认口令”命令按钮,若输入的口令不是“123456”,则在窗体上显示输入错误口令的次数。但上面的程序实际显示的是右图所示的效果,程序需要修改。下面修改方案中正确的是( )。 (分数:2.00)A.在 Dim n 语句的下面添加一句:n:0B.把 Print“口令输入错误“&n“次“改为 Print“口令输入错误“+n+“次“C.把 Print“口令输入错误“&n&“次“改为 Print“口
10、令输入错误“&Str(n)&“次“D.把 Dim n 改为 Static n38.下面程序计算并输出的是( )。 Private Sub Command1-Click() a=10 S=0 Do s=s+a*a*a a=a1 Loop Until a0 And y Mod 400=0C.y Mod 1000 And(y Mod 4=0 Or y Mod 400=0)D.y Mod 4=0 And y Mod 1000 Or y Mod 400=0 解析:解析:根据闰年的条件,第一个条件是并且的关系,要用 And 运算符。整除用 Mod 运算符,取模后为 0,说明能整除,不为 0,说明不能整除。
11、所以第一个条件为 y Mod 4=0 And y Mod 1000。 第二个条件是能被 400 整除,所以是 y Mod 400=0。 满足其中任何一个条件就行,两个条件之间是或者关系,所以用 Or 运算符。 综合一下,故 D 选项正确。17.以下关于键盘事件的叙述中,错误的是( )。(分数:2.00)A.按下键盘按键既能触发 KeyPress 事件,也能触发 KeyDown 事件B.KeyDown、KeyUp 事件过程中,大、小写字母被视作相同的字符C.KeyDown、KeyUp 事件能够识别 Shift、Alt、Ctrl 等键D.KeyCode 是 KeyPress 事件的参数 解析:解析
12、:当用户按下键盘上的任意键时,会触发当前拥有焦点对象的 KeyDown 事件,用户松开键盘上任意键时,就会触发 KeyUp 事件。当用户按下又松开键盘上任意键时,触发 KeyPress 事件。故 A 选项正确。 KeyDown 事件和 Keyup 事件均向事件过程返回两个参数 KeyCode 和 Shift。KeyCode 参数返回所按键对应的 ASCII 字符代码的整型数值或键代码常数,大小写字符被看作是相同字符,返回同一个 KeyCode 值。故 B 选项正确。 Shift 参数用于判断用户是否按下 Shift、Ctrl 和 Alt 键,若用户按下了对应的键,Shift 参数会返回不同的值
13、。根据以上 KeyDown 和 KeyUp 事件能识别 Shift、Ctrl 和 Alt 键。故 C 选项正确。 KeyPress 事件只有一个参数 KeyAscii,它可以返回按键对应的 Ascii 值,大小写字母 Ascii 值不同。KeyCode 不是 KeyPress 事件的参数。故 D 选项错误。18.以下关于窗体的叙述中错误的是( )。(分数:2.00)A.窗体的 Hide 方法将窗体隐藏并卸载 B.窗体的 Show 方法可以将窗体装入内存并显示该窗体C.若工程中包含多个窗体,则可指定一个为启动窗体D.窗体的 Load 事件在加载窗体时发生解析:解析:窗体的 Hide 方法只是将窗
14、体隐藏,并不卸载窗体。故 A 选项错误,其他选项都正确。19.如果在窗体模块中所有程序代码的前面有语句:Dim x,则 x 是( )。(分数:2.00)A.全局变量B.局部变量C.静态变量D.窗体级变量 解析:解析:在窗体所有代码前定义的变量是窗体级变量,在整个窗体模块的过程中都能引用。20.计算下面分段函数的正确语句是( )。 (分数:2.00)A.y=IIf(x0,x+1,IIf(x0,x-1,x+1)C.y=IIf(x0,x+1,IIf(xb a=ab Wend fun=a End Function 在调试时发现函数是错误的。为使函数能产生正确的返回值,应做的修改是( )。(分数:2.0
15、0)A.把 a=ab 改为 a=baB.把 a=ab 改为 a=abC.把 While ab 改为 While ab 改为 While a=b 解析:解析:程序中没有考虑余数为 0 的情况,即,条件中应该有 a=b,则 a=ab,这样才能正确得到余数 0。因此程序中应该修改 while 的条件 ab 为 a:b。34.在窗体上画 1 个命令按钮和 1 个文本框,其名称分别为 Command1 和 Text1,再编写如下程序: Dim ss As String Private Sub Text1_KeyPress(KeyAscii As Integer) If Chr(KeyAscii)”123
16、456”Then n=n+1 Print“口令输入错误“n&“次“ End If End SUb 希望程序运行时得到左图所示的效果,即:输入口令,单击“确认口令”命令按钮,若输入的口令不是“123456”,则在窗体上显示输入错误口令的次数。但上面的程序实际显示的是右图所示的效果,程序需要修改。下面修改方案中正确的是( )。 (分数:2.00)A.在 Dim n 语句的下面添加一句:n:0B.把 Print“口令输入错误“&n“次“改为 Print“口令输入错误“+n+“次“C.把 Print“口令输入错误“&n&“次“改为 Print“口令输入错误“&Str(n)&“次“D.把 Dim n 改
17、为 Static n 解析:解析:本题考查的是动态变量与静态变量。原来的程序中无法使变量 n 的值保持到下一次的使用,只有 D 选项符合要求,将 n 定义为静态局部变量,在程序执行到该对象的声明处时被首次初始化,每次执行后 n 的值都会被保存到内存中,所以答案 D 是正确的;而 A 选项只是对 n 赋初值,所以 A 选项没有意义;B 选项和 C 选项都没有达到改进的目的。38.下面程序计算并输出的是( )。 Private Sub Command1-Click() a=10 S=0 Do s=s+a*a*a a=a1 Loop Until a=0 Print s End Sub(分数:2.00
18、)A.1 3 +2 3 +3 3 +10 3 的值 B.10!+3!+2!+1!的值C.(1+2+3+10) 3 的值D.10 个 10 3 的和解析:解析:在 Do 循环语句中程序大致执行过程如下:s=103,a=9;s=103+93,a=8;s=103+93+83,a=7;,依此类推,因此正确的答案为 A。39.设窗体上有一个通用对话框控件 CD1,希望在执行下面程序时,打开如图所示的文件对话框: Private Sub Command1_Click() CD1DialogTitle=“打开文件“ CD1InitDir=“C:“ CD1Filter=|所有文件|*|Word 文档|*doc
19、*文本文件|*txt“ CD1FileName=“ CD1Action=1 If CD1FileName=“Then Print“未打开文件“ Else Print“要打开文件“&CD1FileName End If End Sub(分数:2.00)A.把 CD1Action=1 改为 CD1Action=2B.把“CD1Filter=“后面字符串中的“所有文件“改为“文本文件“C.在语句 CD1Action=1 的前面添加:CD1FilterIndex=3 D.把 CD1FileName=“改为 CD1FileName=“文本文件“解析:解析:在通用对话框控件中,Filter 属性指定了在对
20、话框中显示的文件类型,该属性可以设置多个文件类型,每种文件类型由文件描述和文件通配符与扩展名组成,并由“|”隔开。FilterIndex 属性用来指定默认的过滤器,Filter 属性中设置了多个过滤器后,每个过滤器的对应的值按从左到右顺序是l、2,FilterIndex 属性默认为 1,即第一个过滤器,因此程序中会显示 c:下的所有文件。应该在通话框打开之前(CD1Action=1 之前)添加 CD1FilterIndex=3,即使默认过滤器为第 3 个过滤器。40.设工程中有 2 个窗体:Form1、Form2,Form1 为启动窗体。Form2 中有菜单,其结构如表。要求在程序运行时,在
21、Form1 的文本框 Text1 中输入口令并按回车键(回车键的 ASCII 码为 13)后,隐藏:Form1,显示 Form2。若口令为“Teacher”,所有菜单都可见;否则看不到“成绩录入”菜单项。为此,某人在Form1 窗体文件中编写如下程序: (分数:2.00)A.把 Form1 中 Text1 文本框及相关程序放到 Form2 窗体中B.把 Form1Hide、Form2Show 两行移到 2 个 End If 之间 C.把 If KeyAscii=13 Then 改为 IfKeyAscii=“Teacher“ThenD.把 2 个 Form2inputVisible 中的“For
22、m2”删去解析:解析:原程序的执行流程为,当按下一个键后,激活 KeyPress 事件,事件中隐藏 Form1 和显示From2 的语句与判断是否按了回车键的语句是顺序的,即不论按了什么键,都会执行隐藏 Form1 和显示From2 的语句。这两句应该上移到第二个 Endlf 前面,也就是放在判断是否按了回车键的 If 语句块中。因此 B 选项正确。二、基本操作题(总题数:1,分数:2.00)41.(1)在名称为 Form1 的窗体上添加一个名称为 Label1、标题为“设置速度”的标签,通过属性窗口把标签的大小设置为自动调整。添加一个名称为 HScroll1 的水平滚动条,通过属性窗口设置适
23、当属性使滚动条的最小值为 1,最大值为 80,单击滚动条两端的箭头时,滚动框移动 2,滚动框的初始值为 30。程序运行后的窗体如图所示。 注意:存盘时必须存放在考生文件夹下,工程文件名保存为 sjt1vbp,窗体文件名保存为 sjt1frm。 (2)在名称为 Form1 的窗体上添加一个名称为 Shape1 的形状控件,添加两个名称分别为 Command1、Command2,标题分别为“圆形”、“红色边框”的命令按钮。将窗体的标题设置为“图形控件”,如图 1 所示。请编写适当的事件过程,使得程序在运行时,单击“圆形”按钮将形状控件设为圆形。单击“红色边框”按钮,将形状控件的边框颜色设为红色(&
24、HFF&),如图 2 所示。(分数:2.00)_正确答案:(正确答案:(1)步骤 1:建立界面,并设置控件的属性。程序中用到的控件及属性见表 1。步骤 2:调试并运行程序,关闭程序后按题目要求存盘。 (2)步骤 1:建立界面,并设置控件的属性。程序中用到的控件及属性见表 2。 )解析:解析:(1)根据题意,先通过标签的 Autosize 属性把标签的大小设置为自动调整。然后通过对滚动条的 SmallChange 属性设置,使单击滚动条两端的箭头时,滚动框移动 2。 (2)根据题意,通过命令按钮的 Name、Caption 属性设置命令按钮的名称和标题。在单击命令按钮事件过程中,通过设置形状控件
25、的BorderColor 和 Shape 属性,将形状控件的边框颜色设为红色和将形状控件设为圆形。三、简单应用题(总题数:1,分数:2.00)42.(1)在考生文件夹下有一个工程文件 sjt3vbp,相应的窗体文件为 sjt3frm。其功能是随机产生 20个 01000 的整数,放入一个数组中,然后输出这 20 个整数中小于 500 的所有整数之和。程序运行后,单击命令按钮(名称为 Command1,标题为“输出小于 500 的整数之和”),即可求出这些整数的和,并显示在窗体上(如图所示)。这个程序不完整,请把它补充完整,并能正确运行。 (分数:2.00)_正确答案:(正确答案:(1)步骤 1
26、:打开本题工程文件。 步骤 2:分析并编写程序代码。 程序提供代码 Option Base 1 Private Sub Command1_Click() Dim anN(20)As Integer Dim Sum As Integer Randomize For i=1 To 20 arrN(i)=Int(Rnd*?) Next i “Sum=? For i=1 To 20 If?Then Sum=? End If Next i Print Sum End Sub 程序结束 参考答案 第 1 个?处填入:1000 第 2 个?处填入:0 第 3 个?处填入:ann(i)解析:解析:(1)本题要
27、产生随机整数,须使用 Rnd 函数和 Int 函数。 Int 函数是将参数转换成整数。 Rnd 函数返回小于 1,但大于或等于 0 的值,为了生成某个范围内的随机整数,可使用以下公式: Int(upperbound-lowerbound+1)*Rnd+lowerbound) 这里,upperbound 是随机数范围的上限,lowerbound 则是随机数范围的下限。 (2)根据题意,通过For 循环语句的循环变量 i(初值为 0,终值为100,步长为 2)来获得 0100 范围内的所有偶数,并逐一将 i2 的值累加到变量 s,最后将 s 的值显示在文本框中,并将其作为函数返回值。四、综合应用题
28、(总题数:1,分数:2.00)43.在考生文件夹下有一个工程文件 sjt5vbpo 其窗体中有 2 个标题分别为“读数据”和“查找水仙花数”的命令按钮。请画 1 个名称为 Text1、初始值为空的文本框,该文本框允许显示多行内容,且有垂直滚动条,如图所示。 程序功能如下: (1)考生文件夹下 in5dat 文件中存放着 100 个三位正整数。单击“读数据”按钮,则将 in5dat 文件中的数据读入数组 a 中; (2)单击“查找水仙花数”按钮,则查找in5dat 中的所有水仙花数,并将这些水仙花数顺次显示在 Text1 文本框内。(水仙花数是指一个 3 位数,它各位数字的立方和等于它本身,例如
29、 153 就是水仙花数,因为 153=1 3 +5 3 +3 3 ) “读数据”按钮的Click 事件过程已经给出,请编写函数 narc,以完成“查找水仙花数”按钮的 Click 事件过程,实现上述功能。 (分数:2.00)_正确答案:(正确答案:步骤 1:打开本题工程文件。 步骤 2:向窗体中添加一个 Text 文本框控件,并根据题目要求设置 Text 的相关属性,设置方法如表 17 所示。 )解析:解析:向窗体中添加一个 Text 文本框控件,并根据题目要求设置 Text 的相关属性,根据代码中narc 函数的首部,可以判断出该函数的功能是判断参数 p 是否为水仙花数,可以在函数中定义一个布尔型变量 flag,将参数 p 表示的三位数的个位,十位,百位分别表示出来,通过 if 语句判断每位数的立方和是否与该数相等,若将 flag 设置为 true,最后返回 flag 的值。