1、2012年 3月国家二级( Visuall Basic)笔试真题试卷及答案与解析 1 下列叙述中正确的是 ( A)循环队列是队列的一种链式存储结构 ( B)循环队列是队列的一种顺序存储结构 ( C)循环队列是非线性结构 ( D)循环队列是一种逻辑结构 2 下列叙述中正确的是 ( A)栈是一种先进先出的线性表 ( B)队列是一种后进先出的线性表 ( C)栈与队列都是非线性结构 ( D)以上三种说法都不对 3 一棵二叉树共有 25个结点 ,其中 5个是叶子结点 ,则度为 1的结点数为 ( A) 16 ( B) 10 ( C) 6 ( D) 4 4 在下列模式中 ,能够给出数据库物理存储结构与物理存
2、取方法的是 ( A)外模式 ( B)内模式 ( C)概念模式 ( D)逻辑模式 5 在满足实体完整性约束的条件下 ( A)一个关系中应该有一个或多个候选关键字 ( B)一个关系中只能有一个候选关键字 ( C)一个关系中必须有多个候选关键字 ( D)一个关系中可以没有候选关键字 6 有三个关系 R?S和 T如下 : 则由关系 R和 S得到关系 T的操作是 ( A)自然连接 ( B)并 ( C)交 ( D)差 7 软件生命周期中的活 动不包括 ( A)市场调研 ( B)需求分析 ( C)软件测试 ( D)软件维护 8 下面不属于需求分析阶段任务的是 ( A)确定软件系统的功能需求 ( B)确定软件
3、系统的性能需求 ( C)需求规格说明书评审 ( D)制定软件集成测试计划 9 在黑盒测试方法中 ,设计测试用例的主要根据是 ( A)程序内部逻辑 ( B)程序外部功能 ( C)程序数据结构 ( D)程序流程图 10 在软件设计中不适用的工具是 ( A)系统结构图 ( B) PAD图 ( C)数据流图 (DFD图 ) ( D)程序流程图 11 以下合法的 VB变量名是 ( A) case ( B) name10 ( C) t-name ( D) x*y 12 设 x是小于 10的非负数。对此陈述 ,以下正确的 VB表达式是 ( A) 0x=0 or x0 y=2*x Case Else y=x*
4、x+1 End Select ( B) Ifx=0 Then y=2*x If x5 Then y=x*x+1 20 设程序中有如下语句 : x=inputBox(“输入 ”,“数据 ”,100) PrintX 运行程序 ,执行上述语句 ,输入 5并单击输入对话框上的 “取消 ”按钮 ,则窗体上输出 ( A) 0 ( B) 5 ( C) 100 ( D)空白 21 现有如下一段程序 : Option Base 1 Private Sub Commandl_Click() Dim a a=Array(3,5,7,9) x=1 For i=4 To 1 Step-1 s=s+a(i)*x x=x*
5、10 Next Print S End Sub 执行程序 ,单击 Commandl命令按钮 ,执行上述事件过程 ,输出结果是 ( A) 9753 ( B) 3579 ( C) 35 ( D) 79 22 设有一个命令按钮 Commandl的事件过程以及一个函数过程。程序如下 : Private Sub Commandl_Click() Static x As Integer X=f(x+5) Cls Print X End Sub Private Function fix As Integer)As Integer f=x+x End Function 连续单击命令按钮 3次 ,第 3次单击命
6、令按钮后 ,窗体上显示的计算结果是 ( A) 10 ( B) 30 ( C) 60 ( D) 70 23 以下关于菜单设计的叙述中错误的是 ( A)各菜单项可以构成控件数组 ( B)每个菜单项可以看成是一个控件 ( C)设计菜单时 ,菜单项的 “有效 ”未选 ,即 ,表示该菜单项不显示 ( D)菜单项只响应单击事件 24 以下关于多窗体的叙 述中 ,正确的是 ( A)任何时刻 ,只有一个当前窗体 ( B)向一个工程添加多个窗体 ,存盘后生成一个窗体文件 ( C)打开一个窗体时 ,其他窗体自动关闭 ? ( D)只有第一个建立的窗体才是启动窗体 25 窗体上有一个名称为 CommonDialogl
7、的通用对话框 ,一个名称为 Commandl的命令按 钮 ,并有如下事件过程 : Private Sub Command1_Click() ComrnonDialog1.DefaultExt=“doc” CommonDialog1.FileName=“VB.txt” CommonDialog1.Filter=“All(*.*) *.* Word *.Doc ” CommonDialog1.Filterlndex=1 CommonDialog1.ShowSave End SUb 运行上述程序 ,如下叙述中正确的是 ( A)打开的对话框中文件 “保存类型 ”框中显示 “All(*.*)” ( B)
8、实现保存文件的操作 ,文件名是 VB.txt ( C) DefaultExt属性 FileName属性所指明的文件类型不一致 ,程序出错 ( D)对话框的 Filter属性没有指出 txt类型 ,程序运行出错 26 设程序中有如下数组定义和过程调用语句 : Dim a(10)As Integer Callp(a) 如下过程定义中 ,正确的是 ( A) Private Sub p(a As Integer) ( B) Private Sub p(a()As Integer) ( C) Private SUb p(a(10)As Integer) ( D) Private Sub p(a(n)As
9、 Integer) 27 若要获得组合框中输入的数据 ,可使用的属性是 ( A) ListIndex ( B) Caption ( C) Text ( D) List 28 在窗体上画两个名称分别为 TextlText2的文本框 ,Text1的 Text属性为“DataBase”, 如图所示。 现有如下事件过程 : Private Sub Text1_Change() Text2.Text=Mid(Text1,1,5) EndSub 运行程序 ,在文本框 Textl中原有字符之前输入 a,Text2中显示的是 ( A) DataA ( B) DataB ( C) aData ( D) aBas
10、e 29 有如下程序 Option Base 1 Private Sub Command 1 Click() Dim arr(10) arr=Array(10,35,28,90,54,68,72,90) ForEach aIn arr Ifa50 Then Sum=Sum+a End If Next a End Sub 运行上述程序时出现错误 ,错误之 处是 ( A)数组定义语句不对 ,应改为 Dim arr ( B)没有指明 For循环的终值 ( C)应在 For语句之前增加 Sum=0 ( D) Next a应改为 Next 30 要求产生 10个随机整数 ,存放在数组 arr中。从键盘输
11、入要删除的数组元素的下标 ,将 该元素中的数据删除 ,后面元素中的数据依次前移 ,并显示删除后剩余的数据。现有如 下程序 : Option Base 1 Private Sub Command1_Click() Dim arr(10)AS Integer For i=l To 10 循环 1 arr(i)=Int(Rnd*100) Printarr(i); Next X=InputBox(“输入 1-10的一个整数 :”) For i=x+1 To 10 循环 2 arr(i-1)=arr(i) Next For i=l TO 10 循环 3 Print arr(i); Next End Su
12、b 程序运行后发现显示的结果不正确。应该进行 的修改是 ( A)产生随机数时不使用 Int函数 ( B)循环 2的初值应为 i=x ( C)数组定义改为 Dim a(11)As Integer ( D)循环 3的循环终值应改为 9 31 使用驱动器列表框 Drivel?目录列表框 Dirl?文件列表框 Filel时 ,需要设置控件的同步。以下能够正确设置两个控件同步的命令是 ( A) Dirl.Path=Drivel.Path ( B) Filel.Path=Dirl.Path ( C) Filel.Path=Drivel.Path ( D) Drivel.Drive=Dirl.Path 32
13、 以下关于弹出式菜单的叙述中 ,错误的是 ( A)一个窗体只能有一个弹出式菜单 ( B)弹出式菜单在菜单编辑器中建立 ( C)弹出式菜单的菜单名 (主菜单项 )的 “可见 ”属性通常设置为 False ( D)弹出式菜单通过窗体的 PopupMenu方法显示 33 有如下程序 PrivateType stu XAs String YAsInteger End Type Private Sub Commandl_Click() Dim a As stu a.X=“ABCD” a.Y=12345 Print a End Sub 程序运行时出现错误。错误的原因是 ( A) Type定义语句没有放在标
14、准模块中 ( B)变量声明语句有错 ( C)赋值语句不对 ( D)输出语句 Print不对 34 在窗体上画两个名称分别为 TextlText2的文本框 ,一个名称为 Labell的标签 ,窗体外 观如图 a所示。要求当改变任一个文本框的内容 ,就会将该文本框的内容显示在标签中 , 如图 b所示。实现上述功能的程序如下 : Private Sub Textl Change() Call ShowText(Text1) End Sub Pfivate Sub Text2 Change() Call ShowText(Text2) End Sub Private Sub ShowText(T As
15、 TeXtBox) Labell.Caption=“文本框中的内容是 :”单击鼠标右键则停止实时显示 ,并将标签中的内容清除。 下面的程序可实现这一功能 ,请填空。 Dim downAs Boolean Private Sub Form_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single) Select Case 【 】 Case 1 down=True Case 2 down=False End Select End Sub Private Sub Form_MouseMove(Button As Inte
16、ger,Shift As Integer,X As Single,Y As Single) If 【 】 Then 【 】 =“X=” 名称的第一个字符必须是英文字母 ,最后一个字符可以是类型说明符 ; 名称的有效字符为 255个 ;不能用 VB的保留字作 变量名 ,但变量名中可以包含保留字 ,如 ConstA; 变量名也不能是末尾带有类型说明符的保留字 ,如 Dim!是不合法的变量名 ; 不区分字母的大小写。 12 【正确答案】 C 【试题解析】 在 VB中要表现两个条件 ,只能使用两个条件表达式使用逻辑运算符连接起来的形式。本题中要求 x不但大于等于 0而且要小于 10,因此两个条件应该是
17、与 (AND)的关系。 13 【正确答案】 D 【试题解析】 Name属性用于表示窗体对象的名称 ,在运行时是只读的。在程序代码中 ,返回在代码中用于 标识窗体 ?控件或数据访问对象的名字 ,是唯一的。窗体在运行时改变大小将会触发其 Resize事件 ,当窗体的 Enabled属性为 False时 ,窗体本身和窗体上的控件均不能接收事件。 14 【正确答案】 D 【试题解析】 变量的作用域是指变量的有效范围。为了能正确地使用变量的值 ,VB根据变量的定义位置和所使用的定义语句的不同 ,将变量可分为局部变量(Local)?模块变量 (Module)和全局变量 (Public)。模块变量包括窗体模
18、块变量和标准模块变量。各种变量位于不同的层次。局部变量是指在事件过程或通用过 稃内使用 Dim或者 Static定义的变量 ,其作用域是它所在的过程 ;模块变量在模块的声明部分用 Dim或 Private定义 ;全局变量可在工程的每个模块 ?每个过程中使用 ,又称全程变量。和标准模块变量一样 ,全局变量也只能在标准模块的声明部分定义 ,但全局变量必须用 Public或 Global语句定义。 15 【正确答案】 C 【试题解析】 随机数函数 Rnd的功能是用于产生一个小于 1但大于或等于 0的随机数。为了生成某个指定范围内的随机整数 ,可使用以下公式 :Int(upperbound-lower
19、botmd+1)*Rnd+lowerbound),其中 upperbound是随机整数范围的上限 ,lowerbound是随机整数范围的下限。 16 【正确答案】 A 【试题解析】 赋值语句本身也是有返回值的 ,该语句将会把的 “等号 ”右边的表达式进行计算后 ,将计算值赋给 “等号 ”右边的变量 ,同时用这个值作为返回值。 17 【正确答案】 A 【试题解析】 二维数组定义时对于数组的每一维均给定下标的下界和上界 ,中间用 To连接 ,即给出下标可取值的变化范围。 “数组元素个数 ”指的是数组中成员的个数 ,每一维的长度是上界 .下界 +1,数组元素个数等于各维长度之积。 18 【正确答案】
20、 B 【试题解析】 控件数组是一组具有共同名称和类型的控件 ,它们拥有共同的事件 ,数组中的每个控件都有惟一的索引号 (Index),即下标 ,默认索引号从 0开始。建立控件数组有两种方法 :一是先在窗体上画好一个控件 ,然后再用 “复制 ”和 “粘贴 ”的方法建立 ;二是先在窗体上先画出若干相同类型的控件 ,然后再将它们的名称改为同一个名称 ,再将其 Index属性分别设置为不同值即可。采用第一种方法建立控件数组时 ,每个数组元素的名称 ?大小 ?事件均使用同一个 ,区别 只在于 Index属性值不 样。 19 【正确答案】 A 【试题解析】 要想实现分段函数需要用到分支语句 ,选项 B正确
21、地应用了IfElselfElseEnd If 语句实现了分支 ;选项 C使用 IIf函数的嵌套使用 ,保证xFor方式】 Access存取类型】 锁定方式】 As#文件号 (Len=记录长度 ,其中“方式 ”指文件打开模式 ,output用于顺序输出 ,Append嘣用于顺序追加写入到文件末尾 ,Input用于顺序读取。根据题目的要求打开方式应该为 Output,在输出方法中的第一个参数是打开的文件号也就是 1号。 42 【正确答案】 Button down或 down=True Labll.Caption 【试题解析】 鼠标键状态由参数 Bunon来设定 ,其值为 1表示按下了鼠标左键 ,为
22、2表示按下了鼠标右键 ,因此在 MouseDown事件中需要判断 Button参数的值以便进行对全局逻辑变量 down的赋值 :在鼠标的移动事件中 ,根据题意如果按下了鼠标左键 (即 down=True)则输出坐标 ,否则清空标签 ,因此进行判断的条件就是 down是不是等于 True;坐标需 要输出到 Labell的 Caption属性中。 43 【正确答案】 List2.ListIndex List2.AddItemListl.Text 【试题解析】 列表框的 ListIndex属性用于返回或设置控件中当前选择项目的索引 ,设计时不可用 ;AddItem 方法用于在列表框中指定的位置上插入
23、一行指定的文本 ,其格式为 :列表框 .AddItem项目字符串 ,索引值 ;RemoveItem方法用于删除列表框中指定的项目 ,每次只能删除一项 ,其格式为 :列表框 .RemoveItem索引值。根据本题的要求首先 把 List2中选中的项目加入到 List1中 ,然后在 List2中利用 RemoveItem方法移除选中项 ,方法的参数为 List2.ListIndex;接下来应该在 List2中使用AddItem方法加入在 List1中选中的项目 ,使用语句 List2.Admtem Listl.Text.最后在列表框 1中移除选定的项目。 44 【正确答案】 ch temp True 【试题解析】 在本题的单击事件中 ,首先利用循环取出文本框中的每一位字符 ,然后依次进行比较看该字符是否在结果串 temp中出现 ,若未出现则证明该 字符尚未重复 ,所以将该字符 ch连接到结果串 temp中 ,当循环结束后 temp中的字符必然是没有重复值的 ,所以要将 temp的值放到 Text1中进行输出 ;在 foulld函数中判断在给定字符串 str中是否存在子串 cb,方法是依次取出 str中每一个字符与 ch进行比较 ,若发现相等则证明存在 ch子串 ,此时应该返回 True证明找到字串随之退出函数 ;若循环结束后依然没有退出循环则证明没有找到 ,返回 False。