1、二级 VISUAL+BASIC-28-2 及答案解析(总分:64.50,做题时间:90 分钟)一、选择题(总题数:24,分数:41.50)1.下列选项中,不是一个算法的基本特征的是 _ 。(分数:2.00)A.完整性B.可行性C.有穷性D.拥有足够的情报2.单击命令按钮时,下列程序代码的运行结果为 Private Sub Command1_Click() print MyFunc(20,18) End Sub Public Function MyFunc (m As Integer,n As Integer)As Integer Do While m n Do While m n:m=m -
2、n:Loop Do While m n:n=n - m:Loop Loop MyFunc=m End FunCtion(分数:1.00)A.0B.2 C.4D.6解析:解析 考查考生对函数的定义和调用的理解。 此题程序代码中,被调过程采用了 Do WhileLoop 的嵌套语句结构,主凋过程只调用了一次被调过程,Print MyFtunc(20,18)语句表明,程序最后输出的只是被调过程的返回值,主调过程在调用被调过程MyFunc 时,把数值 20 和 18 分别传给形参 m 和 n,从被调过程中的循环语句来看,因为此时 m 的值大于 n的值,所以执行语句 m= m - n,m 值变为 2,由
3、语句 MyFunc=m 可看出,此过程的返回值就是 m 的值,即2。3.下面叙述中正确的是 _。(分数:1.00)A.随机文件中记录的长度不是固定不变的B.随机文件由若干条记录组成,并可以按记录号访问各个记录 C.不能按任意顺序访问随机文件中的数据D.可以同时对打开的随机文件进行读写操作解析:解析 随机文件又称直接文件,由若干个记录来组成,每个记录的长度都是固定的,并且每个记录都有一个记录号,因此可以根据记录号访问随机文件的任意记录。 注意:当用 Open 语句打开一个随机文件的时候,如果指定存取类型为读写类型,则可以任意读写该文件;如果指定存取类型为只读类型,则只能进行读操作;如果指定存取类
4、型为只写类型,则只能进行写操作。4.有如下程序: Private Sub Form_Click() E=1:F=1 For j=1 To 3 E=E+F:F=F+E Next Print E:F End Sub 该程序的输出结果是(分数:2.00)A.6 6B.5 8C.13 21 D.34 55解析:解析 阅读本题程序可以看出,E 或 F 的值总是它前边 E 和 F 值的和,E 和 F 的值顺序分别为1、1,2、3,5、8,13、21,可以很容易地用前两个数相加得到后一个数。第 1 次循环 E 和 F 的值分别为2 和 3,第 2 次循环 E 和 F 的值分别为 5 和 8,第 3 次循环
5、E 和 F 的值分别为 13 和 21,最后输出结果为13 和 21。5.程序调试的任务是_。(分数:3.00)A.设计测试用例B.验证程序的正确性C.发现程序中的错误D.诊断和改正程序中的错误 解析:解析 程序调试的任务是诊断和改正程序中的错误。6.表达式 5Mod3+3/5*2 的值是 _ 。(分数:2.00)A.0B.2 C.4D.6解析:7.假定有下表所列的菜单结构: 标题 名称 层次 显示 大图标 小图标 appear bigicon smallicon 1(主菜单) 2(子菜单) 2(子菜单) 要求程序运行后,如果单击菜单项“大图标”,则在该菜单项前添加一个“”。以下正确的事件过程
6、是(分数:1.00)A.Private Sub bigicon_Click( )bigicon. Checked = FalseEnd SubB.Private Sub bigicon_Click( )Me. appear, bigicon. Checked = TrueEnd SubC.Private Sub bigicon_Click()bigicon.Checked=TrueEnd Sub D.Private Sub bigicon_Click()appear.bigicon.Checked=TrueEnd Sub解析:解析 本题考查的是菜单项的标记,它是通过菜单的 Checked 属性
7、来控制的,当其值为 False 时,菜单项的前面没有“”,当其值为 True 时,则菜单项的前面有“”。故要使单击菜单项的“大图标”后菜单项的前添加一个“”,只需将其属性 Checked 的值设为 True,故本题的正确答案是选项 C。8.下面概念中,不属于面向对象方法的是(分数:1.00)A.对象、消息B.继承、多态C.类、封装D.过程调用 解析:解析 面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。面向对象方法从对象出发,发展出对象、类、消息、继承等概念。过程调用是面向过程的程序设计方法概念。9.在软件设计中不使用的工具是 _ 。(分数:2.00)
8、A.系统结构图B.PAD 图C.数据流图(DFD 图) D.程序流程图解析:解析 软件设计包括概要设计和详细设计,软件概要设计中,面向数据流的设计方法有变换型系统结构图和事务型数据流两种。软件详细设计,程序流程图( PDF) 和 PAD(问题分析图) 是过程设计的常用工具。数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型,是在可行性研究阶段用到的。10.在窗体上画个名称为 Command1 的命令按钮,然后编写如下事件过程: Private Sub Command1_Click_() For n=1
9、To 20 If n Mod 30 Then m=m+n/3 Next n print n End Sub 程序运行后,如果单击命令按钮,则窗体上显示的内容是 _。(分数:1.00)A.15B.18C.21 D.24解析:解析 本题考查的是 ForNext 循环语句。ForNext 循环执行时,先将初始值赋给循环变量,判断是否超过终值,若未超过则执行循环体,遇到 Next 语句后,循环变量增加一个步长(默认值为 1),再判断是否超过终值,若未超过则继续执行循环体,如此重复直到循环变量超过终值,退出循环。本题中的循环变量为 n,步长为 1,当 n=20 时,再执行 Next n,则 n=21,此
10、时 n 大于终值 20,退出循环。11.下列关于文件的叙述中错误的是_。(分数:1.00)A.以 Input 方式打开文件时,如果文件不存在,则建立一个新文件 B.顺序文件各记录的长度可以不同C.使用 Append 方式打开文件时,文件指针被定位到文件尾D.随机文件打开后,既可以读,也可以写解析:解析 对一个数据文件进行读、写、修改或增加数据之前,必须先用 Open 语句打开或建立该文件。如果以 Input 方式打开的文件不存在,则产生“文件未找到”错误;如果为输出(Output)、附加(Append)或随机(Random)访问方式打开的文件不存在,则建立相应的文件;故 A 选项表述错误。在顺
11、序文件中,每个记录可以具有不同的长度,不同记录中字段的长度也可以不一样,故 B 选项叙述正确。用 Append 方式打开一个文件后,文件指针指向文件的末尾,而如果用其他几种方式打开文件,则文件指针都指向文件的开头,故 C 选项叙述正确。打开随机文件后,用户既可以读文件也可以向文件中写入数据,故 D 选项叙述正确,所以答案为 A 选项。12.下列 Visual Basic 语句中,正确的语句是 _。(分数:3.00)A.A=1.75E2.7B.AS=BASICC.A$=“X+Y+Z“ D.A$=B$+12解析:解析 选项 A 中,常量的表示方法错误;选项 B 中,赋值号两边的数据类型不匹配, A
12、$为字符型变量,BASIC 作为变量是数值型变量,作为字符串常量缺双引号;选项 D 中,赋值号右边数据类型不匹配,B$为字符型变量,12 为数值常量。选项 C 中,把一个字符串常量“X+Y/2“赋给字符串变量 A$,表达正确。13.某人编写了下面的程序 Private Sub Command1_Click() Dim a As Integer,b As Integer a=InputBox(“请输入整数“) b=InputBox(“请输入整数“) pro a pro b Call pro(a+b) End Sub Private Sub pro(n As Integer) While(n0)
13、Print n Mod 10; n=n/10 Wend Print End Sub 此程序功能是:输入 2 个正整数,反序输出这 2 个数的每位数字,再反序输出这 2 个数之和的每位数字。例如:若输入 123 和 234,则应该输出: 3 2 1 4 3 2 7 5 3 但调试时发现只输出了前 2 行(即 2 个数的反序),而未输出第 3 行(即 2 个数之和的反序),程序需要修改。下面的修改方案中正确的是_。(分数:2.00)A.把过程 pro 的形式参数 n As Integer 改为 ByVal n As Integer B.把 Call pro(a+b)改为 pro a+bC.把 n=
14、n/10 改为 n=n/lOD.在 pro b 语句之后增加语句 c%=a+b,再把 Call pro(a+b)改为 pro c解析:解析 参数的传递 形参名前面缺省修饰词,或有“ByRef”关键字时,则指定它是一个按地址传递的参数。按地址传递参数时,形参和实参共用内存的“同一”地址,即共享同一个存储单元,形参值在过程中一旦被改变,相应的实参值也跟着改变。 按值传递参数(ByVal),传递的只是实参变量的副本。当采用按值传递时,过程对参数的任何改变实际上都是对栈中值的改变,仅在过程内部有效,而不影响实参变量本身。换句话说,一旦过程运行结束,控制返回调用程序时,对应的实参变量保持调用前的值不变。
15、 本题中,过程 Sub pro(n As Integer)的形参变量 n 按地址传递参数。程序执行 pro a、pro b、Call pro(a+b)语句的过程如下: pro a n Print n Mod 10 n=n/10 123 3 12 12 2 1 1 1 0 程序结束时形参 n 的值变为 0,则实参 a 的值也变为 0。 pro b n Print n Mod 10 n=n/10 234 4 23 23 3 2 2 2 0 程序结束时形参 n 的值变为 0,则实参 b 的值也变为 0 Call pro(a+b)此时表达式 a+b 的值为 0,过程 pro()没有执行循环,所以不会反
16、序输出变量 a+b 之和753。 要想输出变量 a+b 的实际输入的值的和,则变量 a 和 b 在过程的运行期间必须保持不变,因此形参必须采用传值的方式,故选项 A 正确。14.在窗体上画一个名称为 Command1 的命令按钮,然后编写如下通用过程和命令按钮的事件过程: Private Function f(m As Integer) If m Mod 2=0 Then f=m Else f=1 End If End Function Private Sub Command1 Click() Dim i As Integer s=0 For i=1 To 5 s=s+f(i) Next Pr
17、int s End Sub 程序运行后,单击命令按钮,在窗体上显示的是 _。(分数:1.00)A.11B.10C.9 D.8解析:解析 命令按钮事件过程中的 For 循环的作用是求函数 f(i)(i 介于 1 与 5 之间的整数)的返回值的和。函数 f 的作用是如果参数 m 的值是偶数,返回值就是 m 的值,如果是奇数,返回值就是 1。而 1 到5 之间的整数中共有 3 个奇数,两个偶数,故 s=3*1+2+4=9。15.窗体上有名称为 Text1、Text2 的两个文本框,和一个由 3 个单选按钮构成的控件数组 Optionl,如图1 所示。程序运行后,如果单击某个单选按钮,则执行 Text
18、1 中数值与该单选按钮所对应的运算(乘 1、乘10 或乘 100),并将结果显示在 Text2 中,如图 2 所示。为了实现上述功能,在程序中的横线处应填入的内容是 _ (分数:2.00)A.Optionl.IndexB.Index C.Optionl(Index)D.Optionl(Index).Value解析:解析 控件数组中的控件共享同一个事件过程,相互间通过 Index 属性区别,题中单选按钮数组的单击事件中,有一个 Index 参数,单击不同的单选按钮,它取不同的值,根据其值进行不同的操作,所以 Select Case 语句的表达式为 Index。16.树是结点的集合,它的根结点的数
19、目是 _ 。(分数:2.00)A.有且只有 1 个B.1 或多于 1C.0 或 1 D.至少有 2 个解析:解析 树具有明显的层次关系,即树是一种层次结构。在树结构中,根结点在第一层上。当树为非空时,树中有且只有一个根结点,当树为空时,树中根结点的数目为 0。17.通过改变单选按钮(Option Button)控件的 _ 属性值,可以改变单选按钮的选取状态。(分数:1.00)A.Value B.StyleC.AppearanceD.Caption解析:解析 Option Button 控件的 Value 属性是用来返回或设置控件状态的属性。18.删除列表框中指定的项目所使用的方法为(分数:1.
20、00)A.MoreB.RemoveC.ClearD.RemoveItem 解析:解析 为了删除列表框中指定的项目,可以使用 RemoveItem 方法,其格式为: 列表框名称.RemoveItem 索引值 其中“索引值”是项目的地址,列表框中的项目从 0 开始计数,被选择的项目索引值就是列表框的ListIndex 属性。19.组合框是文本框和 _ 特性的组合。(分数:2.00)A.复选框B.标签C.列表框 D.目录列表框解析:解析 本题考查组合框。组合框控件(ComboBox)是将文本框和列表框的功能结合在一起,用户可以在列表中选择某项(注:只能选取一项),或在编辑区域中直接输入文本内容来选定
21、项目。20.程序流程图中带有箭头的线段表示的是(分数:2.00)A.图元关系B.数据流C.控制流 D.调用关系解析:解析 程序流程图是人们对解决问题的方法、思路或算法的一种图形方式的描述。其中,图框表示各种操作的类型,图框中的文字和符号表示操作的内容;流程线表示操作的先后次序。带箭头的线段在数据流程图中表示数据流;带箭头的线段在程序流程图中表示控制流。题中给出的选项中,在图元之间用带有箭头的线段表示图元关系。在模块之间用带有箭头的线段表示调用关系。21.编写如下事件过程和函数过程: Private Sub Command1_Click() Dim num(1 To 6)As Single nu
22、m(1)=103:num(2)=190:num(3)=0 num(4)=32:num(5)=-56:num(6)=100 Print Print p2(6,num() End Sub Private Function p2(By Val n As Integer, number() As Single) As Integer p2=number(1) For j=2 To n If number(j)p2 Then p2=number(j) Next j End Function 程序运行后,在窗体上输出 _ 。(分数:2.00)A.-56 B.0C.103D.190解析:解析 分析程序,函数
23、 p2 的作用是找出指定数组中最小的数并返回。p2 函数指定第 1 个参数以传值的形式传递,第 2 个参数以传地址的形式传递。因此,在命令按钮单击事件中调用函数 p2 时,参数6 是以传值的形式传给形参 n,数组 num 以传地址的形式传给形参 number。所以题中整个程序要实现的功能是找出数组 num 中最小的数并输出,因此最后输出“-56”。22.执行语句 Print“Sgn(-34)=“;Sgn(-34)后,其输出结果为 _ 。(分数:2.00)A.Sgn(-34)=34B.Sgn(-34)=-34C.Sgn(-34)=+1D.Sgn(-34)=-1 解析:解析 本题使用 Sgn 函数
24、来判断某数的正负号。当参数大于 0 时,返回 1;当参数等于 0 时,返回 0;当参数小于 0 时,返回-1。23.以下说法中正确的是(分数:2.50)A.任何时候都可以用 Ctrl+E 键打开菜单编辑器B.只有当某个窗体为当前活动窗体时,才能打开菜单编辑器 C.只有当代码窗口为当前活动窗口时,才能打开菜单编辑器D.任何时候都可以用标准工具栏的“菜单编辑器”按钮打开菜单编辑器解析:解析 打开菜单编辑器有 4 种方法:选择菜单“工具”菜单框中的“菜单编辑器”命令;单击工具栏上的“菜单编辑器”按键;使用快捷键Ctrl+E;右击窗体,从弹出的快捷菜单中选择“菜单编辑器”命令。注意:只有当某个窗体成为
25、活动窗体时,才能使用以上方法打开其菜单编辑器。24.用于获得字符串 S 最左边 4 个字符的函数是(分数:2.00)A.Left(S,4) B.Left(1,4)C.Leftsv(S)D.Leftstr(3,4)解析:解析 字符串截取函数,格式是:Left$(字符串,n)。返回“字符串”的前 n 个字符。二、填空题(总题数:14,分数:23.00)25.当下列程序运行,单击窗体后,分别输入 72 和 24,信息框上显示的结果是 1。 Private Sub Form_Click 2 Dim X As Inte9er, y As Integer x=Val(InputBox(“输入整数 72“)
26、 y=Val(InputBox(“输入整数 24“) z=funl(x,y) MsgBox Str(z) End Sub Private Function funl(ByVal a As Integer, ByVal b As Integer)As Integer Do r=a Mod b a=b h=r Loop Until r=0 funl=a End Function (分数:2.00)解析:24解析 由“欧几里得”求最大公约数的算法可知,当余数 r 为零时,a 为 a 和 b 的最大公约数。72 和 24 的最大公约数为 6。“Mod”运算符用来对两个数作除法并且只返回余数。26.注释
27、说明了程序的功能,它分为 _ 1_ 注释和功能性注释。 (分数:1.00)解析:序言性 解析 注释一般分为序言性注释和功能性注释。序言性注释通常位于每个程序的开头部分,它给出了程序的整体说明,主要描述内容可以包括:程序标题、程序功能说明、主要算法、接口说明、程序位置、开发简历、程序设计者、复审者、复审日期、修改日期等。功能性注释的位置一般嵌在源程序体之中,主要描述其后的语句或程序做什么。27.窗体上有两个控件:一个是驱动器列表框 Drive1,另一个是目录列表框 Dir1,现在要使目录列表框跟随驱动器列表框的变化而变化,则需在 Drive1_Change 事件过程中填入语句 _ 1_ 。 (分
28、数:1.00)解析:Dir1Path=Drive1Drive 解析 当改变驱动器列表框的驱动器时,将触发它的 Change 事件。要想改变目录列表框中显示的目录,可设置它的 Path 属性。因此要想使目录列表框跟随驱动器列表框的变化而变化,可以在 Drive1_change 事件中加上如下代码: Dir1Path=Drive1Drive28.在程序设计语言中,重复结构对应两类循环语句,对先执行循环体后判断的称为 1 循环结构。 (分数:2.00)解析:直到型29.语句 print“25+32=“;25+32 的输出结果是 _ 1_ 。 (分数:1.00)解析:25+32=57 解析 语法:ob
29、ject.Printoutputlist Print 方法的语法具有下列对象限定符和部分: 部分 描述 object 必要。对象表达式,其值为“应用于”列表中的对象。 Outputlist 可选。表示要打印的表达式或表达式的列表。如果省略,则打印一空白行。 可以用空白或分号来分隔多个表达式。本题分号后是 Print 方法的第二个表达式。30.下列这个 Sub 过程的功能是统计字符串中“a”的个数,请在空白处填上合适的代码,将程序补充完整。Private Sub numCoun() Dim num As Integer s=“software And hardware“ num=Len(s) F
30、or i=1 To num b= 1 Ifb=“a“Then x=x+1 Next i Print “x=“;x End Sub (分数:2.00)解析:Mid(s,i,1)解析 分析题目和程序段可知,空白处的作用是取出字符串 s 中的第 i 个字符,这里可以使用 Mid 函数来取出第 i 个字符,然后对比该字符是否是字符 a,如果是,则变量 x 加 1,如果不是则跳过 if 后面的语句继续循环,最后输出 x。31._ 1_ 的功能是用于显示当前过程中的有关信息,当测试一个过程时,可在其中输入代码并立即执行。(分数:1.00)解析:立即窗口32.数据流图的类型有 1 和事务型。 (分数:2.0
31、0)解析:变换型解析 典型的数据流类型有两种,变换型和事务型。33.如果在立即窗口中执行以下操作: a=8 b=9 print (ab); 则输出结果为 1。 (分数:2.00)解析:False解析 ab 是一个逻辑表达式,其运行结果为 False;Print 方法不仅有打印的功能还兼有计算的功能,将表达式的值先运算后输出。34.运行下列程序: Dim t As Integer Private Sub Form_C1ick 1 t=2 x=Val(InputBox(“输入一个整数 5“) Print funl(x);t End Sub Private Function funl(v) If y
32、0 Then fun1=1:t=10 Else If y=0 Then fun1=0:t=20 Else fun1=-1:t=30 End If End Function 从键盘为变量 x 输入数据 5,输出的结果是 2。 (分数:2.00)解析:1 10解析 t 为模块级变量,在子函数中计算的结果 10 改变了主函数中的 t 值,fun1 函数名返回的值为 1。35.为了使标签能自动调整大小以显示全部文本内容,应把标签的 _ 1_ 属性设置为 True。 (分数:2.00)解析:AutoSize解析 如果希望 Label 显示可变长度的行或变化的行数,就要设置 AutoSize。36.Jac
33、kson 结构化程序设计方法是英国的 MJackson 提出的,它是一种面向 _ 1_ 的设计方法。 (分数:1.00)解析:数据结构解析 结构化程序设计方法引入了工程思想和结构化思想,使大型软件的开发和编程都得到了极大的改善。结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、模块化和限制使用goto 语句。37.一个变量未被显示定义,末尾也没有类型说明符,则该变量的隐含类型是上 1 类型。 (分数:2.00)解析:变体38.执行以下程序段,并输入 1.23,则程序的输出结果应是 _ 1_ 。 N=Str(InputBox(“请输入一个实数:“) p=InStr(N,“.“) Prin
34、t Mid(N, p) (分数:2.00)解析:.23 解析 InStr 函数、Mid 函数 InStr(首字符位置字符串 1,字符串 2,n)用来在“字符串 1”中查找“字符串 2”,如果找到,则返回“字符串 2”的第一个字符在“字符串 1”中的位置。 如果带有参数“首字符位置”,则从该位置开始查找,否则从“字符串 1”的起始位置查找。可选参数“n”用来指定字符串比较方式,可以取 0、1 或 2。如为 0,则进行在比较时区分大小写;如为 1,则在比较时忽、略大小写;如为 2,则基于数据库中包含的信息进行比较。 Mid(字符串,p,n)函数用来在“字符串”中从第 p 个字符开始,向后截取 n 个字符。如果省略参数 n,则从第 p 个字符开始,向后截取到字符串的末尾。 跟踪程序: n=“1.23“ p=InStr(n,“.“)=InStr(“1.23“,“.“) p=2 所以,Mid(“1.23“,2)所截取的字符是:“.23”。 最终的输出结果是:.23。