1、国家二级( VB)机试模拟试卷 12及答案与解析 一、选择题 1 下列关于栈叙述正确的是 ( )。 ( A)栈顶元素最先能被删除 ( B)栈顶元素最后才能被删除 ( C)栈底元素永远不能被删除 ( D)栈底元素最先被删除 2 下列叙述中正确的是 ( )。 ( A)在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化 ( B)在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化 ( C)在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化 ( D)以上说法都不正确 3 某二叉树共 有 7个结点,其中叶子结点只有 1个,则该二叉树的深度为 (假设根结点在第 1层 )( )。 ( A) 3
2、( B) 4 ( C) 6 ( D) 7 4 软件按功能可以分为应用软件、系统软件和支撑软件 (或工具软件 )。下面属于应用软件的是 ( )。 ( A)学生成绩管理系统 ( B) C语言编译程序 ( C) UNIX操作系统 ( D)数据库管理系统 5 结构化程序所要求的基本结构不包括 ( )。 ( A)顺序结构 ( B) GOTO跳转 ( C)选择 (分支 )结构 ( D)重复 (循环 )结构 6 下面描 述中错误的是 ( )。 ( A)系统总体结构图支持软件系统的详细设计 ( B)软件设计是将软件需求转换为软件表示的过程 ( C)数据结构与数据库设计是软件设计的任务之一 ( D) PAD图是
3、软件详细设计的表示工具 7 负责数据库中查询操作的数据库语言是 ( )。 ( A)数据定义语言 ( B)数据管理语言 ( C)数据操纵语言 ( D)数据控制语言 8 一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是 ( )。 ( A) l: 1联系 ( B) l: m联系 ( C) m: l联系 ( D) m: n联系 9 有三个关系 R、 S和 T如下: 则由火系 R和s得到关系 T的操作是 ( )。 ( A)自然连接 ( B)并 ( C)交 ( D)差 10 定义无符号整数类为 UInt,下面可以作为类 UInt实例化值的是 ( )。 ( A) -369 ( B
4、) 369 ( C) 0.369 ( D)整数集合 1, 2, 3, 4, 5 11 VB中有这样一类文件:该文件不属于任何一个窗体,而且仅包含程序代码,这类文件的扩展名是 ( )。 ( A) vbp ( B) bas ( C) vbw ( D) frm 12 能够产生 1到 50之间 (含 1和 50)随机整数的表达式是 ( )。 ( A) Int(Rnd*51) ( B) Int(Rnd(50)+1) ( C) Int(Rnd*50) ( D) Int(Rnd*50+1) 13 要求如果 X被 7除余 2,则输出 X的值,下列语句中不能实现此功能的语句是( )。 ( A) If X mod
5、 7=2 Then Print X ( B) If X一 (x 7)*7=2 Then Print X ( C) If X一 (X 7)*7=2 Then Print X ( D) If XInt(X 7)*7=2 Then Print X 14 表达式 Sgn(0 25)的值是 ( )。 ( A) -l ( B) 0 ( C) 1 ( D) 0.5 15 如下关于变体类型变量的叙述中,错误的是 ( )。 ( A)变体类型数组中只能存放同类型数据 ( B)使用 Array初始化的数组变量,必须是 Variant类型 ( C)没有声明而直接使用的变量其默认类型均是 Variant ( D)在同一
6、程序中,变体类型的变量可以被多次赋以不同类型的数据 16 满 足下列条件之一的年份是闰年: 1)年份能被 4整除但不能被 100整除 2)年份能被 400整除 若 Y代表年份,下面判断闰年的正确表达式是 ( )。 ( A) Y Mod 4 And Y Mod 100 Or Y Mod 400 ( B) Y Mod 4=0 Or Y Mod 1000 And(Y Mod 4=0 Or Y Mod 400=0) ( D) Y Mod 4=0 And y Mod 1000, X+1, IIf(X0, X一 1, x+1) ( C) y=IIf(X0, x+l, IIf(xb a=a b Wend f
7、un=a End Function 在调试时发现函数是错误的。为使函数能产生正确的返回值,应做的修改是( )。 ( A)把 a=a b改为 a=b a ( B)把 a a b改为 a=a b ( C)把 While ab改为 While ab改为 While a=b 34 在窗体上画 1个命令按钮和 1个文本框,其名称分别为 Commandl和 Textl,再编写如下程序: Dim SS As String Private Sub Textl KeyPress(KeyAscii As Integer) If Chr(KeyAscii)0时, x+l,否则 x l,所以应该是 llf(x0, x
8、+1, x 1)。 C选项中,内层的 Ilf函数中,当 x、 和 键等,其他键 KeyPress 事件不能识别。 D选项错误原因:窗体也有 KeyPresss 事件。故 C选项正确。 30 【正确答案】 C 【试题解析】 程序中 flag 被定义为 Static变量,它的值只在第一次执行事件过程时为 0,以后每次执行计时器事件过程它的位都会保留上次过程中运算后的值,之后它的值是 1或 -l。文本框控件的 ForeColor 属性表示文本框中文字的颜色,计时器控件的 Interval 属性为 5000,即计时器间隔为 5秒钟一次,每次调用就会交替改变文本框中文字的 颜色。因此 C选项正确。 31
9、 【正确答案】 D 【试题解析】 程序应该计算的是 2的 0次方到 2的 10次方的和,程序少计算了 2的 1次方,应该先累加,再执行 a=a*2,并且将 For k=2 to 10改为 For k=l to 10,这样最后一次循环 2的 10次疗的值能正确累加然后循环结束。因此答案为 D。 32 【正确答案】 B 【试题解析】 在标准模块中定义的使用 Public定义的变键是全局变最,全局变壁可以在工程的每个模块、每个过程中使用。如果在过程中有与全局变量同名的过程变量则优先使用过程 变量。在命令按钮事件中定义了局部变量 x,与全局变量同名,因此在此事件中使用局部变苗,而变量 y存此过程中没有
10、定义,则仍使用全局变量。因此输出时 x值为 100, y值为 120。 33 【正确答案】 D 【试题解析】 程序中没有考虑余数为 0的情况,即,条件中应该有 a=b,则 a=a b,这样才能正确得到余数 0。因此程序中应该修改 While的条件 ab 为 a=b。 34 【正确答案】 D 【试题解析】 题目中程序是将 ss字符串进行反向排列,并放到 m中去。其中Number空格后的 100被当成字符串来处理 ,最后结果是将 “Number 100”反向排列,并通过 ucase()函数将所有字母转换成大写,得到 00l REBMuN。 35 【正确答案】 B 【试题解析】 在计时器事件中不成再
11、设置步长为 100的 For循环,应该把 For循环去掉,只留下循环体的语句,计时器每秒激发一次,每次判断小球是否移到Line2处,不到就改变自已的 Left值即继续移动。因此 B 正确。 36 【正确答案】 A 【试题解析】 错误原因:每一次删除列表框满足项,列表框的项目数目就会相应地减少,所以就出现了漏删内容,如果把循 环变量 k改成从 Listl ListCout-l到0,从最后一个项目往第一个项目查找,满足条件就删除该项目,从而不会出现遗漏现象,所以正确答案为 A。 37 【正确答案】 D 【试题解析】 本题考查的是动态变量与静态变量。原来的程序中无法使变量 n的值保持到下一次的使用,
12、只有 D选项符合要求,将 n定义为静态局部变量,在程序执行到该对象的声明处时被首次初始化,每次执行后 n的值都会被保存到内存中,所以答案 D是正确的; m而 A选项只是对 n 赋初值,所以 A选项没有意义;B 选项和 C选项都没有达到改进的目的。 38 【正确答案】 A 【试题解析】 在 Do循环语句程序大致执行过程如下: s=l03, a=9; s=103+93, a=8; s=10 3十 9 3+8 3, a=7; ,依此类推,因此正确的答案为A。 39 【正确答案】 C 【试题解析】 在通用对话框控件中, Filter 属性指定了在对话框中显示的文件类型,该属性可以设置多个文件类型,每种
13、文件类型由文件描述和文件通配符与扩展名组成,并由 “ ”隔开。 FilterIndex 属性用来指定默认的过滤器, Filter属性中设置了多个过滤器后,每个过滤器的对应的 能按从左到右顺序是 1、 2 ,Fiherlndex 属性默认为 l,即第一个过滤器,因此程序中会显示: C下的所有文件。应该在通活框打开之前 (CDl Action=1 之前 )添加 CDl FliterIndex=3,即使默认过滤器为第 3个过滤器。 40 【正确答案】 B 【试题解析】 原程序的执行流程为,当按下一个键后,激活 KeyPress 事件事件中隐藏 Forml和显示 Ftom2的语句与判断是否按了回车键的
14、语句是顺序的即不论按了什么键,都会执行隐藏 Forml 和显示 From2的语句。这两句应该上移到第二个 EndIf前面,也就是放在判断是否按了回车键的 If 语句块中。因此 B选项正确。 二、基本操作题 41 【正确答案】 (1)AutoSize属性值可决定控件 (标签和图片框 )是否自动改变大小以显示其全部内容,当值为 True 时表示自动改变控件大小以显示其全部内容;为False(默认值 )时表示保持控件大小小变,超出控件区域的内容被裁剪掉。 Border-Style属性用于设置标签的边框样式,值为 0表示无边框,值为 1表示有边框。 步骤 l:建立界面,并设置控件的属性。程序中用到的控
15、件及属性见表 1。步骤 2:调试并运 用程序,关闭题目后按照题目要求存盘。 (2)本题主要考查控件的画法、水平滚动条 (HSerollBar)相关属性的设置以及命令按钮简单事件编程掌握情况。滚动条的 Max、 Min属性限定了滚动条所能表示的最大值和最小值,即 Value属性值的取值范围。 IargeChange属性用于设置当单击滚动条滑块与两侧箭头间区域时 Value属性值的改变量, SmallChange属性用于设置单击滚动条两侧箭头时 Value属性值的改变量。滚动条滑块位置改变时触发其 Change 事件。和窗体上输出内容使用 Print办法。 步骤 l:按照 题目要求建立窗体和控件,
16、并设置控件的属性。程序中用到的控件及属性见表 2。步骤 2:编写程序代码 Private Sub Commandl Click() Hscroll1 Max=Forml Widlh Hscrolll Min 0 HScroll 1 LargeChange 50 HScroII 1 SmallChange 10End SubPrivale Sub HScroll1Change() Print HSrolll ValueEnd Sub步骤 3:调试并运行程序,关闭程序后按题目要求存盘。 三、简单应用题 42 【正确答案】 (1)由于单选按钮选择的唯一性,本题可用一个 IfThenEnd if语句对
17、可能出现的两种情况 (Optl或 Opt2被选中 )分别进行处理,进而为 Textl的FontName属性设置不同值;可用两个 IfThenEnd if 语句依次对两个复选框选中情况进行判断,若选中则进行相成的设置。 步骤 1:打开本题工程文件。 步骤 2:分析并编写程序代码。 程序提示代码 Private SubForm Unoad(Cancel As Integer) Unlond sub End sub 程序结束 Privale Sub Commandl Click() IF OpI Value=True Then Textl FontName=“宋体 ” Else Textl Font
18、Name=“隶书 ” End If If Ch1 Value=1 Then Textl FontUnderline=True Else Textl FontUnde rline=False End If If Ch2 Value=l Then Text 1 Fontltalie=True Else Textl Fontltaic=False End If End Sub 步骤 3:调试并运行程序,关闭程序后按题目要求存盘。 (2)在默认情况下, “打开 ”对话框的标题是 “打开 ”, “另存为 ”对话框的标题是 “另存为 ”。根据题意 ,将 CommonDialog的 Name属性设置为 CD
19、l,文件类型在CommonDialog的 Fil Ler属性中设置,其格式为: Filter=“文件说明文件类型 ” 本题应在 Filter属性中设置为:文本文件 * txt 所有文件 * *。 步骤 l:打开本题工程文件。 步骤 2:分析并编写程序代码。 程序提供代码 Pri vale Sub Commandl Click() Dim n As Long CDI FileName=“” CDI ?=”所有文件 * *文本义件 * txt Word文档 * doc” CDl Filterlndex=2 CDl ? If CDI FileName。 “”Then Open?For Input A
20、s l n=LOF(1) Textl=Input$(n, #1) ? End If End Sub 程序结束 笫 1个 ?处填人: Filter 第 2个 ?处填人: ShowOpen 第 3个 ?处填入: CDl FileName 第 4个 ?处填入: Close #l 步骤 3:调试并运行程序,火闭程序后按题目要求存盘。 四、综合应用题 43 【正确答案】 本题须先定义一个数组,然后以输入方式打开文件 in5 txt,并在一个嵌套的 For循环中用 Input#读入数据并赋值给每个数组元素。然后再通过一个嵌套的 For循环将数组 arr中的数据在窗体上按 5行、 5列的矩阵形式显示出来,最
21、后将数组 arr中第 l维下标与第 2维下标之和为 6的数组元素显示在窗体上。 步骤 1:打开本题 工程文件。 步骤 2:分析并编写程序代码。 程序提供代码 Option Base 1 Private Sub Form Click() Const N=5 Const M=5 Dim? Dim i, j Open App Path&“ ”&“datain txt”?As#l For i=l To N For j=l To M ? Next j Next j Close#l Print Print“初始矩阵为: ” Print For i: I To N For j=l To M Print Tab(5*j); Mat(i, j); Next j Print Next i Print: Print Print“右上 -左下对角线上的数为: ” FOr i=1 To N For j=1 To M If Then Print Tab(5*i); Mat(i, j); End If Next j Next i End Sub 程序结束 第 1个 ?处填入: Mat(N, M)As Integer 第 2个 ?处填入: For Input 第 3个 ?处填入: Input#l, Mat(i, j) 第 4个 ?处填入: i+j=6 步骤 3:调试并运行程序,关闭程序后按题目要求存盘。