VisualBasic编程与应用作业3答案
一、填空题1. 返回相应的结果 2. 没有返回值 按名称 3. 按名称 4. 以该函数名
5.窗体模块 标准模块 类模块 6.Click 7.顶级菜单项目
8.Sub过程的过程名不能返回值,而Function过程能通过过程名返回值 9.添加过程
10.标准模块的通用声明段
二、判断正确与错误(正确标∨,错误标 x )并写出正确答案。
1.( x 子过程能接收参数。) 2.(x函数过程能接收参数。) 3.(∨) 4.(∨)
5.( xCall MyPro(A、B) MyProc( A、B) 6.(∨)
7.( x 标准模块是程序中的一个独立容器,包含全局变量、Function(函数)过程和Sub过程。)
三、问答题
1.什么是工程?
解答:工程是构成应用程序文件的集合。工程文件是与工程相关联的所有文件和对象以及所设置的环境信息的一个简单的列表,所有文件和对象也可以被其它的工程所共享。
2.什么是过程?
解答:一个应用程序是由若干个模块组成的,而每个模块又是由若干个更小的代码片段组成,将组成这些模块的代码片段称为过程。通过过程,可以将整个程序按功能进行分块,每个过程用来完成一项特定的功能。
3.选中一个窗体,启动菜单编辑器的方法有哪三种?
解答:(1)使用菜单“工具”/(菜单编辑器)
(2)使用工具栏按钮工具栏快捷键;(3)键盘快捷键CTRL+E
4.什么是动态菜单?
解答:动态菜单,就是菜单中列出了最近使用过的文件名,这部分内容是随着应用程序的运行而不断改变着的,在运行时使菜单可以增长。
5.已知弹出菜单的名是aa,填补弹出菜单的代码。
解答:Private Sub Form_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single)
’在窗体上按下鼠标。
If Btton = 2 Then ′如果是右键。
PopupMenu aa ′弹出菜单。
End If
End Sub
6.现使用菜单编辑器设计弹出菜单。菜单第一项(使顶级菜单项目)的Caption为“弹出菜单”,Name:“aa”,Visible没有选中,填补弹出菜单的代码。
解答:Private Sub Form_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single)
′在窗体上按下鼠标。
If Btton = 2 Then ′如果是右键。
PopupMenu aa ′弹出菜单。
End If
End Sub
四、编程题
1.编写一个过程,以整型数作为形参,当该参数为奇数时输出False,而当该参数为偶数时输出True。
解答:通用过程如下:
Function NumOE(ByVal n As Integer)As Boolean
If n Mod 2 = 0 then
NumOE= True
Else
NumOE = False
End If
End Function
这是一个Function 过程,该过程有一个整型形参,其返回值为 Boolean 类型。当参数值为奇数时,过程返回False,否则返回True。在下面的事件过程中调用该过程:
Private Sub Form_Click()
Dim RetNum As Boolean
num = InputBox("请输入一个整数")
num = Val(num)
RetNum = NumOE(num)
If RetNum = True Then
a$ = "偶数"
Else
VisualBasic编程与应用作业3答案
a$ = "奇数"End If
Print num; "‐‐‐‐ "; "是一个"; a$
End Sub
2.分析下面程序运行的结果。
Private Function Multiply (n as Integer) As Integer
Multiply=1
do While n>0
Multiply=Multiply*n
n=n-1
Loop
End Function
Private Sub Form_Click()
Dim Sum As Integer, I As Integer
For I=5 to 1 Step-1
Sum=Sum+Multiply(I)
Next
Print "Sum=";Sum,
End Sub
解答:
本题是计算: 5!
所以运行结果:
Sum=120
本程序只计算了5!=120。因为,形参n 是按地址传递的,在第一次调用Multiply 函数后n 的值为0,由于实参与形参共享地址单元,实参i 的值也是0。当执行Sum=Sum+Multiply(I) 语句后,Sum 的值是120,执行Next语句后在判断语句For I=5 to 1 Step -1 时就退出 For 循环。因此循环只执行了一次,求了5!的值。
3.分析下面程序运行的结果。
Private Function Multiply (ByVal n as Integer) As Integer
Multiply=1
do While n>0
Multiply=Multiply*n
n=n-1
Loop
End Function
Private Sub Form_Click()
Dim Sum As Integer, I As Integer
For I=5 to 1 Step-1
Sum=Sum+Multiply(I)
Next
Print "Sum=";Sum,
End Sub
解答:
运行结果:
Sum=153
4.用函数调用的方法计算∑n
解答:
Private Static Function Fac(n As Integer) As Integer
Dim f As Integer
f = f + n
Fac = f
End Function
Private Sub Form_Click()
Dim I As Integer
For I = 1 To 5
Print "∑"; I & "=" & Fac(I)
Next I
End Sub
程序分析:
●过程定义语句Private Static Function Fac(n As Integer) 是为了使过程中所有的局部变量为静态变量。在过程头前加上 Static 关键字时,无论过程中的变量是用 Static 、Dim 或Private 声明的还是隐式声明的,都会变成静态变量。
●被调函数Fac 是计算∑n 的值,局部变量f 为静态变量,在每次调用Fac 函数结束时变量 f 的值保留为∑i,再与下次的I+1 相加。
●如果不用Static 声明变量 f ,则以前的和不会保留,每次调用时函数中 f 的初值为0。
VisualBasic编程与应用作业3答案
如果在模块的声明段定义 f,则 f 成为模块级变量,也会收到同样的效果。但是,由于其它过程也可以访问和改变模块级变量的值,所以运算结果也许不可靠,代码将难于维护。
页:
[1]