C) If x<3 y:x>y Then y=x^3
D) If x<3 y And x>y Then y=x * * 3
解析: 此题考查是条件语句的结构。条件语句可以分为三种类型,如下:
If Then 结构
If Then Else 结构
Select Case 结构
而 If Then 结构有两种格式:
If 条件 Then 语句
If 条件 Then
语句块
End If
(29) 计算 z 的值,当 x 大于 y 时, z=x ;否则 z=y 。下列语句错误的是
A) If x>=y Then z=x : z=y
B) If x>=y Then z=x Else z=y
C) z=y : If x>=y Then z=x
D) If x<=y Then z=y Else z=x
解析:选项 A) 中的语句行有两条语句,执行 If 语句后,执行 z=y 语句,所以不管 x 是否大于 y ,最终 z 的值都等于 y 。
(30) 下列程序段执行结果为
x=5
y=-6
If Not x>0 Then x=y-3 Else y=x+3
Print x-y; y-x
A) -3 3
B) 5 -9
C) 3 -3
D) -6 5
解析:程序开始时分别执行 x , y 赋值 5 , -6 。 If 语句 Not x>0 相当于 x<=0 ,现在 x 的值为 5 ,比 0 大,所以条件值为 False ,执行 Else 语句 y = x+3 ,此时 y 为 8 ,执行 Print 方法,即输出 x - y 和 y - x 的值, x - y = -3 , y - x = 3 ,所以最后输出结果应该如选项 A) 所示。
(31) 不能脱离控件 ( 包括客体 ) 而独立存在的过程是
A) 事件过程
B) 通用过程
C) Sub 过程
D) 函数过程
解析:事件过程由 Visual Basic 创建,事件过程是当用户对一个对象发出一个动作时所产生的事件,不能脱离控件而独立存在;通用过程时通用的,不与任何特定事件相联系,它完成特定的任务,只能由别的过程调用; Sub 过程包括事件过程和通用过程,称之为子过程。也就是说,有些 Sub 过程与对象相关联,有些 Sub 过程与对象没有联系;函数过程类似于内部函数,由用户定义的,完成一些特殊函数关系的计算,并且要返回函数值的过程,显然函数过程不必与控件发生联系。
(32) Sub 过程与 Function 过程最根本的区别是
A) Sub 过程可以用 Call 语句直接使用过程名调用,而 Function 过程不可以
B) Function 过程可以有形参, Sub 过程不可以
C) Sub 过程不能返回值,而 Function 过程能返回值
D) 两种过程参数的传递方式不同
解析:在 Visual Basic 中有两类过程,一类是系统提供的内部函数和事件过程;另一类是用户根据自己的需要定义的,供事件过程的多次调用,而第二类过程中,我们现在涉及最多的是子过程。它们的共同点都是完成某种特定功能的一组程序代码;不同的是函数是带有返回值的特殊过程,所以函数过程定义时有返回值的类型说明。
(33) 单击命令按钮时,下列程序的执行结果为
Private Sub Command1_Click()
Dim x As Integer, y As Integer
x=12:y=32
Call Proc(x,y)
Print x; y
End Sub
Public Sub Proc(n As Integer, ByVal m As Integer)
n=n Mod 10
m=m Mod 10
End Sub
A) 1232
B) 232
C) 23
D) 123
解析:此题是函数过程的调用。
在调用过程时,一般主调与被调过程之间有数据传递,即将主调过程的实参传递给被调用的过程,完成实参与形参的结合,然后执行被调过程,在 Visual Basic中,实参与形参的结合有两种方式:即传址与传值。这两种方法的特点如下:
传址的结合过程是,当调用一个过程时,它将实参的地址传给形参,因此在被调用的过程中,对形参的任何操作都变成了对相应实参的操作,因此实参的值会随形参的改变而改变。
传值的结合过程时:当调用一个过程时,系统将实参的值赋值给形参并断开了联系,被调用过程中的操作时在形参自己的存储单元中进行的,当过程调用结束时,这些形参所占用的存储单元也同时被释放,因此在过程中对形参的任何操作不会影响实参。而题中被调过程 Proc 中有两个形参,其中第一个形参 n 为传址方式,第二个形参 m 为传值方式。主调过程分别把实参 x 、 y 传递给 Proc ,所以当过程调用结束后,实参 x 的值应随着被调过程变化而变化,而实参 y 值在主调函数中始终不变,所以输出 y 的值仍为 32 ;在被调过程中 “ n = n Mod 10 ” 被调用时,相当于 “ x = x Mod 10 ” ,所有 x 的值最终为 2 ,最后输出结果如选项 B) 所示。
(34) 单击命令按钮时,下列程序的执行结果是
Private Sub Command1_Click()
Dim a As Integer, b As Integer, c As Integer
a=3
b=4
c=5
Print SecProc(c, b, A)
End Sub
Function FirProc(x As Integer, y As Integer, z As Integer)
FirProc=2 x+y+3 z
End Function
Function SecProc(x As Integer, y As Integer, z As Integer)
SecProc=FirProc(z, x, y) +x
End Function
A) 20
B) 22
C) 28
D) 30
解析:此题程序代码中用了两层调用,我们对这样的问题要多加小心,不能掉以轻心,千万不要把实参和相对应的形参弄混淆。主调过程 Command1_Click 输出的是 SecProc(c, b, a) 的返回值,调用过程 SecProc 时,主调过程分别把实参 c 、 b 、 a 地址传给形参 x 、 y 、 z ,此时在过程 SecProc 中, SecProc = FirProc(a , c , b) + c 。由此看出,程序段执行此语句时,将调用过程 FirProc 。把实参 a 、 c 、 b 的地址分别传给形参 x 、 y 、 z ,此时在过程 FirProc 中, FirProc = 2 * x + y + 3 * z ,所以 FirProc(a , c , b) = 6+4+15 = 25 , SecProc(a , c , b) = 25+3 = 28 ,所以选项 C) 是正确的。
(35) 下列程序的执行结果为
Private Sub Command1_Click()
Dim FirStr As String
FirSt="abcdef"
Print Pat(FirStr)
End Sub
Private Function Pat(xStr As String) As String
Dim tempStr As String, strLen As Integer
tempStr=""
strLen=Len(xStr)
i=1
Do While i<=Len(xStr) -3
tempStr=tempStr+Mid(xStr, i, 1) +Mid(xStr, strLen -i+1, 1)
i=i+1
Loop
Pat=tempStr
End Function
A) abcdef
B) afbecd
C) fedcba
D) defabc
解析:主调函数最终输出值是 Pat(FirStr) 过程的返回值,这就得调用函数过程Pat。
被调过程 Pat的参数xStr从主调函数中收到实参FirStr传来的值 “ abcdef ” ,过程 Pat开始声明了两个变量,一个是String型的tempStr,一个是Integer型的strLen。语句 tempStr = " "。
strLen = Len(xStr) 以上两条语句的功能是:为变量tempStr赋空值,变量strLen的值就是xstr的长度,此题为6。程序代码执行Do While…Loop的循环语句:
第一次循环, I=1,I<=3成立,执行语句tempStr + Mid(xStr, i, 1)+ Mid(xStr, strLen - i + 1, 1) ;
mid函数一般调用格式:Mid(字符串,p,n) 其功能就是从第p个字符开始,向后截取n个字符,第一次循环结束后,tempStr= “ af ” ;
第二次循环, I=2,I<=3成立,继续执行循环体,tempStr= “ afbe ” ;
第三次循环, I=3,I<=3成立,继续执行循环体,tempStr= “ afbecd ” ;
第四次循环, I = 4 , I<=3 不成立,则跳出循环体,执行语句 Pat = tempStr 。所以最终 Pat(FirStr) = “ afbecd ” ,即最后程序执行结果如选项 B) 所示。
填空题 (共 15 空,每空 2 分,共 30 分)
(1) 算法的基本特征是可行性、确定性、 【1】 和拥有足够的情报。
解析: 算法是指解题方案的准确而完整的描述。它有 4 个基本特征,分别是可行性、确定性、有穷性和拥有足够的情报。
(2) 在长度为 n 的有序线性表中进行二分查找。最坏的情况下,需要的比较次数为 【 2 】 。
解析: 对于长度为 n 的有序线性表,在最坏情况下,二分查找只需要比较 log2n 次,而顺序查找需要比较 n 次。
(3) 在面向对象的程序设计中,类描述的是具有相似性质的一组 【 3 】 。
解析: 将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共同方法的对象的集合。
(4) 通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为 【 4 】 。
解析: 软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等活动。
(5) 数据库管理系统常见的数据模型有层次模型、网状模型和 【 5 】 3 种。
解析: 数据库管理系统是位于用户与操作系统之间的一层系统管理软件,是一种系统软件,是用户与数据库之间的一个标准接口。其总是基于某种数据模型,可以分为层次模型、网状模型和关系模型。
(6) Visual Basic 对象可以分为两类,分别为 【 6 】 和 【 7 】 。
解析: 对象分为两类:预定义对象和用户定义对象,预定义对象是由系统设计好的,可以直接使用或对其进行操作;而用户定义对象中的对象可由程序员自己定义,建立自己的对象。
(7) 完成下面的程序,使显示结果如下图所示。
Private Sub Form_Click()
FontSize=18
Sample $ =" 【 8 】 "
x=(ScaleWidth-TextWidth(Sample $ ) ) /2
y=(ScaleHeight-TextHeight(Sample $ ) ) /2
CurrentX=x
CurrentY=y
【 9 】 Sample $
End Sub

