1、国家二级( VB)机试模拟试卷 103及答案与解析 一、选择题 1 下列叙述中正确的是 ( A)程序执行的效率与数据的存储结构密切相关 ( B)程序执行的效率只取决于程序的控制结构 ( C)程序执行的效率只取决于所处理的数据量 ( D)以上说法均错误 2 下列与队列结构有关联的是 ( A)函数的递归调用 ( B)数组元素的引用 ( C)多重循环的执行 ( D)先到先服务的作业调度 3 对下列二叉树 进行前序忘记遍历的结果为 ( A) DYBEAFCZX ( B) YDEBFZXCA ( C) ABDYECFXZ ( D) ABCDEFXYZ 4 一个栈的初始状态为空。现将元素 1,2,3,A,
2、B,C依次入栈,然后再依次出栈,则元素出栈的顺序是 ( A) 1,2,3,A,B,C ( B) C,B,A,1,2,3 ( C) C,B,A,3,2,1 ( D) 1,2,3,C,B,A 5 下面属于白盒测试方法的是 ( A)等价类划分法 ( B)逻辑覆盖 ( C)边界值分析法 ( D)错误推测法 6 下面对对象概念描述正确的是 ( A)对象间的通信靠消息传递 ( B)对象是名字和方法的封装体 ( C)任何对象必须有继 承性 ( D)对象的多态性是指一个对象有多个操作 7 软件设计中模块划分应遵循的准则是 ( A)低内聚低耦合 ( B)高耦合高内聚 ( C)高内聚低耦合 ( D)以上说法均错误
3、 8 下面描述中不属于数据库系统特点的是 ( A)数据共享 ( B)数据完整性 ( C)数据冗余度高 ( D)数据独立性高 9 数据库设计过程不包括 ( A)概念设计 ( B)逻辑设计 ( C)物理设计 ( D)算法设计 10 有三个关系 R、 S和 T如下: 则由关系 R和 S得到关系 T的操作是 ( A)自然连接 ( B)交 ( C)投影 ( D)并 11 以下不合法的 VB变量名是 ( A) filename ( B) read ( C) _y ( D) e5 12 以下关于 VB的叙述中,错误的是 ( A) VB采用事件驱动的编程机制 ( B)如果程序中有 Sub_Main过程时,则一
4、定从该过程开始执行 ( C)工程文件中包含多个窗体时,可以指定启动窗体 ( D) VB程序既可以编译执行,也可以解释执行 13 VB中,若没有显式声明变量的数据类型,则默认的类型是 ( A)整型 ( B)字符型 ( C)日期型 ( D)变体类型 14 设程序中有以下语句: MsgBox “Visual“, , “Basic“, “等级考试 “, 2 执行该语句后,显示一个信息框,以下关于该信息框的叙述中,正确的是 ( A)提示信息是 Visual ( B)提示信息是 Basic ( C)标题栏显示为 Visual ( D)标题栏显示为 “等级考试 “ 15 设有如下声明语句 Option Ba
5、se 1 Dim arr(2, -1 To 5) As Integer 则数组 arr中数组元素的个数是 ( A) 10 ( B) 12 ( C) 14 ( D) 21 16 以下关于 VB对象属性的叙述中,错误的是 ( A)属性是对象的特征 ( B)对象的所有属性值都可以在属性窗口中设置 ( C)不同对象可以具有同名的属性 ( D)对象的某些属性可以在程序中设置 17 设 a = 10, b = 4, c = 5, d = 7,表达式 a b And Not c 0 Then p = True Else p = False End If End Function 关于上述程序,以下叙述中正确
6、的是 ( A)程序功能是统计 1-500范围内能被 7整除的整数个数 ( B) Command1_Click事件过程中 If语句的条件表达式不完整 ( C) Function过程定义有误,函数过程 p的名称与该过程中的变量名 p相同 ( D)函数过程 p的返回值为 Boolean类型 35 窗体上有一个名称为 Combo1的组合框,一个名称为 Command1的命令按钮。要求编写程序,在组合框中输入一个字符串,当单击命令按钮时,将该字符串逐项与组合框中原有列表项进行比较,若有相同列表项,则将其删除;若没有相同列表项,则将其添加到组合框中。现有人编写如下程序,以期实现上述功能: Private
7、Sub Command1_Click() str1 = Trim(Combo1.Text) flag=0 If str1 = 0 To Combo1.ListCount - 1 If str1 = Combo1.List(i) Then Combo1.RemoveItem i Combo1.Text = “ fl= “0“ And c a(i) Then y = a(i) s = s + a(i) Next Print x, y, s End Sub 关于上述程序的叙述中,正确的是 ( A)程序运行出错,第 1个 For循环之后的 x=a(i)赋值语句错 ( B)程序正常运行, x是 10个随
8、机数中的最大值 ( C)程序正常运行, s是 10个随机数的和 ( D)程序 正常运行, 10个随机数的范围是 100-200 40 窗体上有一个名称为 Command1的命令按钮。其单击事件过程如下: Private Sub Command1_Click() Open “c:f1.txt“ For Input As #1 Open “c:f2.txt“ For Output As #2 Do While Not EOF(1) Line Input #1, str1 Print #2, str1 Loop Close End Sub 以下关于上述程序的叙述中,错误的是 ( A)程序的功能是将
9、f2.txt文件的内容复制到 f1.txt中 ( B) f1.txt和 f2.txt均是顺序文件 ( C) EOF函数可以判断是否已到文件的末尾 ( D) Close能够把打开的两个文件都关闭 二、基本操作题 41 (1)在名称为 Form1的窗体上添加一个名称为 List1的列表框,在属性窗口中为列表框添加三个选项:北京、上海、天津。同时建立一个下拉菜单,其名称为File,标题为 “文件 ”,此菜单含有一个子菜单项,标题为 “显示列表框 ”, 名称为Show,初始状态为被选中,运行时的效果如图所示。注意:存盘时,将文件保存至考生文件夹下,且窗体文件名保存为 sjt1 frm,工程文件名保存为
10、 sjt1 vbp。 (2)新建一个名称为 Foan1,标题为 “使用输入对话框 ”的窗体,该窗体卜无任何控件。请编写适当的事件过程,使得运行程序并单击窗体时,出现输入对话框,其标题为 “等级考试 ”,提示信息为 “请输入 ”,默认值为 “Basic”,如图所示。 注意:存盘时,将文件保存至考生文件夹下,且窗体文件名保存为 sjt2 frm,工程文件名保存为sjt2 vbp。要 求程序中不得使用变量,每个事件过程中只能写一条语句。三、简单应用题 42 (1)在考生文件夹下有一个工程文件 sjt3 vbp。程序运行时,单击窗体则显示如图所示的图案。请去掉程序中的注释符,把程序中的 ?改为正确的内
11、容。 注意:不能修改程序的其他部分和控件属性。最后将修改后的文件按原文件名存盘。(2)在考生文件灾下有一个工程文件sjt4 vbp,窗体中有一个矩形和一个圆,程序运行时,单击 “开始 ”按钮,网可以横向或纵向运行 (通过选择单选按钮来决定 ),碰到矩形的边时,则向其相反方向运动,单击 “停止 ”按钮,则停止运动,如图所示。可以通过选择单选按钮随时改变运动方向。 已经给出了所有控件和程序,但程序不完整,请去掉程序中的注释符,把程序中的 ?改为正确的内容。 注意:不得修改已经存在的内容和控件属性,最后将修改后的文件按原文件名存盘。 四、综合应用题 43 在考生文件夹下有一个工程文件 sjt5 vb
12、p,在其窗体中有一个实心圆。程序运行时,当用鼠标左键单击窗体任何空白位置时,实心圆则向单击位置直线移动;若用鼠标右键单击窗体,则实心圆停止移动。窗体文件中已经给出了全部控件,但程序不完整。 要求:请去掉程序中的注释符,把程序中的 ?改为正确的内容,使其能正确运行,不能修改程序的其他部分和控件属性。最后将修改后的文什按原文件名存盘。 国家二级( VB)机试模拟试卷 103答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 程序执行的效率与数据的存储结构、数据的逻辑结构、程序的控制结构 、所处理的数据量等有关。 2 【正确答案】 D 【试题解析】 队列的修改是依先进先出的原则进行的, D正
13、确。 3 【正确答案】 C 【试题解析】 前序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且,在遍历左右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。前序遍历描述为:若二叉树为空,则执行空操作。否则: 访问根结点; 前序遍历左子树; 前序遍历右子树, C正确。 4 【正确答案】 C 【试题解析】 栈的修改是按 后进先出的原则进行的,所以顺序应与入栈顺序相反,故选 C。 5 【正确答案】 B 【试题解析】 白盒测试法主要有逻辑覆盖、基本路径测试等。逻辑覆盖测试包括语句覆盖、路径覆盖、判定覆盖、条件覆盖、判断 -条件覆盖,选择
14、 B。其余为黑盒测试法。 6 【正确答案】 A 【试题解析】 对象之间进行通信的构造叫做消息, A正确。多态性是指同一个操作可以是不同对象的行为, D错误。对象不一定必须有继承性, C错误。封装性是指从外面看只能看到对象的外部特征,而不知道也无须知道数据的具体结构以及实现操作, B错误。 7 【正确答案】 C 【试题解析】 根据软件设计原理提出如下优化准则: 划分模块时,尽量做到高内聚、低耦合,保持模块相对独立性,并以此原则优化初始的软件结构。 一个模块的作用范围应在其控制范围之内,且判定所在的模块应与受其影响的模块在层次上尽量靠近。 软件结构的深度、宽度、扇入、扇出应适当。 模块的大小要适中
15、。 C正确。 8 【正确答案】 C 【试题解析】 数据库系统的特点为高共享、低冗余、独立性高、具有完整性等,C错误。 9 【正确答案】 D 【试题解析】 数据库设计过 程主要包括需求分析、概念结构设计、逻辑结构分析、数据库物理设计、数据库实施、数据库运行和维护阶段。答案为 D选项。 10 【正确答案】 A 【试题解析】 关系 R和关系 S有公共域,关系 T是通过公共域的等值进行连接的结果,符合自然连接,选 A。 11 【正确答案】 C 【试题解析】 变量的命名规则是: 必须以字母开头,由字母、汉字、数字或下划线组成; 不能在变量名中出现句点 “.“、空格或者嵌入字符,例如!、 、 #、$、 %
16、、 Next j For j=1 To (9 2*i)同问题 2 Print“*“; Next j Print Next i End Sub 程序结束 步骤 3:调试并运行程序,关闭程序后按题目要求存盘。 (2)步骤 1:打开本题工程文件。 步骤 2:打开代码编辑窗口,去掉程序中的注释符 “”,将问号改为正确的内容。 Dim d As Integer Private Sub Commandl C1ick() Timerl Enabled=True当单击 “开始 “按钮时, Timer生效 End Sub Private Sub Command2 C1ick() Timer1.Enabled=F
17、alse当单击 “停止 v按钮时, Timer失效 End Sub Private Sub Form_Load() d=1 End Sub Private Sub Timer1 Timer() If Optionl Then判断 Option1是否被单击 Shape2 Top shape2 Top+d*50实现圆垂直移动 If Shape2 TopShape1 Top+Shape1 Height Then判断 Shape2与 Shape1的位置 d=-d当圃移出 Shapel时,改变移动方向 End If ElseIf Option2 Then Shape2 Left=Shape2 Left+
18、d*50 实现水平移动 If Shape2 Left=Shapel Left+Shapel Width Then d=一 d当圆移出 Shapel时。则改变移动方向 End If End If End Sub 步骤 3:调试并运行程序, 关闭程序后按题目要求存盘。 【试题解析】 (1)本题主要考查的是对循环语句的理解,以及对于循环上限的判断。首先看一下两个主要的 For循环语句实现什么样的功能,先看第 1个 For语句,在循环语句中嵌套两个循环语句,第 1个语句实现输入空格,当 i=1时,即当输入第 1行时,进行 For j=l To 6 i的循环,即在第 1行打印出 5个空字符,也可以理解为
19、打印出 5个空格。第 2个 for循环实现的是 *的打印,还以 i=1为例,要打印出一个 *,同时要注意行数 i和输入空格及 *符号个数之间的关系,也就是找出表达式的运算规律,从 而得到循环上限。 (2)在 Timer1_Timer事件过程中,通过判断单选按钮 “纵向 ”或 “横向 ”是否被选中来决定圆运动的方向,如果是纵向,则通过 Shape2的 Top和 Width属性值的改变实现圆的移动,并通过判断 Top属性值来确定是否到达上或下界,使圆向相反方向运动。如果是横向,则通过 Shape2的 Left和 Width属性值的改变实现圆的移动。在 Command2_Click事件过程中通过将
20、Timer1的 Enabled属性设置为False,使圆停止运动,在 Commandl_Click事件过程中通过将 Timer1的 Enabled属性设置为 True,使圆开始运动。 在窗体载入时设置 d的值,是为了方便编辑圆向相反方向的运动过程语句。 四、综合应用题 43 【正确答案】 步骤 1:打开本题丁程文件。 步骤 2:打开代码编辑窗口,去掉程序中的注释符,将问号改为正确的内容。 Dim stepy As Integer 纵向移动增量 Dim stepx As Integer 横向移动增量 Const LEFTBUTTON 1 Private Sub Form MouseDown(Bu
21、tton As Integer, Shift As Integer, X As Single, Y As Single) Dim x0 As Integer, y0 As Integer, a AsSingle, radius Asjnteger radius=Shape1 Width 2 圆的半径 I f Button=LEFT BUTTON Then 单击鼠标左键移动 x0=Shape1 Left+radius圆心的 x坐标 y0 Shapel Top radius圆心的 y坐标 If x=x0 Then垂直移动 stepy Sgn(Y y0)*50 stepx=0 E1se倾斜移动 a=
22、(yy0) (xx0) 斜率 stepx=Sgn(xx0)*50 stepy=a*stepx 通过 stepx确定 stepy的值 If Abs(stepy)Abs(stepx)Then stepy=Sgn(yy0)*50 stepx=stepy a End If End If Timer1.Enabled 单击鼠标左键则触发 Timer事件 Else Timer1.Enabled=False单击鼠标右键则停止 Timer事件 End If End Sub Private Sub Timerl Timer() Shape1 Move Shape1 Left s tepx, Shape1 Top+stepy移动 shape1 End Sub 步骤 3:调试并运行 程序,关闭程序后按题目要求存盘。 【试题解析】 通过鼠标左键单击位置的坐标及圆心的坐标确定一条直线,并沿着这条直线移动,通过计算这条直线的斜率,得知水平位移和竖直位移,再通过形状控件的 Move方法、 Left和 Top属性实现形状控件位置的移动。 sgn(x)函数返回 x的正负号,如果 x为正数,返同 1;如果为负数,返回 1;如果为 0,则返回 0。