内容发布更新时间 : 2024/11/17 13:49:52星期一 下面是文章的全部内容请认真阅读。
. .
第7章 过 程
7.1 填空题
1. 一个VB应用程序可以包括的三种模块是:( )、( )和( )模块。 答案:窗体模块、标准模块、类模块
2.函数过程定义中至少有一个赋值语句把表达式的值赋给( )。 答案:函数过程名
3.在VB中,过程定义中有两种传递形式的参数:一种是( ),称为传值调用;另一种是( ),称为传址调用。
答案:传值参数、传址参数
4. 若模块中以关键字public定义子过程,则在( )中都可以调用该过程。
答案:整个应用程序
5.若窗体模块或标准模块中以关键字private定义函数过程,则该函数过程只能在( )中使用。
答案:该窗体模块或标准模块
6.每一个用标识符定义的变量、常量、过程都有一个有效围,这个围称为标识符的( )。
答案:作用域
7.在模块定义的过程,若在关键字sub或Function加前缀Public,则该过程称为( )。
答案:全局级过程或工程级过程
8. 过程中定义的静态变量作用域是( ),生存期是( )。 答案:该过程、整个应用程序运行结束之前
7.2 选择题
1.标准模块中的代码存放在以( )为扩展名的文件中。 a).frm b).bas c).cls d).txt 答案:b 2.( )不能在标准模块中定义。
a)事件过程 b)子过程 c)函数过程 d)公共过程 答案:a
3.设已定义子过程p,有3个数值型传值参数;设a为实型变量,调用该子过程的正确语句为( )。
a) p b) call p 0.5, a, 100 c) call p ( 0.5, cos(0.1), a+10 ) d) p ( 0.5, 1.2, 100 ) 答案:c
4. 设已定义函数过程f,它有三个实型传值参数;设a,b和c为实型变量,则调用该函数的正确语句为( )。
a)f b) f( a+b, b+c ) c)f ( a+b, b+c ,c+a ) d) f a+b, b+c, c+a
.. ..
. .
答案:c
5.在过程体中退出子过程的语句是( )。
a) Exit Do b) Exit For
c) Exit Sub d) Exit Function 答案:c
6.在过程的形式参数的前面加上关键字( ),则该参数说明为传值参数。 a) Val b) ref c) Byref d) ByVal 答案:d
7.关于过程作用域,错误的描述是( )。 a) 全局级过程的作用域为整个工程。
b) 在某一窗体模块中定义的全局级过程,若被该模块外的模块所调用,必须在该过程名前加上窗体名称。
c) 在不同模块中定义的模块级过程可以同名。 d) 模块级过程与工程级过程不能同名。 答案:d
8.关于变量的作用域,正确的描述是( )。
a) 在模块定义的变量,其作用域必定为所在模块。 b) 同一模块中不同级的变量不能同名。
c) 同一模块中所有在过程之外用Dim定义的变量为全局变量。 d) 不同模块中定义的变量名字可以相同。 答案:d
9.当鼠标在窗体上移动时,会发生( )事件。 a) MouseDown b) MouseUp c) MouseMove d) DragDown 答案:c
10.当某个对象具有焦点时,在键盘上按下某一键时就会发生( )事件。 a)KeyPress b)KeyUp c)KeyDown d)DragDown 答案:a、c
11.当用户( )时,会引发焦点所在对象的KeyPress事件。
a) 在键盘上按下有ASC码的键 b) 释放键盘上有ASC码的键 c) 单击鼠标左键 d) 单击鼠标右键 答案:a
12.当用户在键盘上按下一个有ASC码的键时会发生( )事件。 a) KeyPress和 KeyDown b) KeyPress 和KeyUp c) KeyDown和 KeyUp d) KeyPress和 KeyMove 答案:a
7.3 解答题
1.过程的主要作用是什么?VB有什么类型的自定义过程?试举例说明。 答:过程的主要作用有两个:一是任务划分。即把一个复杂的任务划分为若干个小任务,每个小任务可以用过程来完成,从而使任务更易于理解,易于实现和维护;二是代码重用。各种复杂的任务常常包含一些完全相同或非常相近的小任务。把这些小任务独立地编成公用的过程,由各个任务调用,这样的做法可以避免重复的编程劳动。 在VB6中,有下列4种类型的自定义过程:
.. ..
. .
1)以关键字Sub开头的子过程; 2)以关键字Function开头的函数过程; 3)以关键字Property开头的属性过程; 4)以关键字Event开头的事件过程;
在教材中只介绍子过程和函数过程两种自定义过程。 例如,Private Sub fact(Byval n As Integer,Byref fac As Long)
Dim t As Long,i As Integer t=1
For i=1 To n
t=t*i Next i fac=t
End Sub
是一个求n的阶乘子过程。
又如,Private Function max(ByVal x As Integer, ByVal y As Integer, ByVal z As Integer)
If x > y Then max = x Else max = y If z > max Then max = z
End Function
是一个求三个数x、y和z最大值的函数过程。
2.传值参数和传址参数的主要作用是什么?在调用过程进行参数传递时,它们之间有什么区别? 答:传值参数的主要作用是把需处理的原始数据传送给被调用过程的形式参数。传址参数的主要作用是把调用过程后的结果传递回给调用程序。
对传值参数来说,在调用过程进行参数传递时,是把实际参数的值直接传送给相应的传值参数。值传送完之后,传值参数与相应的实际参数之间毫无任何联系。即在调用过程时,传值参数的改变不会引起相应实际参数的改变。
对传址参数来说,在调用过程进行参数传递时,是把实际参数的地址传送给相应的传址参数。调用过程时,对传址参数的任何操作都是对相应的实际参数进行。即在调用过程时,传址参数的改变会引起相应实际参数的改变。
7.4 阅读程序,并写出程序的运行结果。 1.Private Sub p(ByVal i As Integer)
Dim j%, k%
For j = 0 To 7 - i Print \ Next j
For k = 0 To 2 * i - 1 Print \
Next k
Print End Sub
Private sub command1_Click()
.. ..
. .
Dim i%
For i = 1 To 2 P(i) Next i
For i = 3 To 1 Step -1 P(i)
Next i End Sub
答案: ** **** ****** **** **
2. Private Sub Command1_Click()
Dim m%
m = max(35, -21, 480)
m = max(max(m, 75, 100), 380, 28) Print \End Sub
Private Function max(ByVal x As Integer, ByVal y As Integer, ByVal z As Integer) If x > y Then max = x Else max = y If z > max Then max = z
End Function
答案: max=480
3.Private Sub Command1_Click()
Dim a As Integer, b As Integer, c As Integer
Call s(10, 5, a) Call s(7, a, b) Call s(a, b, c)
Print \
End Sub
Private Sub s(x As Integer, y As Integer, z As Integer)
z = y – x
End Sub
答案: a=-5 b=-12 c=-7 4. Private Sub Command1_Click()
Dim i% Const n = 10
Dim a(1 To n) As Integer Randomize For i = 1 To n
a(i) = Int(Rnd * 100 + 1) Print a(i),
If i Mod 4 = 0 Then Print
.. ..
. .
Next i Print Call s(a, n)
End Sub
Private Sub s(a() As Integer, ByVal n As Integer)
Dim i%, k% For i = 1 To n
If a(i) Mod 3 = 2 Then If k Mod 4 = 0 Then Print Print a(i), k = k + 1 End If Next i End Sub
答案:输出10个1~100之间的随机整数,并把其中能被3除余2的数输出。 5. Public x As Integer
Private Sub Command1_Click() x = 10 : Print x Call s1 : Print x
Call s2 : Print x End Sub
Private Sub s1() x = x + 20 : Print x End Sub
Private Sub s2() Dim x As Integer x = x + 20 : Print x End Sub
答案: 10 30 30 20 30
6. Private Sub Command1_Click()
s3 (1): s3 (1): s3 (1) End Sub
Private Sub s3(ByVal a As Integer) Dim x As Integer Static y As Integer x = x + a: y = y + a Print \
End Sub
答案: x=1 y=1 x=1 y=2
.. ..