解析: 该题中主要是考查了赋值语句与显示语句。赋值语句是根据图示给出的信息,填写上字符串,然后,用 Print 命令,使字符串显示在窗体上。赋值语句为 Sample $ = " Welcome to Beijing !" ;输出语句为: Print Sample $。
(8) 下列程序的功能是:当 x<50 时, y=0.8 × x ;当 50 ≤ x ≤ 100 时, y=0.7 × x ;当 x>100 时,没有意义。请填空。
Private Sub Command1_Click()
Dim x As Single
x=InputBox(" 请输入 x 的值! ")
【 10 】
Case Is < 50
y=0.8 * x
Case 50 To 100
y=0.7 * x
【 11 】
Print " 输入的数据出界! "
End Select
Print x, y
End Sub
解析:阅读程序后,看到程序中有了 Case 和 End Select 子句,没有多分支选择结构的起始语句,很明显,第一个空应该填写多分支结构的起始语句 Select Case x 。在 Select Case 结构中,只有两个 Case 子句,分别表示 x 取值的两种情况,但题目中将 x 的值分为 3 种情况,可见第二个空应该填写 Case Else 语句。
(9) 改变驱动器列表框的 Drive 属性值将引发 【 12 】 事件。
解析: 本题考查的是驱动器列表框的知识。驱动器列表框的最常用的事件是 “ Change 事件 ” ,每次重新设置 Drive 属性都会引起 “ Change ” 事件。
(10) 下面程序是由鼠标事件在窗体上画图,如果按下鼠标将可以画图,双击窗体可以清除所画图形。补充完整下面的程序。
首先在窗体层定义如下变量:
Dim PaintStart As Boolean
编写如下事件过程:
Private Sub Form_Load()
DrawWidth=2
ForeColor=vbGreen
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
【 13 】
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
If PaintStart Then
PSet (X, Y)
End If
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
【 14 】
End Sub
Private Sub Form_DblClick()
【 15 】
End Sub
解析: 上述过程定义了一个布尔型变量 PaintStart ,当按下鼠标左键 ( 触发 MouseDown 事件 ) 时,由题意按下鼠标键表示能画图,所以该变量的值为 True ,而松开鼠标左键 ( 触发 MouseUp 事件 ) 时,该变量为 False ;如果变量 PaintStart 为 True ,则移动鼠标 ( 触发 MouseMove 事件 ) ,将在窗体上绘出一个点;除鼠标事件外,上述程序还含有一个 Load 事件过程和一个 DblClick 事件过程,其中 Load 事件过程用来设置画点的大小和颜色, DblClick 事件过程用来清除所画的图形,函数 Pset 是画点语句,用它可以在 (x,y) 处画一个点。
|