1、国家二级(VB)机试-试卷 6 及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.下列关于线性链表的叙述中,正确的是( )。(分数:2.00)A.各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致B.各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续C.进行插入与删除时,不需要移动表中的元素D.以上说法均不正确2.下列叙述中正确的是( )。(分数:2.00)A.循环队列是队列的一种链式存储结构B.循环队列是队列的一种顺序存储结构C.循环队列是非线性结构D.循环队列是一种逻辑结构3.软件测试的目的是( )。(分数:
2、2.00)A.评估软件可靠性B.发现并改正程序中的错误C.改正程序中的错误D.发现程序中的错误4.在软件开发中,需求分析阶段产生的主要文档是( )。(分数:2.00)A.软件集成测试计划B.软件详细设计说明书C.用户手册D.软件需求规格说明书5.结构化程序所要求的基本结构不包括( )。(分数:2.00)A.顺序结构B.GOTO 跳转C.选择(分支)结构D.重复(循环)结构6.下面描述中错误的是( )。(分数:2.00)A.系统总体结构图支持软件系统的详细设计B.软件设计是将软件需求转换为软件表示的过程C.数据结构与数据库设计是软件设计的任务之一D.PAD 图是软件详细设计的表示工具7.下列关于
3、数据库设计的叙述中,正确的是( )。(分数:2.00)A.在需求分析阶段建立数据字典B.在概念设计阶段建立数据字典C.在逻辑设计阶段建立数据字典D.在物理设计阶段建立数据字典8.数据库系统的三级模式不包括( )。(分数:2.00)A.概念模式B.内模式C.外模式D.数据模式9.在黑盒测试方法中,设计测试用例的主要根据是( )。(分数:2.00)A.程序内部逻辑B.程序外部功能C.程序数据结构D.程序流程图10.在软件设计中不使用的工具是( )。(分数:2.00)A.系统结构图B.PAD 图C.数据流图(DFD 图)D.程序流程图11.以下叙述中正确的是( )。(分数:2.00)A.在属性窗口只
4、能设置窗体的属性B.在属性窗口只能设置控件的属性C.在属性窗口可以设置窗体和控件的属性D.在属性窗口可以设置任何对象的属性12.下列打开“代码窗口“的操作中错误的是( )。(分数:2.00)A.按 F4 键B.单击“工程资源管理器“窗口中的“查看代码“按钮C.双击已建立好的控件D.执行“视图“菜单中的“代码窗口“命令13.要求如果 x 被 7 除余 2,则输出 x 的值,下列语句中不能实现此功能的语句是( )。(分数:2.00)A.If x mod 72 Then Print xB.If x(x/7)* 72 Then Print xC.If x(x / 7)* 72 Then Print x
5、D.If xInt(x / 7)* 72 Then Print x14.表达式 Sgn(0.25)的值是( )。(分数:2.00)A.1B.0C.1D.0.515.以下关于 VB 文件的叙述中,错误的是( )。(分数:2.00)A.标准模块文件不属于任何一个窗体B.工程文件的扩展名为.frmC.一个工程只有一个工程文件D.一个工程可以有多个窗体文件16.设 x 为一整型变量,且情况语句的开始为:Select Case x,则不符合语法规则的 Case 子句是( )。(分数:2.00)A.Case Is20B.Case 1 To 10C.Case 00 Then count(n)count(n)
6、1 End If Next k mcount(0) For k1 To 25 If mA.0B.1C.2D.332.在窗体上画一个命令按钮和一个文本框,其名称分别为 Command1 和 Text1,把文本框的 Text 属性设置为空白,然后编写如下事件过程:Private Sub Command1_Click() aInputBox(“Enter an integer“) bText1.Text Text1.Textba End Sub 程序运行后,在文本框中输入456,然后单击命令按钮,在输入对话框中输入 123,则文本框中显示的内容是( )。(分数:2.00)A.579B.123C.45
7、6123D.45633.现有如下一段程序: xUCase(InputBox(“输入:“) Select Case x Case “A“ To “C“ Print “考核通过!“ Case “D“ Print “考核不通过 !“ Case Else Print “输入数据不合法!“ End SelectEnd Sub 执行程序,在输入框中输入字母“B“,则以下叙述中正确的是( )。(分数:2.00)A.程序运行错B.在窗体上显示“考核通过!“C.在窗体上显示“考核不通过 !“D.在窗体上显示“输入数据不合法!“34.窗体上有三个水平滚动条,名称分别为 HSRed、HSGreen 和 HSBlue
8、,取值范围均是 0255,代表颜色的三种基色。改变滚动框的位置,可以改变三种基色的值,从而改变窗体的背景色,如下图所示。(分数:2.00)A.color 是窗体级整型数组B.改变任何一个滚动条滚动框的位置,窗体的背景色将立刻随之改变C.3 个滚动条 Change 事件过程中只设置了一个 color 数组元素的值,调用 fill 过程失败D.fill 函数定义中的形式参数是数组型参数35.设有如下通用过程:Public Function Fun(xStr As String)As String Dim tStr As String, strL As Integer tStr“ strLLen(x
9、Str) istrL / 2 Do While iA.ABCDEFB.abcdefC.defdefD.defabc36.在窗体上画一个命令按钮和一个文本框(名称分别为 Command1 和 Text1),并把窗体的 KeyPreview 属性设置为 True,然后编写如下代码:Dim SaveAll As StringPrivate Sub Form_Load() Show Text1.Text“ Text1.SetFocusEnd SubPrivate Sub Command1_Click() Text1.TextLCase(SaveAll)SaveAllEnd SubPrivate Sub
10、 Form_KeyPress(KeyAscii As Integer) SaveAllSaveAllChr(KeyAscii)End Sub 程序运行后,直接用键盘输入:VB,再单击命令按钮,则文本框中显示的内容为( )。(分数:2.00)A.vbVBB.不显示任何信息C.VBD.出错37.窗体上有一个 Text1 文本框,一个 Command1 命令按钮,并有以下程序: Private Sub command1_Click() Dim n If Text1.Text20B.Case 1 To 10C.Case 00 或 Is0 Then count(n)count(n)1 End If Ne
11、xt k mcount(0) For k1 To 25 If mA.0B.1C.2D.3 解析:解析:根据题中的程序代码可知,ch 为输入字符串的大写状态,第一个 For 循环是依次取出字母,n 为取出字母与“A“字符的 ASCII 码差值,然后再赋给数组 count();第二个 For 循环是找出数组 count()中的最小值,因此,最后窗体上输出的结果为 3,即选项 D。32.在窗体上画一个命令按钮和一个文本框,其名称分别为 Command1 和 Text1,把文本框的 Text 属性设置为空白,然后编写如下事件过程:Private Sub Command1_Click() aInputB
12、ox(“Enter an integer“) bText1.Text Text1.Textba End Sub 程序运行后,在文本框中输入456,然后单击命令按钮,在输入对话框中输入 123,则文本框中显示的内容是( )。(分数:2.00)A.579B.123C.456123 D.456解析:解析:默认情况下,InputBox 的返回值是一个字符串,因此程序中a“123“,b“456“,ba“456“123“456123“。因此 C 选项正确。另外,使用字符连接运算符“时,如果连接的是字符串和数值,可根据返回值类型判断,若返回值类型为字符串,则它将数值转换成字符串后与另一字符串连接成新字符串返
13、回;若返回值类型为数值,则它要求字符串中只能包含数字,而不能有其他字符,否则报“类型不匹配“的错误。33.现有如下一段程序: xUCase(InputBox(“输入:“) Select Case x Case “A“ To “C“ Print “考核通过!“ Case “D“ Print “考核不通过 !“ Case Else Print “输入数据不合法!“ End SelectEnd Sub 执行程序,在输入框中输入字母“B“,则以下叙述中正确的是( )。(分数:2.00)A.程序运行错B.在窗体上显示“考核通过!“ C.在窗体上显示“考核不通过 !“D.在窗体上显示“输入数据不合法!“解
14、析:解析:程序中 Ucase 函数将输入的字母转换为大写,然后通过 Select 多分支控制语句选择输出不同信息,当输入字母在“A“到“C“之间时,显示“考核通过!“,输入的是“D“时显示“考核不通过!“,如果输入的是“A“到“D“之外的其他字符则显示“输入数据不合法!“。程序中输入字母“B“,因此会显示“考核通过!“。34.窗体上有三个水平滚动条,名称分别为 HSRed、HSGreen 和 HSBlue,取值范围均是 0255,代表颜色的三种基色。改变滚动框的位置,可以改变三种基色的值,从而改变窗体的背景色,如下图所示。(分数:2.00)A.color 是窗体级整型数组B.改变任何一个滚动条
15、滚动框的位置,窗体的背景色将立刻随之改变C.3 个滚动条 Change 事件过程中只设置了一个 color 数组元素的值,调用 fill 过程失败 D.fill 函数定义中的形式参数是数组型参数解析:解析:当用 Dim 语句定义数组时,该语句把数值数组中的全部元素都初始化为 0,而把字符串数组中的全部元素都初始化为空串。因此 color 数组中的元素初始值都为 0,没有空值,过程调用不会失败。C 选项叙述错。35.设有如下通用过程:Public Function Fun(xStr As String)As String Dim tStr As String, strL As Integer t
16、Str“ strLLen(xStr) istrL / 2 Do While iA.ABCDEFB.abcdefC.defdef D.defabc解析:解析:程序中过程 Fun 的 Do 循环的功能是从参数字符串中依次取出后半部分的字符组成一个字符串,然后这个字符串再重复一次由函数返回。函数 Len 用于返回字符串的长度,过程中字符串的长度做为Do 循环的结束条件。Mid 是字符串中部截取函数,用来从指定位置开始截取指定个数的字符。过程中使用Mid(xStr, i1, 1),通过循环依次取出字符串后半部分的字符。函数返回的字符串经 Lcase 函数转换为小写然后显示在文本框中。程序中做为 Fun
17、 过程参数的字符串为“ABCDEF“,经处理返回并转为小写后为“defdef“。36.在窗体上画一个命令按钮和一个文本框(名称分别为 Command1 和 Text1),并把窗体的 KeyPreview 属性设置为 True,然后编写如下代码:Dim SaveAll As StringPrivate Sub Form_Load() Show Text1.Text“ Text1.SetFocusEnd SubPrivate Sub Command1_Click() Text1.TextLCase(SaveAll)SaveAllEnd SubPrivate Sub Form_KeyPress(Ke
18、yAscii As Integer) SaveAllSaveAllChr(KeyAscii)End Sub 程序运行后,直接用键盘输入:VB,再单击命令按钮,则文本框中显示的内容为( )。(分数:2.00)A.vbVB B.不显示任何信息C.VBD.出错解析:解析:窗体的 KeyPreview 属性用于设置或获取一个值,该值只是判断按键事件传递到具有焦点的控件前,窗体是否将接收此事件,该属性设为 True 时,窗体将会接收按键事件。因此在文本框中输入“VB“时,会先触发 Form_KeyPress()事件,该事件将输入的字符保存到窗体模块变量 SaveAll 中,然后才会显示在文本框中。当单击
19、命令按钮时,Lcase 函数将变量 SaveAll 中的字符串“VB“转换为小写,为“vb“,然后与原字符串连接,即“vb“VB“,显示在文本框中则为“vbVB“。37.窗体上有一个 Text1 文本框,一个 Command1 命令按钮,并有以下程序: Private Sub command1_Click() Dim n If Text1.Text“123456“Then nn1 Print “口令输入错误“& n & “次“ End If End Sub 希望程序运行时得到左图所示的效果,即:输入口令,单击“确认口令“命令按钮,若输入的口令不是“123456“,则在窗体上显示输入错误口令的次
20、数。但上面的程序实际显示的是右图所示的效果,程序需要修改。下面修改方案中正确的是( )。 (分数:2.00)A.在 Dim n 语句的下面添加一句:n0B.把 Print “口令输入错误“ & n & “次“ 改为 Print “口令输入错误“n“次“C.把 Print “口令输入错误“ & n & “次“ 改为 Print “口令输入错误“ & Str(n)& “次“D.把 Dim n 改为 Static n 解析:解析:本题考查的是动态变量与静态变量。原来的程序中无法使变量 n 的值保持到下一次的使用,只有 D 选项符合要求,将 n 定义为静态局部变量,在程序执行到该对象的声明处时被首次初
21、始化,每次执行后 n 的值都会被保存到内存中,所以答案 D 是正确的;而 A 选项只是对 n 赋初值,所以 A 选项没有意义;B 选项和 C 选项都没有达到改进的目的。38.下面程序计算并输出的是( )。Private Sub Command1_Click() a10 s0 Do ssa*a*a aa1 Loop Until aA.1 3 2 3 3 3 10 3 的值 B.10!3!2!1!的值C.(12310)3 的值D.10 个 10 3 的和解析:解析:在 Do 循环语句中程序大致执行过程如下:s103, a9;s10393,a8;s109383,a7;,依此类推,因此正确的答案为 A
22、。39.设有如下通用过程:Public Function f(x As Integer) Dim y As Integer x20 y2 fx * yEnd Function 在窗体上画一个命令按钮,其名称为 Command1,然后编写如下事件过程:Private Sub Command1_Click() Static x As Integer x10 y5 yf(x) Print x; yEnd Sub 程序运行后,如果单击命令按钮,则在窗体上显示的内容是( )。(分数:2.00)A.10 5B.20 40 C.20 5D.10 40解析:解析:过程 f 中形参变量 x 没有指定传递方式,则
23、默认按地址传递,会影响实参值。而变量 y 在按钮事件过程和 f 过程中都是局部变量只在本过程中起作用。因此执行 yf(x)后,x 值在过程中被改变为20,而 y 被赋为过程返回值 40。因此程序窗体上会显示 20 和 40。40.假定有以下通用过程:Function Fun(n As Integer)As Integer xn * n Funx11End Function 在窗体上画一个命令按钮,其名称为 Command1,然后编写如下事件过程:Private Sub Command1_Click() Dim i As Integer For i1 To 2 yFun(i) Print y;
24、Next iEnd Sub 程序运行后,单击命令按钮,在窗体上显示的内容是( )。(分数:2.00)A.1 3B.10 8C.10 7 D.0 5解析:解析:i1 时,执行 fun(i),返回值为-10,i2 时,执行 fun(i),即 fun(2),返回值为 2*2-11-7。因此程序会输出-10 和-7。二、基本操作题(总题数:1,分数:2.00)41.(1)在名称为 Form1、标题为“欢迎”的窗体上画 1 个名称为 Label1 的标签,其标题内容为“欢迎使用本系统”,标题文字字体和字号分别为“宋体”、“三号”,标签大小能根据标题内容自动调整,效果如图所示。程序执行时,窗体的最大化按钮
25、不可用(如图所示),请设置相应属性。 注意:存盘时必须存放在考生文件夹下,工程文件名为 sjt1vbp,窗体文件名为 sjt1fnn。 (2)在名称为 Form1 的窗体上,画 1 个名称为 Label1 的标签,其标题为“横坐标 x”,且能根据标题内容自动调整标签的大小;再画 1 个名称为 Text1 的文本框,其中的文字显示为空自;再画 1 个名称为 Picture1 的图片框,大小适中即可。 要求:编写适当的事件过程,使得程序运行时,如果鼠标在图片框中移动,则能在文本框Text1 中显示鼠标在图片框中的当前位置的横坐标,运行情况如图所示。 注意:要求程序中不得使用变量,事件过程中只能写一
26、条语句。存盘时必须存放在考生文件夹下,工程文件名为 sjt2vbp,窗体文件名为 sjt2frm。 (分数:2.00)_正确答案:(正确答案:步骤 1:新建一个窗体,在属性窗口中设置窗体的属性,按照表 43 所示在属性窗口中设置相应属性,其运行效果如图 43 所示。 步骤 2:在窗体上添加一个标签控件,在属性窗口中设置标签的属性,按照表 44 所示在属性窗口中设置相应属性,其运行效果如图 44 所示。步骤 3:调试并运行程序,关闭程序后按题目要求存盘。 (2)步骤 1:新建一个窗体,在窗体卜添加一个标签控件,在属性窗口中设置标签的属性,按照表 45 所示在属性窗口中设置相应属性,其运行效果如图
27、 45 所示。 步骤 2:在窗体上添加一个文本框控件,在属性窗口中设置文本框的属性,按照表 46 所示在属性窗口中设置相应属性,其运行效果如图 46 所示。 步骤 3:在窗体上添加一个图片框控件,适当调整大小,其运行效果如图 47 所示。 )解析:解析:(1)新建窗体,设置窗体的 Caption 属性。在窗体上添加一个标签控件,设置标签控件的Caption 属性、Font 属性和 AutoSize 属性。 (2)使用 Picture 控件的 MouseMove 方法可以得到鼠标的坐标位置。三、简单应用题(总题数:1,分数:2.00)42.(1)在考生文件夹下有一个工程文件 sjt3vbp。窗体
28、上有名称为 Timer1 的定时器,以及两条水平直线,名称分别为 Line1 和 Line2。 请用名称为 Shape1 的形状控件,在两条直线之间画一个宽和高都相等的形状,设置其形状为圆,并设置适当属性使其满足以下要求: 圆的顶端距窗体 Form1 顶端的距离为360; 圆的颜色为红色(红色对应的值为:&HOOOOOOFF&或&HFF&),如图所示。 程序运行时,Shape1 将在 Line1 和 Line2 之间运行。当 Shape1 的底部到达 Line2 时,会自动改变方向向上运动;当Shapel 的顶端到达 Line1 时,会自动改变方向向下运动。 文件中给出的程序不完整,请去掉程序
29、中的注释符,把程序中的?改为正确内容,使其实现上述功能。 注意:不能修改程序的其他部分和已给出控件的属性。最后将修改后的文件按原文件名存盘。 (2)在考生文件夹下有一个工程文件 sjt4vbp包含了所有控件和部分程序,如图所示。其功能如下: 单击“读数据”按钮,可将考生义件夹下 in4dat 文件中的 100 个整数读到数组 a 中。 单击“计算”按钮,则根据从组合框 Combol 中选中的项目,对数组 a中的数据计算平均值,并将计算结果四舍五人取整后显示在文本框 Text1 中。 “读数据”按钮的 Click事件过程已经给出,请为“计算”按钮编写适当的事件过程实现上述功能。 注意:不得修改已
30、经存在的控件和程序,在结束程序运行之前,必须进行一次计算,且必须用窗体右上角的关闭按钮结束程序,否则无成绩。最后。程序按原文件名存盘。 (分数:2.00)_正确答案:(正确答案:步骤 1:打开本题工程文件,新建一个形状控件,并按表 351 所示设置属性。)解析:解析:(1)通过形状控件的 Move 方法,实现形状的移动,通过 Shape1Top 的值和 Line1Y1 的值进行比较来判定圆形是否越过上界,通过比较 Shape1Top+ShapelHeight 的值和 Line2Y1 的值来判定圆形是否越过下界。 (2)通过文件操作,打开文件,把数值读入数组。通过循环语句遍历数组 a(k),用
31、If 语句和 Mod()函数判断是奇数还是偶数,先求出数组中元素的所有奇数和和所有偶数和,计算出平均数,通过 Int()函数实现对结果的四舍五入取整,所有奇数和和所有偶数和的加和,求出所有数的和,用同样的方法得出平均数。Select Case 语句判断组合框中选中的项目,实现函数的功能,在文本框中显示题目要求的平均值,并按题目要求存盘。四、综合应用题(总题数:1,分数:2.00)43.以下数列:1,1,2,3,5,8,13,21的规律是从第 3 个数外始,每个数都是其前面两个数之和。在考生文件夹下有一个工程文件 sjt5vbp。窗体中已经给出了所有控件,如图所示。请编写适当的事件过程完成如下功
32、能:选中一个单选按钮后,单击“计算”按钮,则计算出上述数列第 n 项的值,并在文本框中显示,n 是选中的单选按钮后面的数值(提示:因计算结果较大,应使用长整型变量)。 注意:不能修改已经给出的程序和已有的控件的属性;在结束程序运行之前,必须选中一个单选按钮,并单击“计算”按钮以获得一个结果;必须使用窗体右一卜角的关闭按钮结束程序,否则无成绩。最后把修改后的文什按原文件名存盘。 (分数:2.00)_正确答案:(正确答案:步骤 1:打开本题工程文件。 步骤 2:打开代码编辑窗口,在指定位置编写如下代码。 PriVate Sub Command1_Click() Dim a()As Long Dim
33、 i As Integer Dim n As Integer OplCount 是单选按钮数目,这里用的是控件数组 For i=0 To Op1Count1 判断哪一项被选择,把它后面的数值赋给 n,确定 n 值 If Op1(i)ValueTrue Then nVal(Opl(i)Caption) Exit For End If Next ReDim a(n)重新申请空间,这里是动态申请 a(1) =1 a(2)=1数列第一项、第二项值确定 For i3 To n a(i)a(i1)a(i2)后一项值是前两项值之和 Next Text1Texta(n) End Sub 步骤 3:调试并运行程序,关闭程序后按题目要求存盘。)解析:解析:单选按钮数组常用于提供唯一选择,VHue 属性值决定每个单选按钮的选中状态:FHse 为未选中,True 为选中,Caption 属性用于设置单选按钮的标题。本题在 For 循环语句(循环变量 k 的初值为0,终值应为 3)中逐一检查每个单选按钮是否被选中,用变量 n 记录选中单选按钮的索引号。然后取消对当前选中单选按钮的选择,使单选按钮数组中的卜一个按钮被选中。如果当前已经选中最后一个单选按钮,则将 n 赋值为 0,最新从单选按钮数组的第一个元素开始。