1、二级 VISUAL+BASIC-67 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:100.00)1.下列叙述中正确的是_。(分数:2.50)A.算法就是程序B.设计算法时只需要考虑数据结构的设计C.设计算法时只需要考虑结果的可靠性D.以上三种说法都不对2.下列关于线性链表的叙述中,正确的是_。(分数:2.50)A.各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致B.各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储顺序必须连续C.进行插入与删除时,不需要移动表中的元素D.以上三种说法都不对3.下列关于二叉树的叙述中,正确的是_。(
2、分数:2.50)A.叶子结点总是比度为 2 的结点少一个B.叶子结点总是比度为 2 的结点多一个C.叶子结点数是度为 2 的结点数的两倍D.度为 2 的结点数是度为 1 的结点数的两倍4.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是_。(分数:2.50)A.学生成绩管理系统B.C 语言编译程序C.UNIX 操作系统D.数据库管理系统5.某系统总体结构图如下图所示: (分数:2.50)A.7B.6C.3D.26.程序调试的任务是_。(分数:2.50)A.设计测试用例B.验证程序的正确性C.发现程序中的错误D.诊断和改正程序中的错误7.下列数据库设计的叙述中,
3、正确的是_。(分数:2.50)A.在需求分析阶段建立数据字典B.在概念设计阶段建立数据字典C.在逻辑设计阶段建立数据字典D.在物理设计阶段建立数据字典8.数据库系统的三级模式不包括_。(分数:2.50)A.概念设计B.内模式C.外模式D.数据模式9.有三个关系 R、S 和 T 如下: (分数:2.50)A.自然连接B差C交D并10.下列选项中属于面向对象设计方法主要特征是_。(分数:2.50)A.继承B.自顶向下C.模块化D.逐步求精11.以下描述中错误的是_。(分数:2.50)A.窗体的标题通过其 Caption 属性设置B.窗体的名称(Name 属性)可以在运行期间修改C.窗体的背景图形通
4、过其 Picture 属性设置D.窗体最小化时的图标通过 Icon 属性设置12.在设计阶段,当按 Ctrl+R 键时,所打开的窗口是_。(分数:2.50)A.代码窗口B.工具箱窗口C.工程资源管理器窗口D.属性窗口13.设有如下变量声明语句: Dim a,b As Boolean 则下面叙述中正确的是_。(分数:2.50)A.a 和 b 都是布尔型变量B.a 是变体型变量,b 是布尔型变量C.a 是整型变量,b 是布尔型变量D.a 和 b 都是变体型变量14.下列可以作为 Visual Basic 变量名的是_。(分数:2.50)A.A#AB.4ABCC.?XyD.Print_Text15.
5、假定一个滚动条的 LargeChange 属性值为 100,则 100 表示_。(分数:2.50)A.单击滚动条箭头和滚动框之间某位置时滚动框位置的变化量B.滚动框位置的最大值C.拖动滚动框时滚动框位置的变化量D.单击滚动条箭头时滚动框位置的变化量16.在窗体上画一个命令按钮,然后编写如下事件过程,结果为_。 Private Sub Command1_Click() MsgBox Str(123+321) End Sub(分数:2.50)A.字符串“123+321”B.字符串“444”C.数值“444”D.空白17.假定有以下程序: Private Sub Form_Click() a=1:b
6、=a Do Until a=5 x=a*b Print b;x a=a+b b=b+a Loop End Sub 程序运行后,单击窗体,输出结果是_。(分数:2.50)A.1 12 3B.1 12 4C.1 13 8D.1 13 618.在窗体上画一个名称为 List1 的列表框,列表框中显示若干城市的名称。当单击列表框中的某个城市名时,该城市名消失。下列在 List1_Click 事件过程中能正确实现上述功能的语句是_。(分数:2.50)A.List1.RemoveItem List1.TextB.List1.RemoveItem List1.ClearC.List1.RemoveItem
7、List1.ListCountD.List1.RemoveItem List1.ListIndex19.列表框中的项目保存在一个数组中,这个数组的名字是_。(分数:2.50)A.ColumnB.StyleC.ListD.MultiSelect20.有人编写了如下程序: Private Sub Form_Click() Dim s As Integer, x As integer s=0 x=0 Do While s=10000 x=x+1 s=s+x2 Loop Print s End Sub 上述程序的功能是:计算 s=1+2 2 +3 2 +n 2 +,直到 s10000 为止。程序运行后
8、,发现得不到正确的结果,必须进行修改。下列修改中正确的是_。(分数:2.50)A.把 x=0 改为 x=1B.把 Do While s=10000 改为 Do While s=10000C.把 Do While s=10000 改为 Do While s10000D.交换 x=x+1 和 s=s+x2 的位置21.设有如下程序: Private Sub Form_Click() Dim s As Long, f As Long Dim n As Integer, i As Integer f=1 n=4 For i=1 To n f=f*i s=s+f Next i Print s End S
9、ub 程序运行后,单击窗体,输出结果是_。(分数:2.50)A.32B.33C.34D.3522.阅读下面程序段: a=0 For i=1To3 For j=1Toi For k=jTo3 a=a+1 next k next j next i 执行上述程序段后,a 的值为_。(分数:2.50)A.3B.9C.14D.2123.设有如下程序: Private Sub Form_Click() Cls A$=“123456“ For i=1 To 6 Print Tab(12-i); _ Next i End Sub 程序运行后,单击窗体,要求结果如下图所示,则在_处应输入的内容为_。 (分数:2
10、.50)A.Left(a$,i)B.Mid(a$,8-i,i)C.Right(a$,i)D.Mid(a$,7,i)24.设有如下程序: Private Sub Form_Click() Dim i As Integer, x As String, y As String x=“ABCDEFG“ For i=4 To 1 step-1 y=Mid(x,i,i)+y Next i Print y End Sub 程序运行后,单击窗体,输出结果是_。(分数:2.50)A.ABCCDEDEFGB.AABBCDEFGC.ABCDEFGD.AABBCCDDEEFFGG25.设有如下程序: Private
11、Sub Form_Click() Dim ary(1 To 5)As Integer Dim i As Integer Dim sum As Integer For i=1 To 5 ary(i)=i+1 sum=sum+ary(i) Next i Print sum End Sub 程序运行后,单击窗体,则在窗体上显示为_。(分数:2.50)A.15B.16C.20D.2626.有一个数列,它的前 3 个数为 0,1,1,此后的每个数都是在其前面的 3 个数之和,即 0,1,1,2,4,7,13,24 要求编写程序输出该数列中所有不超过 1000 的数。 某人编写程序如下: Private
12、Sub Form_Click() Dim i As Integer, a As Integer, b As Integer Dim c As Integer, d As Integer a=0;b=1;c=1 d=a+b+C i=5 While d=1000 Print d; a=b;b=c;c=d d=a+b+c i=i+1 Wend End Sub 运行上面的程序,发现输出的数列不完整,应进行修改,以下正确的是_。(分数:2.50)A.把 While d=1000 改为 While d1000B.把 i=5 改为 i=4C.把 i=i+1 移到 While d=1000 下面D.在 i=5
13、 前面增加一个语句:Print a;b;c;27.下面的语句用 Array 函数为数组变量 a 的各元素赋整数值: a=Array(1,2,3,4,5,6,7,8,9)。 针对 a 的声明语句应该是_。(分数:2.50)A.Dim aB.Dim a As integerC.Dim a(9)As integerD.Dim a()As integer28.下列描述中正确是_。(分数:2.50)A.Visual Basic 只能通过过程调用执行通用过程B.可以在 Sub 过程中的代码中包含另一个 Sub 过程的代码C.可以像通用过程一样指定事件过程的名字D.Sub 过程和 Function 过程都有
14、返回值29.阅读下面程序: Function fac(By Val n As Integer)As Integer Dim temp As Integer temp=1 For i%=1 To n temp=temp*i% Next i% fac=temp End function Private Sub Form Click() Dim nsum As Integer nsum=1 For i%=2 To 4 nsum=nsum+fac(i%) Next i% Print nsum End Sub 程序运行后,单击窗体,输出结果是_。(分数:2.50)A.35B.31C.33D.3730.在
15、窗体上画一个命令令按钮和一个标签,其名称分别为 Command1 和 Label1,然后编写如下代码: Sub S(x As Integer, y As Integer) Static z As Integer y=x*x+z z=y End Sub Private Sub Command1_Click() Dim i As Integer, z As Integer m=0 z=0 For i=1 To 3 s i,z m=m+z Next i Label1.Caption=Str(m) End Sub 程序运行后,单击命令按钮,在标签中显示的内容是_。(分数:2.50)A.50B.20C.
16、14D.731.以下说法正确的是_。(分数:2.50)A.MouseUp 事件是鼠标向上移动时触发的事件B.MouseUp 事件过程中的 x、y 参数用于修改鼠标位置C.在 MouseUp 事件过程中可以判断用户是否使用了组合键D.在 MouseUp 事件过程中不能判断鼠标的位置32.假定已经在菜单编辑器中建立了窗体的弹出式菜单,其顶级菜单项的名称为 al,其“可见”属性为false,程序运行后,单击鼠标左键或右键都能弹出菜单的事件过程是_。(分数:2.50)A.Private Sub Form_MouseDown(Button As Integer, _Shift As Integer, X
17、 As Single,Y As Single)If Button=1 and Button=2 ThenPopupMenu alEnd IfEnd SubB.Private Sub Form_MouseDown (Button As Integer, _Shift As Integer, X As Single,Y As Single)PopupMenu alEnd SubC.Private Sub Form_MouseDown (Button As Integer, _Shift As Integer, X As Single,Y As Single)If Button=1 ThenPopu
18、pMenu alEnd IfEnd SubD.Private Sub Form_MouseDown(Button As Integer, _Shift As Integer. X As Single,Y As Single)If Button=2 ThenPopupMenu alEnd IfEnd Sub33.在窗体上画一个名称为 CD1 的通用对话框,并有以下程序: Private Sub Form_load() CD1.DefaultExt=“.doc“ CD1.fileName=“c:/file1.txt“ CD1.filter=“应用程序(*.exe)|*.exe“ End Sub 程
19、序运行时,如果显示了“打开”对话框,在文件夹类型中下拉列表中的默认文件类型为_。(分数:2.50)A.应用程序(*.exe)B.*.docC.*.txtD.不确定34.以下描述错误的是_。(分数:2.50)A.在多窗体应用程序中,可以有多个当前窗体B.多窗体应用程序的启动窗体可以在设计时设定C.多窗体应用程序没有一个窗体作为一个磁盘文件保存D.多窗体应用程序可以编译生成一个 EXE 文件35.以下关于顺序文件的叙述中,正确的是_。(分数:2.50)A.可以用不同的文件号以不同的书写方式同时打开同一个文件B.文件中个记录的写入顺序与读出顺序是一致的C.可以用 input#或 line input
20、#语句向文件写记录D.如果用 Append 方式打开文件,则既可以在文件末尾添加记录,也可以读取原有记录36.当一个复选框被选中时,它的 Value 属性的值是_。(分数:2.50)A.3B.2C.1D.037.表达式 5 Mod 3+3*2 的值是_。(分数:2.50)A.0B.2C.4D.638.设 x=4,y=8,z=7,以下表达式的值是_。 xy And (Not yz) Or zx(分数:2.50)A.1B.-1C.TureD.False39.设 a=“MicrosoftVisualBasic“,则以下使变量 b 的值为“VisualBasic“的语句是_。(分数:2.50)A.b=
21、Left(a,10)B.b=Mid(a,10)C.b=Right(a,10)D.b=Mid(a,11,10)40.假定有如下的窗体事件过程; Private Sub Command1_Click() a$=“Microsoft Visual Basic“ b$=Right(a$,5) c$=Mid(a$,1,9) MsgBox a$,34,b$,c$,5 End Sub 程序运行后,单击窗体,则在弹出的信息框的标题栏中显示的信息是_。(分数:2.50)A.Microsoft VisualB.MicrosoftC.BasicD.5二级 VISUAL+BASIC-67 答案解析(总分:100.00
22、,做题时间:90 分钟)一、选择题(总题数:40,分数:100.00)1.下列叙述中正确的是_。(分数:2.50)A.算法就是程序B.设计算法时只需要考虑数据结构的设计C.设计算法时只需要考虑结果的可靠性D.以上三种说法都不对 解析:解析 所谓算法是指解题方案的准确而完整的描述。但算法不等于程序,也不等于计算方法,故A 项错误。设计算法时要考虑可行性、确定性、有穷性和拥有足够的情报,因此选项 B、C 皆错误。2.下列关于线性链表的叙述中,正确的是_。(分数:2.50)A.各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致B.各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储
23、顺序必须连续C.进行插入与删除时,不需要移动表中的元素 D.以上三种说法都不对解析:解析 在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的,故 A、B 错误。线性链表在插入与删除过程中不发生数据元素移动的现象,只需改变有关结点的指针即可。3.下列关于二叉树的叙述中,正确的是_。(分数:2.50)A.叶子结点总是比度为 2 的结点少一个B.叶子结点总是比度为 2 的结点多一个 C.叶子结点数是度为 2 的结点数的两倍D.度为 2 的结点数是度为 1 的结点数的两倍解析:解析 概念理解题。在任意一
24、棵二叉树中,度为 0 的结点(即叶子结点)总比度为 2 的结点多一个。4.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是_。(分数:2.50)A.学生成绩管理系统 B.C 语言编译程序C.UNIX 操作系统D.数据库管理系统解析:解析 应用软件是为解决特定领域的应用而开发的软件。例如,事务处理软件、工程与科学计算软件、实时处理软件、嵌入式软件、人工智能软件等应用性质不同的各种软件。5.某系统总体结构图如下图所示: (分数:2.50)A.7B.6C.3 D.2解析:解析 树的最大层次称为树的深度。图中的系统总体结构为树型,有 3 层,故深度为 3。6.程序调试
25、的任务是_。(分数:2.50)A.设计测试用例B.验证程序的正确性C.发现程序中的错误D.诊断和改正程序中的错误 解析:解析 程序调试的任务是诊断和改正程序中的错误。它与软件测试不同,软件测试是尽可能多地发现软件中的错误。7.下列数据库设计的叙述中,正确的是_。(分数:2.50)A.在需求分析阶段建立数据字典 B.在概念设计阶段建立数据字典C.在逻辑设计阶段建立数据字典D.在物理设计阶段建立数据字典解析:解析 数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实、完善的。8.数据库系统的三级模式不包括_。(分数:2.50)A.概念设计B.内模式C.外模式D.数据模式 解析:解析 数据
26、库系统的三级模式分别是概念级模式、内部级模式与外部级模式。9.有三个关系 R、S 和 T 如下: (分数:2.50)A.自然连接B差 C交D并解析:解析 图中 R 的关系与 S 的关系相差 T,故由关系 R 和 S 得到关系 T 的操作是差。10.下列选项中属于面向对象设计方法主要特征是_。(分数:2.50)A.继承 B.自顶向下C.模块化D.逐步求精解析:解析 对象是由数据和容许的操作组成的封装体,与客观实体有直接的对应关系。对象之间通过传递消息互相联系,以模拟现实世界中不同事物之间的联系。面向对象程序设计方法最重要的特性是继承、多态和封装。继承是使用已经定义好的类作为基础来创建新类的技术。
27、多态性是指当对不同类的对象执行同样的方法时,系统能根据不同类的对象正确辨别调用各对象所属类的相应方法,从而产生不同的结果。11.以下描述中错误的是_。(分数:2.50)A.窗体的标题通过其 Caption 属性设置B.窗体的名称(Name 属性)可以在运行期间修改 C.窗体的背景图形通过其 Picture 属性设置D.窗体最小化时的图标通过 Icon 属性设置解析:解析 此题考查窗体的属性。其中,窗体的名称(Name 属性)在运行期间不可以修改。12.在设计阶段,当按 Ctrl+R 键时,所打开的窗口是_。(分数:2.50)A.代码窗口B.工具箱窗口C.工程资源管理器窗口 D.属性窗口解析:解
28、析 此题属于识记题。按 Ctrl+R 键,可以直接打开工程资源管理器窗口。13.设有如下变量声明语句: Dim a,b As Boolean 则下面叙述中正确的是_。(分数:2.50)A.a 和 b 都是布尔型变量B.a 是变体型变量,b 是布尔型变量 C.a 是整型变量,b 是布尔型变量D.a 和 b 都是变体型变量解析:解析 Dim 语句可以声明一个或者多个变量。语法是:Dim 变量名As 数据类型,变量名As 数据类型.。若未定义数据类型,则默认为 Variant,即变体类型。本题中 a 变量默认了变量类型,b 变量为布尔型。14.下列可以作为 Visual Basic 变量名的是_。(
29、分数:2.50)A.A#AB.4ABCC.?XyD.Print_Text 解析:解析 VB 中变量的命名必须遵循下列规则:(1)变量名必须以字母开头,不能以数字或者其他字符开头,由此排除 B、C 选项。(2)变量名必须由字母、数字或者下划线(_)组成。(3)变量名不能包含句点(.)、空格或者类型声明字符(%、$、#、x a=a+b b=b+a Loop End Sub 程序运行后,单击窗体,输出结果是_。(分数:2.50)A.1 12 3B.1 12 4C.1 13 8D.1 13 6 解析:解析 考查 Do UntilLoop 型循环的执行条件。考生一定要注意与 Do whileLoop 的
30、区别(在DoLoop 结构中 Untilt 和 While 不同,判断条件正好相反。Until 结构是只要条件为 False,而不是True,就执行循环,否则跳出循环体)。该程序第一次循环时,a=1,b=1,判断条件为假,执行循环,x=1,第一次输出 1 1,然后 a=2,b=3,接着进行第二次循环,x=2*3=6,输出 3 6,此时 a=5,b=8,判断条件为真,退出循环。18.在窗体上画一个名称为 List1 的列表框,列表框中显示若干城市的名称。当单击列表框中的某个城市名时,该城市名消失。下列在 List1_Click 事件过程中能正确实现上述功能的语句是_。(分数:2.50)A.Lis
31、t1.RemoveItem List1.TextB.List1.RemoveItem List1.ClearC.List1.RemoveItem List1.ListCountD.List1.RemoveItem List1.ListIndex 解析:解析 考查获取列表框中所选项值的属性。Text 属性设置或返回被选中列表项的内容。Clear 方法是指清除列表框所有项目。ListCount 属性返回列表项数量的数值,只能在程序运行时起作用。比如有着 4 种选项的列表框,则 ListCount 就为 4。ListIndex 属性表示用来返回或设置控件中当前选择项目的索引号索引号从 0 开始。19
32、.列表框中的项目保存在一个数组中,这个数组的名字是_。(分数:2.50)A.ColumnB.StyleC.List D.MultiSelect解析:解析 列表框的 List 属性保存了列表框中所有值的数组,可以通过下标访问数组中的值。Columns 属性用来设置列表框是水平还是垂直滚动以及如何显示列表框中的项目。Style 属性决定是否将复选框显示在列表框中。MultiSelect 用于设置是否允许同时选择多个列表项。20.有人编写了如下程序: Private Sub Form_Click() Dim s As Integer, x As integer s=0 x=0 Do While s=
33、10000 x=x+1 s=s+x2 Loop Print s End Sub 上述程序的功能是:计算 s=1+2 2 +3 2 +n 2 +,直到 s10000 为止。程序运行后,发现得不到正确的结果,必须进行修改。下列修改中正确的是_。(分数:2.50)A.把 x=0 改为 x=1B.把 Do While s=10000 改为 Do While s=10000 C.把 Do While s=10000 改为 Do While s10000D.交换 x=x+1 和 s=s+x2 的位置解析:解析 考查 do While 循环的执行条件,题目要求直到 s10000 为止,在此题应表达为当s=1
34、0000 时执行循环体,否则跳出循环。21.设有如下程序: Private Sub Form_Click() Dim s As Long, f As Long Dim n As Integer, i As Integer f=1 n=4 For i=1 To n f=f*i s=s+f Next i Print s End Sub 程序运行后,单击窗体,输出结果是_。(分数:2.50)A.32B.33 C.34D.35解析:解析 本题为计算阶乘累加的基本程序段,即计算 1!+2!+3!+4!=33。22.阅读下面程序段: a=0 For i=1To3 For j=1Toi For k=jTo3
35、 a=a+1 next k next j next i 执行上述程序段后,a 的值为_。(分数:2.50)A.3B.9C.14 D.21解析:解析 本题主要考查嵌套 For 循环。变量 a 用来计算 k 循环体的执行次数。i 循环共执行 3 次,j循环依次执行 1、2、3 次。当 i=1,j=1 时,k 循环 3 次;当 i=1,j=2 时,k 循环 2 次,当=1,j=3 时 k循环 1 次。以此类推。k 循环共执行 14 次。23.设有如下程序: Private Sub Form_Click() Cls A$=“123456“ For i=1 To 6 Print Tab(12-i); _
36、 Next i End Sub 程序运行后,单击窗体,要求结果如下图所示,则在_处应输入的内容为_。 (分数:2.50)A.Left(a$,i) B.Mid(a$,8-i,i)C.Right(a$,i)D.Mid(a$,7,i)解析:解析 本题旨在考查字符串截取函数的使用。Left(字符串,n)表示取字符串左边的 n 个字符;Right(字符串,n)表示取字符串右边的 n 个字符;Mid(字符串,开始位置,n)表示从开始位置处截取指定个数的字符。24.设有如下程序: Private Sub Form_Click() Dim i As Integer, x As String, y As Str
37、ing x=“ABCDEFG“ For i=4 To 1 step-1 y=Mid(x,i,i)+y Next i Print y End Sub 程序运行后,单击窗体,输出结果是_。(分数:2.50)A.ABCCDEDEFG B.AABBCDEFGC.ABCDEFGD.AABBCCDDEEFFGG解析:解析 本题考查 Mid 函数的用法,Mid(字符串,开始位置,n)表示从开始位置处截取指定个数的字符。并将每次截取的字符串连接在原字符串的前面(请注意是 y=Mid(x,i,i)+y 而不是 y=y+Mid(x,i,i)。i=4 时,y=“DEFG“;i=3 时,y=“CDEDEFG“;i=2
38、 时,y=“BCCDEDEFG“;i=1 时,y=“ABCCDEFG“。25.设有如下程序: Private Sub Form_Click() Dim ary(1 To 5)As Integer Dim i As Integer Dim sum As Integer For i=1 To 5 ary(i)=i+1 sum=sum+ary(i) Next i Print sum End Sub 程序运行后,单击窗体,则在窗体上显示为_。(分数:2.50)A.15B.16C.20 D.26解析:解析 本题主要考查数组的基本操作。首先为数组 ary 的各个元素赋值,然后计算数组元素的和并保存在变量
39、sum 中。即 sum=2+3+4+5+6=20。26.有一个数列,它的前 3 个数为 0,1,1,此后的每个数都是在其前面的 3 个数之和,即 0,1,1,2,4,7,13,24 要求编写程序输出该数列中所有不超过 1000 的数。 某人编写程序如下: Private Sub Form_Click() Dim i As Integer, a As Integer, b As Integer Dim c As Integer, d As Integer a=0;b=1;c=1 d=a+b+C i=5 While d=1000 Print d; a=b;b=c;c=d d=a+b+c i=i+1
40、 Wend End Sub 运行上面的程序,发现输出的数列不完整,应进行修改,以下正确的是_。(分数:2.50)A.把 While d=1000 改为 While d1000B.把 i=5 改为 i=4C.把 i=i+1 移到 While d=1000 下面D.在 i=5 前面增加一个语句:Print a;b;c; 解析:解析 根据题目,已知前三个元素的值,分别用变量 a、b、c 表示,d 表示第四个以后的元素的值,故输出的数列缺少前三项。27.下面的语句用 Array 函数为数组变量 a 的各元素赋整数值: a=Array(1,2,3,4,5,6,7,8,9)。 针对 a 的声明语句应该是_
41、。(分数:2.50)A.Dim a B.Dim a As integerC.Dim a(9)As integerD.Dim a()As integer解析:解析 本题考查 array 函数的使用。数组变量名=array(数组元素值),数组变量名是指它作为数组使用,但作为变体变量来定义,既没有维数,也没有上下界。28.下列描述中正确是_。(分数:2.50)A.Visual Basic 只能通过过程调用执行通用过程 B.可以在 Sub 过程中的代码中包含另一个 Sub 过程的代码C.可以像通用过程一样指定事件过程的名字D.Sub 过程和 Function 过程都有返回值解析:解析 本题考查过程的基
42、本知识。Sub 过程不能嵌套,故选项 B 错误;过程名需满足变量名的命名规则,故选项 C 错误;Sub 过程无返回值,故选项 D 错误。29.阅读下面程序: Function fac(By Val n As Integer)As Integer Dim temp As Integer temp=1 For i%=1 To n temp=temp*i% Next i% fac=temp End function Private Sub Form Click() Dim nsum As Integer nsum=1 For i%=2 To 4 nsum=nsum+fac(i%) Next i% P
43、rint nsum End Sub 程序运行后,单击窗体,输出结果是_。(分数:2.50)A.35B.31C.33 D.37解析:解析 函数 fac 的作用是计算 n 的阶乘,Form_Click 窗体事件是计算阶乘的累加和。即本程序的功能是计算 1+2!+3!+4!=33。30.在窗体上画一个命令令按钮和一个标签,其名称分别为 Command1 和 Label1,然后编写如下代码: Sub S(x As Integer, y As Integer) Static z As Integer y=x*x+z z=y End Sub Private Sub Command1_Click() Dim
44、 i As Integer, z As Integer m=0 z=0 For i=1 To 3 s i,z m=m+z Next i Label1.Caption=Str(m) End Sub 程序运行后,单击命令按钮,在标签中显示的内容是_。(分数:2.50)A.50B.20 C.14D.7解析:解析 存定义过程时,如果没有 ByVal 关键字,默认的是按地址传递参数,或者用 ByRef 关键字指定按地址传递。按钮单击事件中的 Si,z 语句将实参 i 和 z 按地址传递参数,传递给形参 x 和 y,即 S过程中 x、y 的值发生变化时,其对应的实参的值也相应变化;S 过程中的变量 z 为
45、静态变量,程序运行过程中,每次引用该变量时,其值会保留原有结果,不会被重新初始化。31.以下说法正确的是_。(分数:2.50)A.MouseUp 事件是鼠标向上移动时触发的事件B.MouseUp 事件过程中的 x、y 参数用于修改鼠标位置C.在 MouseUp 事件过程中可以判断用户是否使用了组合键 D.在 MouseUp 事件过程中不能判断鼠标的位置解析:解析 本题考查 MouseUp 事件的基本概念。MouseUp 事件是当鼠标释放时触发的。鼠标事件的语法是:Private Sub 对象_鼠标事件(Button As Integer,ShiftAs Integer,X As Single,
46、Y As Single)。鼠标释放事件,可以通过 X,Y 参数获取当前鼠标光标位置。其中,Shift 参数表示当鼠标键被按下或被释放时,Shift、Ctrl、Alt 键的按下或释放状态。通过 Shift 值判断 Shift、Ctrl、Alt 组合键的状态。32.假定已经在菜单编辑器中建立了窗体的弹出式菜单,其顶级菜单项的名称为 al,其“可见”属性为false,程序运行后,单击鼠标左键或右键都能弹出菜单的事件过程是_。(分数:2.50)A.Private Sub Form_MouseDown(Button As Integer, _Shift As Integer, X As Single,Y
47、 As Single)If Button=1 and Button=2 ThenPopupMenu alEnd IfEnd SubB.Private Sub Form_MouseDown (Button As Integer, _Shift As Integer, X As Single,Y As Single)PopupMenu alEnd Sub C.Private Sub Form_MouseDown (Button As Integer, _Shift As Integer, X As Single,Y As Single)If Button=1 ThenPopupMenu alEnd
48、 IfEnd SubD.Private Sub Form_MouseDown(Button As Integer, _Shift As Integer. X As Single,Y As Single)If Button=2 ThenPopupMenu alEnd IfEnd Sub解析:解析 本题考查弹出菜单的应用与鼠标按键的判断。PopupMenu 方法用来显示弹出菜单,将PopupMenu 方法放在 MouseDown 事件中,默认可以响应所有的鼠标键的单击操作,语法格式为:Object.PopupMenu menuname,flags,x,y,boldcommand 其中:Object(对象)窗体名。Menuname(菜单名)指在菜单编辑器中定义的主菜单项名。Button=1 表示鼠标左键,Button=2 表示鼠标右键。本题要求程序运行后,单击鼠标左键或右键都能弹出菜单的事件过程。33.在窗体上画一个名称为