文档库 最新最全的文档下载
当前位置:文档库 › vb课后练习答案习题解答 (6)

vb课后练习答案习题解答 (6)

vb课后练习答案习题解答 (6)
vb课后练习答案习题解答 (6)

第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()

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 "max="; m

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 "a="; a, "b="; b, "c="; c

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

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 "x="; x, "y="; y

End Sub

答案: x=1 y=1

x=1 y=2

x=1 y=3 7.5 编程题

3.??????

?>+-<=++=y

x y f x f y x f y

x y f x f y x f y x g )

()()()()()(),(已知,其中f(t )= (1+e

t

-)/(1+e t

),求g (2.5,

3.4),g (1.7,2.5)和g (3.8,2.9)的值。

解答:

(1)界面设计和属性设置

在窗体上建立三个标签、三个文本框和两个命令按钮。窗体和窗体上控件的主要属性设置如表3.7.3所示。

Label3.Caption = "g(" & Str(x) & "," & Str(y) & ")=" Text3.Text = Str(g(x, y)) End Sub

Private Sub Command2_Click() End End Sub

Private Function f(ByVal t!) As Single

f = (1 + Exp(-t)) / (1 + Exp(t))

End Function

Private Function g(ByVal x!, ByVal y!) As Single

If x <= y Then

g = f(x + y) / (f(x) + f(y))

Else

g = f(x - y) / (f(x) + f(y))

End If

End Function

Private Sub Text1_Click()

Text1.Text = "": Text2.Text = "": Text3.Text = ""

Label3.Caption = ""

End Sub

(3)运行情况

运行程序后,屏幕出现用户界面。把鼠标移到Text1文本框并单击,然后输入x(例如,2.5)。再把鼠标移到Text2文本框并单击,然后输入y(例如,3.4)。x和y输入后,单击标题为“计算”的命令按钮,系统执行相应的Click事件过程。执行结果如图3.7.3所示。求g(1.7,2.5)和g(3.8,2.9)的操作方法类似。单击标题为“结束”的命令按钮,结束程序的执行。

图3.7.3 执行结果

4.给定三组已按升序排列好的整型数据,使用过程编写程序把它们合并为一组仍能按升序排列的数据。

解答:

(1)界面设计和属性设置

在窗体上建立四个标签、四个文本框和两个命令按钮。窗体和窗体上控件的主要属性设置如表3.7.4所示。

表3.7.4 属性设置

For i = 1 To 8 '显示数组b的元素值 Text2.Text = Text2.Text & Str(b(i))

Next i

c = Array(1, 5, 5, 6, 8)

For i = 1 To 5 '显示数组c的元素值 Text3.Text = Text3.Text & Str(c(i))

Next i

End Sub

Private Sub Command1_Click()

Dim i%, m%, n%, p%

m = UBound(a)

n = UBound(b)

p = UBound(c)

Dim d()

ReDim d(m + n)

Call gsort(a, b, d)

Dim e()

ReDim e(m + n + p)

Call gsort(c, d, e)

For i = 1 To m + n + p '显示数组e的元素值

Text4.Text = Text4.Text & Str(e(i))

Next i

End Sub

Private Sub gsort(x As Variant, y As Variant, z As Variant)

Dim i%, j%, k%, n1%, n2%

i = 1: j = 1: k = 1

n1 = UBound(x): n2 = UBound(y)

While i <= n1 And j <= n2

If x(i) > y(j) Then

z(k) = y(j): k = k + 1: j = j + 1 '比较x和y中的元素,把较大的元素移到 Else 'z中,直到其中一个数组搬空为止

z(k) = x(i): k = k + 1: i = i + 1

End If

Wend

While i <= n1

z(k) = x(i): i = i + 1: k = k + 1 '把x中剩余的元素搬到z中

Wend

While j <= n2

z(k) = y(j): j = j + 1: k = k + 1 '把y中剩余的元素搬到z中

Wend

End Sub

Private Sub Command2_Click()

End

End Sub

(3)运行情况

运行程序后,屏幕出现用户界面,并把需合并的三组数据分别在三个文本框中显示出来。单击标题为“合并”的命令按钮,系统执行相应的Click事件过程。执行结果如图3.7.4所示。单击标题为“结束”的命令按钮,结束程序的执行。

图3.7.4 执行结果

相关文档