1、国家二级( VB)机试模拟试卷 100及答案与解析 一、选择题 1 下列链表中,其逻辑结构属于非线性结构的是 ( A)二叉链表 ( B)循环链表 ( C)双向链表 ( D)带链的栈 2 设循环队列的存储空间为 Q(1: 35),初始状态为 front=rear=35。现经过一系列入队与退队运算后, front=15, rear=15,则循环队列中的元素个数为 ( A) 15 ( B) 16 ( C) 20 ( D) 0或 35 3 下列关于栈的叙述中,正确的是 ( A)栈底元素一定是最后入栈的元素 ( B)栈顶元素 一定是最先入栈的元素 ( C)栈操作遵循先进后出的原则 ( D)以上说法均错误
2、 4 在关系数据库中,用来表示实体间联系的是 ( A)属性 ( B)二维表 ( C)网状结构 ( D)树状结构 5 公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是 ( A) 1: 1联系 ( B) m: 1联系 ( C) 1: m联系 ( D) m: n联系 6 有两个关系 R和 S如下: 则由关系 R得到关系 S的操作是 ( A)选择 ( B)投影 ( C)自然连接 ( D)并 7 数据字典( DD) 所定义的对象都包含于 ( A)数据流图( DFD图 ) ( B)程序流程图 ( C)软件结构图 ( D)方框图 8 软件需求规格说明书
3、的作用不包括 ( A)软件验收的依据 ( B)用户与开发人员对软件要做什么的共同理解 ( C)软件设计的依据 ( D)软件可行性研究的依据 9 下面属于黑盒测试方法的是 ( A)语句覆盖 ( B)逻辑覆盖 ( C)边界值分析 ( D)路径覆盖 10 下面不属于软件设计阶段任务的是 ( A)软件总体设计 ( B)算法设计 ( C)制定软件确认测试计划 ( D)数据库设计 11 在编辑 VB应用程序时,如果不小心关闭了属性窗口,则可以单击主窗口标准工具栏上的一个按钮直接打开属性窗口,这个按钮的图标是 ( A) ( B) ( C) ( D) 12 下面关于 VB应用程序的叙述中正确的是 ( A) V
4、B应用程序只能解释运行 ( B) VB应用程序只能编译运行 ( C) VB应用程序既能解释运行,也能编译运行 ( D) VB应用程序必须先编译,然后解释运行 13 下面变量定义中错误的是 ( A) Public mod As Integer ( B) Static buf ( C) Dim ch As String * 10 ( D) Dim a!(-5 To -1) 14 语句: Print Asc(Chr$(Mid$(“98765432“, 4, 2) 的输出是 ( A) 65 ( B) A ( C) 8765 ( D) W 15 设变量 x中的值是 395,则下面语句的输出是 Print
5、 x 100 + (x Mod 100) 10) * 10 + (x Mod 10) * 100 ( A) 935 ( B) 395 ( C) 539 ( D) 593 16 如果要定义一个窗体级变量,定义变量语句的位置应该是 ( A)在使用该变量的过程中 ( B)在该窗体模块所有过程的前面 ( C)在该窗体模块所有过程的后面 ( D)在某个标准模块中 17 如果把程序的启动对象设置为: Sub Main,则 Sub Main过程 ( A)只能写在 Form1窗体中代码的最前面 ( B)可以写在 Form1窗体中代码的任何位置 ( C)只能写在某个标准模块的代码中 ( D)可以写在任何窗体或标
6、准模块的代码中 18 设有下面的程序段: x = InputBox(“请输入一个整数 “) ReDim a(x) For k = x To 0 Step -1 a(k) = k Next k 一般,在这段程序之前应先进行数组 a的定义。下面定义语句中正确的是 ( A) Dim a(100) As Integer ( B) Dim a() As Integer ( C) Dim a As Integer ( D) Dim a(0 To 100) As Integer 19 设有以下过程: Private Sub proc(x As Integer, Optional y As Integer)
7、Print x, y End Sub 针对此过程,下面正确的过程调用语句是 ( A) Call proc(a!, 23) ( B) Call proc x%, 12 ( C) proc b% ( D) x = proc(12) 20 下面语句中能够打开随机文件的是 ( A) Open “file.txt“ For Random As #1 ( B) Open “file.txt“ For Input As #1 ( C) Open “file.txt“ For Output As #1 ( D) Open “file.txt“ For Append As #1 21 文本框的 Locked属性
8、被设置为 True后产生的效果是 ( A)光标不能进入文本框 ( B)不能使文本框中的文本左右滚动 ( C)不能修改文本框中的文本 ( D)在程序中不能引用文本框的内容 22 下面关于直线控件的叙述中正确的是 ( A)它的 X1、 X2属性值必须满足 X1 c And a + c b And b + c a Then Print “可以构成一个三角形 “ Else Print “不能构成三角形 “ End If ( B) If a + b c Or a + c b Or b + c a Then Print “可以构成一个三角形 “ Else Print “不能构成三角形 “ End If (
9、 C) If a + b 10 Print i = i + 2 Loop End Sub 程序运行时输出字符 “*“的个数是 ( A) 50 ( B) 20 ( C) 16 ( D) 15 33 下面程序的功能是输出 100以内所有素数: Private Sub Command1_Click() For n = 2 To 100 isprime = True k = 2 Do While k m Then n = m m = a(k) ElseIf a(k) n And a(k) ch Then strbuf = strbuf Next k End Sub 程序运行时的输出是 ( A) 27
10、24 41 64 98 58 ( B) 64 24 98 27 58 41 ( C) 24 27 41 58 64 98 ( D) 98 64 58 41 27 24 37 由高中数学可知,对于连续函数 f(x),若 f(x1)与 f(x2)值的符号相反,则在 x1和 x2之间必存在 x0,使得 f(x0)=0(该点称为 “零点 “)。 必存在 x0,使得 f(x0)=0(该点称为 “零点 “)。 设有 VB函数: Private Function f(x As Single) As Single 可以返回 f(x)的值(函数体没有给出)。下面程序的功能是从键盘输入 2个实数 x1、 x2,判
11、断在 x1、 x2之间是否存在零点。 Private Sub Command1_Click() Dim x1 As Single, x2 As Single x1 = InputBox(“请输入一个实数 x1“) x2 = InputBox(“请再输入一个实数 x2“) If ( _ ) Then Print “在 “; x1; “与 “; x2; “之间存在零点 “ Else Print “不能确定在 “; x1; “与 “; x2; “之间是否存在零点 “ End If End Sub Private Function f(x As Single) As Single End Functi
12、on 为使上面程序可以实现该功能,程序代码中横线处应填写的代码是 ( A) f(x1) 0 Or f(x2) 0 38 设窗体上有 3个图像框: Image1、 Image2、 Image3,并有下面的程序代码: Private Sub Form_Load() Image1.Picture = LoadPicture(“LEAF.bmp“) Image2.Picture = LoadPicture(“OPEN.bmp“) Image3.Visible = False End Sub Private Sub Image1_Click() Image2.Picture = Image1.Pictu
13、re End Sub Private Sub Image2_Click() Image3.Picture = Image2.Picture Image2.Picture = Image1.Picture Image1.Picture = Image3.Picture End Sub 在程序运行期间单击 Image2,则在窗体上看到的结果是 ( A)在 Image3中显示 Image2中的图片 ( B) Image1、 Image2中原有图片被交换了 ( C) Image1、 Image2中都是原来 Imege1中的图片 ( D) Image1、 Image2中都是原来 Imege2中的图片 3
14、9 设窗体上有一个名称为 List1的列表框和一个名称为 Check1的复选框数组(下标从 0开始)。程序运行时,单击某个复选框,如果列表框中没有该复选框的标题,则把该复选框的标题添加到列表框中,否则从列表框中把该复选框 标题删除。 Private Sub Check1_Click(Index As Integer) For k = 0 To List1.ListCount - 1 If Check1(Index).Caption = List1.List(k) Then Exit For End If Next k If k = r Then flag = 0 End If End If E
15、nd Sub 运行程序后产生的结果是 ( A)圆逐渐缩小,再逐渐增大,然后再逐渐缩小,依此往复 ( B)圆一直在缩小 ( C)圆每隔 0.5秒向右移动一次 ( D)圆每隔 1秒向下移动一次 二、基本操作题 41 (1)在名称为 Form1的窗体上添加一个名称为 Label1的标签,标签的宽和高分别为 2000、 300,有边框,并利用属性窗口设置适当的属性,使其标题 “等级考试 ”居中显示,并使标签的外观如图所示。 注意:存盘时必须存放在考生文件央下,工程文件名保存为 sit1 vbp,窗体文件名保存为 sjt1 frm。(2)在名 称为 Foml1的窗体上添加一个名称为 Image1的图像框
16、,有边框,并可以自动调整装入图片的大小以适应图像框的尺寸;再添加三个命令按钮,名称分别为 Command1、 Command2、Command3,标题分别为 “红桃 ”、 “黑桃 ”、 “清除 ”。在考生文件夹下有两个图标文件,其名称分别为 “Mist34 ico”和 “Misc37 ico”。程序运行时,单击 “黑桃 ”按钮。则在图像框中显示黑桃图案 (Misc37 ico文件 );单击 “红桃 ”按钮,则在图像框中显示红桃图案 (Misc34 ico文件,如图所示 );单击 “清除 ”按 钮则清除图像框中的图案。请编写相应控件的 Click事件过程,实现上述功能。 注意:要求程序中不得使用
17、变量,每个事件过程中只能写一条吾句。存盘时必须存放在考生文件夹下,工程文件名保存为 sjt2 vbp,窗体文件名保存为 sjt2 frm。三、简单应用题 42 (1)在考牛文件灾下有一个工程文件 sjt3 vbp。程序的功能是通过键盘输入正整数到文本框中。在 “除数 ”框架中选择一个单选按钮,然后单击 “处理数据 ”命令按钮,将大于文本框中的正整数,并且能够被所选除数整除的 5个数添加到列表框List1中,如图所示。 在窗体文件中已经给出了全部控件,但程序不完整。 要求:请去掉程序中的注释符,把程序中的 ?改为正确的内容,使其实现上述功能,但不能修改程序的其他部分和控件属性,最后将修改后的文件
18、按原文件名进行存盘。(2)在考生文件夹下有一个工程文件sjt4 vbp。程序运行后,单击 “开始 ”按钮,图片自上而下移动,同时滚动条的滑块随之移动。每隔 0 5秒移动一次,当图片顶端移动到距窗体下边界的距离少于200时,则再回到窗体的顶部,重新向下移动,如图所示。在窗体文件中已经给出了全部控件,但程序不完整。 要求:请去掉程序中的注 释符,把程序中的 ?改为正确的内容,使其实现上述功能,但不能修改程序的其他部分和控件属性,最后将修改后的文件按原文件名进行存盘。 四、综合应用题 43 在考生文件夹下有一个工程文件 sjt5 vbp,含三个窗体,标题分别为 “启动 ”、“注册 ”、 “登录 ”,
19、程序运行时显示 “启动 ”窗体,单击窗体上按钮时弹出对应窗体进行注册或登录。 注册信息放在伞局数组 users中,注册用户数 (小于或等于 10个 )放在全局变量 n中 (均已在标准模块中定义 )。 注册时用户名不能重复,且 “口令 ”与 “验证口令 ”必须相同,注册 成功则在 “启动 ”窗体的标签中提示 “注册成功 ”,否则提示相应错误信息。登录时,检验用户名和口令,若正确,则在 “启动 ”窗体的标签上提示 “登录成功 ”,否则提示相应错误信息。 标准模块中函数 finduser。的功能是:在 users数组中搜索用户名 (参数 ch),找到则返回该用户名在 users中的位置,否则返回 0
20、。 文件中已经给出了所有控件和程序,但程序不完整,请去掉程序中的注释符,把Form2、 Form3窗体文件中的 ?改为正确的内容。 注意:不得修改已经存在的程序和控件的属性;最后,程序按原文件名存盘。 国家二级( VB)机试模拟试卷 100答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,是线性表。在单链表中的结点中增加一个指针域指向它的直接前件,这样的链表,就称为双向链表(一个结点中含有两个指针),也是线性链表。循环链表具有单链表的特征,但
21、又不需要增加额外的存贮空间 ,仅对表的链接方式稍做改变,使得对表的处理更加方便灵活,属于线性链表。二叉链表是二叉树的物理实现,是一种存储结构,不属于线性结构。答案为 A选项。 2 【正确答案】 D 【试题解析】 在循环队列中,用队尾指针 rear指向队列中的队尾元素,用排头指针 front指向排头元素的前一个位置。在循环队列中进行出队、入队操作时,头尾指针仍要加,朝前移动。只不过当头尾指针指向向量上界时,其加操作的结果是指向向量的下界。由于入队时尾指针向前追赶头指针,出队时头指针向前追赶尾指针,故队空和队满时,头尾指针均相等 。答案为 D选项。 3 【正确答案】 C 【试题解析】 栈顶元素总是
22、后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。栈的修改是按后进先出的原则进行的。因此,栈称为先进后出表,或 “后进先出 “表,所以选择C。 4 【正确答案】 B 【试题解析】 关系模型实体间的联系采用二维表来表示,简称表。选项 C为网状模型实体间的联系,选项 D为层次模型实体间的联系,选项 A属性刻画了实体 5 【正确答案】 C 【试题解析】 两个实体集间的联系实际上 是实体集间的函数关系,主要有一对一联系( 1:1)、一对多联系( 1:m)、多对一联系( m:1)、多对多联系( m:n)。对于每一个实体部门,都有多名职员,则其对应的联系
23、为一对多联系( 1:m),答案选 C。 6 【正确答案】 A 【试题解析】 由关系 R到关系 S为一元运算,排除 C和 D。关系 S是关系 R的一部分,是通过选择之后的结果,因此选 A。 7 【正确答案】 A 【试题解析】 在数据流图中,对所有元素都进行了命名,所有名字的定义集中起来就构成了数据字典。因此选 A,而 B, C, D都不符合。 8 【 正确答案】 D 【试题解析】 软件需求规格说明书是需求分析阶段的最后成果,是软件开发的重要文档之一。 软件需求规格说明书有以下几个方面的作用。 便于用户、开发人员进行理解和交流, B正确; 反映出用户问题的结构,可以作为软件开发工作的基础和依据,
24、C正确; 作为确认测试和验收的依据, A正确。 9 【正确答案】 C 【试题解析】 黑盒测试不关心程序内部的逻辑,只是根据程序的功能说明来设计测试用例。在使用黑盒测试法时,手头只需要有程序功能说明就可以了。黑盒测试法分等价类划分法、边界值分析法和 错误推测法,答案为 C。而 A、 B、 D均为白盒测试方法。 10 【正确答案】 C 【试题解析】 从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。所以 A、 B、 D正确, C为软件测试阶段的任务。 11 【正确答案】 D 【试题解析】 按 F4键,或单击工具栏中 “属性窗口 “ 按钮,或选取 “视图 “菜单中的 “属性窗口
25、 “子菜单,均可打开属性窗口。 12 【正确答案】 C 【试题解析】 VB程序有两种运行方式,即解释方式与编译方式。 13 【正确答案】 A 【试题解析 】 变量名的命名规则是: 255个字符以内,第一个字符是字母,其后可以是字母、数字和下划线的组合,最后一个字符也可以是类型说明符。通常使用具有一定含义的变量名,可以帮助说明功能,简化调试过程。保留字不能作为变量名。选项 A中的 mod为保留字,所以选项 A)错误。 14 【正确答案】 A 【试题解析】 Mid$(字符串 ,p,n)从第 P个字符开始 ,向后截取 n个字符。 Chr$()是求 ASCII字符的函数 ,格式是 Chr$(表达式 )
26、,其中 “表达式 “应该是合法的ASCII码值, Chr$()函数把 “表达式 “的值转换为相应的 ASCII字符。 Asc() ,求字符串表达式的第一个字符的 ASCII 编码,函数返回值类型为 Integer。 15 【正确答案】 D 【试题解析】 整除运算 ()的结果是商的整数部分。例如, 72表示整除,商为 4.5,结果取整数部分 3,不进行四舍五入。如果参加整除的操作数是浮点数,则先按四舍五入的原则将它们变成整数,然后再执行整除运算。例如,对于 8.52,先将 8.5变成 9再进行整除,商为 4.5,结果为 4。 取余运算 (Mod)是求两个整数相除后的 余数。如果参加取余运算的操作
27、数是浮点数,则先按四舍五入的原则将它们变成整数,然后再执行取余运算。例如,对于8.52.1,先将 8.5变成 9,2.1变成 2,然后 9除以 2与 1,因此取余结果为 1。 算术运算符的优先级:先乘除,后加减;乘方优先于乘除;函数优先于乘方;Mod次于乘除而优先于加减;括号最优先。 本题中, x 100结果为 3, (x Mod 100) 10) * 10结果为 90, (x Mod 10) * 100结果为 500,所以输出为 593,选项 D正确。 16 【正确答案】 B 【试题解析】 窗体级变量,在窗体的 “通用声明 “段所有过程的前面用 Dim语句或用 Private语句声明的变量
28、,可被本窗体的任何过程访问。 17 【正确答案】 C 【试题解析】 在运行窗体程序之前先执行一些操作,此时可以通过在标准模块中创建一个 Sub Main的子过程,不能在窗体模块中创建 Sub Main的子过程,然后在创建的 Sub Main过程中编写启动时要执行的代码,每个工程只能有一个 Sub Main的子过程。 18 【正确答案】 B 【试题解析】 在 VB中定义动态数组通常分两步 :首先在窗体层或标准模块中用Dim、 Private或 Public声明一个没有下标的数组 (括号不能省略 ),然后在过程中用 ReDim语句定义带下标的数组。根据题意,选项 B)正确。 19 【正确答案】 C
29、 【试题解析】 ( 1)用 Call语句调用 Sub过程:语法: Call 过程名( 实参表列 ),实参的个数、类型和顺序,应该与被调用过程的形式参数相匹配,有多个参数时,用逗号分隔。( 2)把过程名作为一个语句来用:语法:过程名 实参1,实参 2 ,它与( 1)的不同点是:去掉了关键字和实参列表的括号。根据 题意,选项 C正确。 20 【正确答案】 A 【试题解析】 打开随机文件的一般格式为 Open “文件名 “ For Random As #文件号 Len=记录长度 。 21 【正确答案】 C 【试题解析】 文本框控件 Locked属性用于设置是否锁定,如设置为 True,则不能编辑该文
30、本框。 22 【正确答案】 D 【试题解析】 直线控件的( X1,Y1)、 (Y2,Y2)属性用来设置直线起点和终点的坐标。可以通过改变( X1, Y1) ,(X2, Y2)的值改变线的位置。 X1、 X2属性值不是必 须满足 X1X2,所以选项 A)错误;如果显示的是一条垂直线,它的 X1、 X2属性的值相等,所以选项 B)错误;当 Line1.X1 = Line2.X2, Line1.Y1 = Line2.Y2时, 2条线有一端相连,所以选项 C)错误。 23 【正确答案】 A 【试题解析】 KeyPreview属性返回或设置一个值,以决定是否在控件的键盘事件之前激活窗体的键盘事件。键盘事
31、件为: KeyDown、 KeyUp和 KeyPress。当KeyPreview的值为 True时窗体先接收键盘 事件,然后是活动控件接收事件;为False时(缺省值)活动控件接收键盘事件,而窗体不接收。 24 【正确答案】 B 【试题解析】 在一般情况下,垂直滚动条的值由上往下递增,最上端代表最小值(Min),最下端代表最大值 (Max);水平滚动条的值从左到右递增,最左端代表最小值 (Min),最右端代表最大值 (Max),其取值范围为 32768 32768。 25 【正确答案】 C 【试题解析】 List1.Selected()返回的是一个项目的选择状态,返回的是布尔值 ; List1
32、.ListIndex返回的是列表框 List1中当前选择项目的索引号码; List属性的作用是罗列或设置表项中的内容。 26 【正确答案】 A 【试题解析】 通用对话框 (CommonDialog)提供诸如打开文件、保存文件、设置打印选项、选择颜色和字体、显示帮助等操作的一组标准对话框,该控件运行时不可见。通用对话框的 Action属性用于设置被打开对话的类型。 Action属性见下表。 27 【正确答案】 A 【试题解析】 显示弹出 式菜单使用 PopupMenu方法。 28 【正确答案】 A 【试题解析】 实现对象的自动拖放应设置 DragMode=1。 29 【正确答案】 D 【试题解析
33、】 把 Form1上文本框中的内容复制到 Form2上的文本框中,所以应该在 Form2中添加语句: Text1 = Form1.Text1。 30 【正确答案】 A 【试题解析】 VB中,窗体和图片框具有 CurrentX、 CurrentY属性,经常用这两个属性来设置当前绘图点。 VB中在图片框特定位置显示文本: 31 【正确答案 】 B 【试题解析】 三角形构成的条件必须满足任意 2边之和大于第 3边,即 a, b, c任何两个的和必须大于第三个。 A满足。 B中的 Or是或,条件不满足。 C和 D可以通过判断,均能进行正确判断。选 B。 32 【正确答案】 C 【试题解析】 DoLoo
34、p Until 循环和 Do WhileLoop 循环都是满足执行条件时会一直执行循环体内的语句。直到条件不满足退出。外循环 i初值为 1,条件是小于 5,每次循环加 2,则执行 2次。内循环条件 i=1时执行 10次, i=3时执行 6次。选 C。 33 【正确答案】 A 【试题解析】 素数是大于 1的自然数,除了 1和本身不能被任何数整除的数。程序用 Do While循环对 n进行判断,如能被整除 isprime赋值为 False。否则赋值为True。随后的代码检测 isprime为 True时执行打印。因此 Do While判断条件中除了判断循环变量的上限还需要判断 isprime的值。
35、根据执行条件可知,选 A。 34 【正确答案】 C 【试题解析】 n和 m都获得数组元素 a( 0)的值。在 For循环中, k=1时, a( k) =a( 1) =43, If条件满足, n=a( 0), m=a( 1) 。 Else If判断的相同值的条件,只有在大于 n并且不等于 m的时候才赋值给 n。因此 n中存储的数永远比m小。而 m中的值是数组中最大的值。因此选 C。 35 【正确答案】 B 【试题解析】 Mid$(A$,4,2)是为了与老版本的 VB兼容( $的作用是强制将函数的返回值设为字符型)。 &用来连接字符串。 If条件判断字符是否和输入的字符相等,相等则 n加 1。选
36、B)。 36 【正确答案】 A 【试题解析】 第一个 For循环对 x数组元素赋初值。被赋的值根据下标,从 b数组中获取。而 x的下标从数组 a中的元素获 得。注意 Option Base 1的影响,下标从 1开始。因此 x数组中的值实际上是按照 a数组中值进行了一个重新排序。即 x( 1)是数组 b中第 4个元素的值: 27,其它值以此类推。选 A。 37 【正确答案】 C 【试题解析】 判断 x1和 x2之间是否存在零点的条件是 x1和 x2符号相反。即 x1和 x2的积是负数。函数 f可以返回 f( x)的值,因此满足上述条件的表达式是f(x1) * f(x2) =Form1 Height 200 Then