(26)关于KeyPress事件的KeyAscii参数,下列说法正确的是_________。
A)KeyAscii参数返回用户所按键的ASCII码
B)KeyAscii参数为字符型
C)KeyAscii参数与KeyC0de参数返回值一样
D)KeyAscii参数可以省略
答案:A
评析:KeyPress事件的KeyAscii参数返回用户所按键的ASCII码,类型为整型;它与KeyDown、KeyUp事件中的KeyCode参数不同;并且KeyAscii参数不可以省略。
(27)关于顺序文件和随机文件的说法错误的是:_________。
A)顺序文件中记录的逻辑顺序与存储顺序是一致的
B)随机文件读写操作比顺序文件灵活
C)随机文件的结构特点是固定记录长度以及每条记录均有记录号
D)随机文件的操作与顺序文件相同
答案:D
评析:由于随机文件与顺序文件结构不同,因此,它们的操作有很大的区别。
(28)编写如下事件过程:
Option Base 1
Private Sub Form_Click()
Dim a
a=Array(1,5,"abcde")
For i=l To 3
Print a(i);
Next i
End Sub
程序运行后,单击窗体,显示的内容是_________。
A)1 5 abcde B)l 5"abcde" C)出错倩息 D)1
5
abcde
答案:A
评析:本题定义a是一个变体变量,在程序中用Array函数将一组数赋给了它,这样a成为一个变体数组,变体数组元素的基类型可以不相同。在循环中输出了数组元素的值,由于Print语句中有分号,所以元素挨着输出,并且输出的字符中不带双引号。
(29)在窗体上画一个名称为Commandl的命令按钮,然后编写如下事件过程和通用过程:
Private Sub Commandl_Click()
y=3:x=4
y=cacl(y,x)
Print y
End Sub
Public Function cacl(X,y)
cacl=(x^2+Sqr(y))+l
End Function
程序运行后,单击命令按钮,在窗体上显示的是________。
A)ll B)显示出错信息 C)12 D)13
答案:C
评析:本题主要检查虚实结合实现数据传送。实际参数和虚拟参数在本题中都是按地址传送,在cacl函数过程中,访问x就是访问事件过程中的y,访问y就是访问事件过程中的x。在事件过程中首先执行y=3:x=4,接着调用cacl通用过程,在通用函数过程中,计算(X"2+Sqr(y))+l,代入实际值(3^2+Sqr(4))+1=12。
(30)在窗体上画一个名称为Commandl的命令按钮,然后编写如下程序:
Option Explicit
Option Base l
Dim a()As Integer
Private Sub Commandl_Click()
Dim i As Integer,j As Integer
ReDim a(3,2)
For i=1 TO 3
For j=1 To 2
a(i,j)=I*2+j
Print"a(";i;",";j;")=";a(i,j);
Next j
Print
Next i
End Sub
程序运行后,如果单击命令按钮,则在窗体上输出的内容为________。
A)a(0,0)=3 a(0,1)=4 B)a(1,1)=2 a(1,2)=3
a(1,0)=5 a(1,1)=6 a(2,1)=3 a(2,2)=4
a(2,0)=7 a(2,1)=8 a(3,1)=4 a(3,2)=5
C)a(1,1)=3 a(1,2)=5 D)a(1,1)=3 a(l,2)=4
a(2,1)=4 a(2,2)=6 a(2,1)=5 a(2,2)=6
a(3,1)=5 a(3,2)=7 a(3,1)=7 a(3,2)=8
答案:D
评析:本程序声明动态数组a(),在过程中有ReDim a(3,2)指明数组的大小是3行2列,用双层的嵌套循环为数组元素赋值,赋值语句右侧的表达式是I*2+j,表示行号乘以2加上列号的值赋给该行该列的元素。每计算一个,给一个元素赋值,同时输出该元素的值,在输出一行元素时,由于输出项后有分号,因此不换行。每输出一行后执行一次不带参数的Print方法实现换行。输出的时候输出了行号和列号。
(31)在Do Until…Loop循环中,判断循环表达式与结束循环的关系是:_______。
A)先判断循环表达式,当表达式值为假时结束循环
B)先判断循环表达式,当表达式值为真时结束循环
C)先执行循环体,后判断循环表达式,当表达式值为假时结束循环
D)先执行循环体,后判断循环表达式,当表达式值为真时结束循环
答案:B
评析:Do Until…Loop语句的执行过程是:先计算循环表达式,如表达式的值为False,则执行循环体,如果表达式的值为True,则退出循环。
(32)下面关于控件数组与一般控件的叙述中正确的是_________。
A)控件数组一定由1个以上同类型的控件组成,而一般控件只有一个控件
B)控件数组的索引值Index为0,而一般控件的Index值为空
C)控件数组的索引值Index为l,而一般控件的Index值为0
D)控件数组的建立通过Dim语句声明,而一般控件不需要声明
答案:B
评析:控件数组的Index可以为一个大于或等于0的整数,但一定不能为空,而一般控件的Index属性值为空,这是控件数组与一般控件的差别所在。控件数组可以只有一个控件,并且它使用时是不需要声明的。
(33)在窗体上画一个名称为Commandl的命令按钮,然后编写如下事件过程:
Private Sub Command_Click()
Open"d:\goods.Txt"For Input As#l
Do Until EOF(1)
Line Input#1,1ines
Loop
Close#l
Print lines
End Sub
数据文件goods.txt的内容是:
HIF 003 12 16
ATC 005 15 18
程序运行后单击命令按钮,输出结果为________。
A)18 B)ATC 005 15 18
C)16 D)空
答案:B
评析:Line Input#语句可以读取顺序文件中一行的全部字符,也可以用它整行读取ASCII码文件。本题中是把goods.txt文件中的内容一行行赋值给变量lines,最后赋给该变量的是"ATC 005 15 18",所以文件读取完后,打印出来的就是ATC 005 15 18。
(34)在窗体上画一个名称为Textl的文本框,然后编写如下事件过程:
Private Sub Form_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single)
If Button=2 Then
Textl.Left=X
Textl.Top=Y
End If
End Sub
程序运行后在窗体上单击右键,则_________。
A)文本框的中间移动到鼠标单击处
B)文本框左上角移动到鼠标单击处
C)文本框右下角移动到鼠标单击处
D)无任何反映
答案:B
评析:MouseDown事件中,参数Button是用来识别该事件是在按下鼠标的哪个按钮时产生的。其中1表示按下鼠标左键,2表示按下鼠标右键,4表示按下鼠标中间键。而参数中的x,y表示鼠标按下点的坐标。本题中,当鼠标右键按下时,把鼠标按下点的坐标赋值给文本框的左上角,所以文本框的左上角移动到鼠标单击处。
(35)编写如下两个事件过程:
Pfivme Sub Form Click()
X=3:y=5
For k=3 T0 5
Carl ab(a:=y,b:=x)
Next k
Printx,y
End Sub
Private Sub ab(a,ByVal b)
w=a:a=b:b=w
End Sub
程序运行后,输出的结果是________。
A)3 3 B)3 5 C)5 3 D)5 5
答案:A
评析:本题中,过程ab中,第一个参数a使用的是默认的传值方式,为ByRef,是按地址传送,参数的值返回:而第二个参数b是使用的ByVal来传送的,是按值传送,参数值不返回。在使用循环语句调用ab时,变量x的值离开ab过程后并不改变,所以打印时x的值为3。而y的值在调用了一次ab后,变为3,此时x、y值都为3,所以无论再调用几次ab,y的值都为3。
二、填空题(每空2分,共30分)
请将每空的正确答案写在答题卡【1】~【15】序号的横线上,答在试卷上不得分。
(1) 某二叉树中共有27个结点,其中度为2的结点有10个,则该二叉树中有 【1】 个度为l的结点。
答案:【1】6
评析:二叉树的性质3:在任意一棵二叉树中,度为O的结点(即叶子结点)总是比度为2的结点多一个。本题中,度为2的结点数为lO,故度为0的结点数为ll,而该二又树的总结点数为27,所以度为1的结点数为27.10-1 I=6。
(2) 1973年美国学者I.Nassi和B.Shneiderman提出了一种新的流程图形式。在这种新的 流程图中,完全去掉了带箭头的流程线,全部算法写在一个矩形框内。这种流程图称为 【2】 流程图。
答案:【2】N-S
评析:基于可以用顺序结构表示任何复杂算法结构的思想,1973年美国学者I.Nassi和B.Shneiderman提出了一种新的流程图形式。在这种新的流程图中,完全去掉了带箭头的流程线,全部算法写在一个矩形框内,在该框内还可以包含其他的从属于它的框,或者说由一些基本的框组成一个大的框。这种流程图称为N-S流程图(N和s是两位美国学者的英文姓名的第一个字母)。
(3) 软件复审时,其主要的复审对象是 【3】 。
答案:【3】软件文档
评析:在软件生命周期的每个阶段结束时都要进行复审。软件复审时的主要对象是软件文档,而软件结构和程序编码的审查要在软件测试阶段进行,文档标准则是复审时所依据的准则。
(4) 数据处理是指对各种形式的数据进行收集、 【4】 加工和传播等一系列活动的总和。
答案:【4】存储
评析:数据库技术是应数据管理任务的需求而产生的。数据处理是指对各种数据进行收集、存储、加工和传播的一系列活动的总和。数据管理是对数据进行分类、组织、编码、存储、检索和维护。
(5) 结构化分析方法用自顶向下、 【5】 的方式分析系统。
答案:【5】逐步分解
评析:分析和表达用户的需求,经常采用的方法有结构化分析方法和面向对象的方法。结构化分析方法用自顶向下、逐步分解的方式分析系统。
(6) 列表框的内容存于列表框的 【6】 数组中。
答案:【6】List
评析: List属性是用于返回或设置控件的列表部分的项目。列表是一个字符串数组,数组的每一项都是一列表项目。
(7)下列程序共执行了 【7】 次循环,执行完该程序后,输出结果为 【8】 。
Private Sub Command l click()
Dim x As Integer,i As Integer,j As Integer
i=l
Do
j=1
Do
x=x+j
j=j+2
Loop Untilj>3
i=i+2
LoopUntili>17
Print x
End Sub
答案:【7】18
【8】36
评析:Do…Loop Until语句是先执行循环体,再判断条件。本题中内层D0循环执行了2次,而外层Do循环则要执行9次,故一共执行了18次。而内层循环中,第一次执行循环体时,x=x+l,第二次执行循环体时,x=x+3,即每执行一次外层循环。x就加4,所以最后x的值为4*9=36。
(8)用Dim abc,cba as Integer定义的abc变量类型是 【9】 。
答案:【9】Variant或变体型
评析:Variant数据类型(变体型)是所有没被显式声明(用如Dim、Private、Public或Static等语句)为其他类型变量的数据类型。本题中的abc没有被声明为其他数据类型,所以它是Variant型。
(9)下面是一个求两位数的程序,要求每一个两位数的两个各不相同,并统计有多少个这样的两位数,显示所有满足条件的两位数。阅读程序,并填空。
Private Sub Commandl_Click()
n=0
For a= 【l0】
For b=0 To 9
If a<>b Then
x=10* a+b
n= 【ll】
Print x
End If
Next 【12】
Print:Print"number=",n
End Sub
答案:【10】1 To 9
【11】n+l
【12】b,a
评析:因为两个数的十位数不能为零,取值范围为l~9,所以第一空应该填l To 9;n作为计数器,找到一个满足条件的两位数就要加l,故第二空应该填n+l;由题目程序可以看出,有两个For语句而程序中只有一个Next,vB中可以把几个相邻的Next语句写成一行,但必须注意循环变量的顺序,内层循环的写在左边,首先执行,故第三空答案为b,a。
(10)下面程序的功能是:程序从键盘读取40个数保存到数组A中,将一维数组A中各元素 的值移到后一个元素中,而最末一个元素的值移到第一个元素中去。然后,按每行4个数的格式输出。请在画线处填入适当内容,将程序补充完成:
Option Base 1
Private Sub Commandl_Click()
Dim a(40)As Integer
For i=l TO 40
a(i)=Val(InputBox("请输入一个整数"))
Next i
b=a(40)
Fori= 【l3】
a(i+1)=a(i)
Nexti
【14】
For i=1 TO 40
Print a(i);
If i 【l5】 4=0 Then Print
Next i
End Sub
答案:【13】39 To l Step.1
【14】a(1)=b
【15】Mod
评析:程序的循环中用InputBox函数给数组元素赋值,退出循环后,将最后一个元素的值保存在变量b中,接着在循环中给数组元素移位,移位是前面一个元素的值移到后面一个元素中,要注意移位只能从后面开始,即第39个元素的值移到第40个元素,第38个元素的值移到第39个元素,而不能从前面开始,从前面开始会用第1个元素的值覆盖后面所有元素。因此,本题第一空应该填39 To l Step-l。当完成前39个元素的移位后,就要把原来第40个元素的值赋值给第一个元素,因此,本题第二空应该填a(1)=b。在循环中除了输出数组元素的值,还要判断是否输出了4个数,因此,本题第三空应该填Mod。


