一、单项选择题:(共20题,20分)
1、
若要在调用过程后通过参数返回两个结果,下面过程定义语句正确的是( )。
|
|
Sub p(a,b) |
|
Sub p (ByVal a,ByVal b) |
|
Sub p(a,ByVal b) |
|
Sub p(ByVal a,b) |
|
2、
下面过程运行后显示的结果是( )。 Public Sub F1(n%, ByVal m%) n=n Mod 10 m=m\10 End Sub Private Sub Command1_Click() Dim x%,y% X=12: y=34 Call F1(x,y) Print x,y End Sub
|
|
2 34 |
|
12 34 |
|
2 3 |
|
12 3 |
|
3、
|
|
3 4 7 5 6 |
|
3 5 7 4 5 |
|
2 3 4 4 5 |
|
4 5 6 7 8 |
|
4、
下面子过程语句说明合法的是( )。
|
|
Sub f1(ByVal n%()) |
|
Sub f1(n%) As Integer |
|
Function f1%(f1%) |
|
Function f1(ByVal n%) |
|
5、
下面过程定义中正确的语句是( )。
|
|
Sub p1(n) As Integer |
|
Sub p1(ByVal a()) |
|
Function p1(p1) |
|
Function p1(ByVal x) |
|
6、
关于Function过程与Sub过程两者的异同,下列叙述错误的是( )。
|
|
Function过程与Sub过程都有各自的变量声明和各自的过程体 |
|
Function过程与Sub过程都必须有形参 |
|
Function过程定义中必须为过程名赋值,而Sub过程不能为过程名赋值 |
|
Function过程结果要返回一个函数值,Sub过程可以没有数值返回 |
|
7、
单击命令按钮时,下列程序代码的执行结果是( )。 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
Private Sub Command1_Click() Dim a As Integer,b As Integer,c As Integer a=2:b=3:c=4 print secproc(c,b,a)
|
|
21 |
|
19 |
|
17 |
|
34 |
|
8、
Dim a%, b%, c% Public Sub p1(x%, y%) Dim c% x = 2 * x: y = y + 2: c = x + y End Sub Public Sub p2(x%, ByVal y%) Dim c% x = 2 * x: y = y + 2: c = x + y End Sub Private Sub Command1_Click() a = 3: b = 4: c = 6 Call p1(a, b) Print "a="; a; "b="; b; "c="; c Call p2(a, b) Print "a="; a; "b="; b; "c="; c End Sub
|
|
a=3 b=4 c=6 a=6 b=6 c=10 |
|
a=6 b=6 c=6 a=3 b=4 c=6 |
|
a=6 b=6 c=6 a=12 b=6 c=6 |
|
a=3 b=4 c=6 a=12 b=6 c=6 |
|
9、
设有如下说明: Public Sub f1(n%) … n=3*n+4 … End SubPrivate Sub Command1_Click() Dim n%,m% n=3m=4 … ‘调用f1语句… End Sub 则在Command1_Click事件中有效的调用语句是( )。
|
|
f1 n+m |
|
f1 m |
|
f1 5 |
|
f1 m+5 |
|
10、
如下程序,运行的结果是( )。 Private Sub Command1_Click() Print p1(3, 7) End SubPublic Function p1!(x!, n%) If n = 0 Then p1 = 1 Else If n Mod 2 = 1 Then p1 = x * p1(x, n \ 2) Else p1 = p1(x, n \ 2) \ x End If End If End Function
|
|
27 |
|
7 |
|
14 |
|
18 |
|
11、
单击命令按钮,执行下列程序,结果是( )。 Sub Sum(n As Integer, s As Integer) Dim i As Integer for i = 1 To n s = s + i next i End SubPrivate Sub Command1_Click() Dim i As Integer, s As Integer, sm As Integer for i = 1 To 3 Call sum(i, s) sm = sm + s next i print "sum="; sm End Sub
|
|
sum=15 |
|
sum=12 |
|
sum=10 |
|
sum=14 |
|
12、
阅读程序: Function F(a As Integer) b = 0 Static c b = b + 1 c = c + 1 F = a + b + c End FunctionPrivate Sub Command1_Click() Dim a As Integer a = 2 for i = 1 To 3 Print F(a) next i End Sub
|
|
4 4 4 |
|
4 5 6 |
|
4 6 8 |
|
4 7 9 |
|
13、
|
|
2 4 6 8 |
|
5 6 7 8 |
|
10 12 14 16 |
|
出错 |
|
14、
|
|
8 17 |
|
8 16 |
|
8 20 |
|
8 8 |
|
15、
若定义过程的参数传递方式为传值方式,用关键字( )。
|
|
ByVal |
|
ByAdr |
|
Val |
|
Dim |
|
16、
参数是传值时,相应的实参不可以是( )。
|
|
变量 |
|
常量 |
|
表达式 |
|
数组 |
|
17、
|
|
24 |
|
234 |
|
12 |
|
程序错误,无结果输出 |
|
18、
在窗体上画一个命令按钮,然后编写如下程序: Function M(x As Integer, y As Integer) As Integer m= IIf(x > y, x, y) End FunctionPrivate Sub Command1_Click() Dim a As Integer, b As Integer a = 1 b = 2 print M(a, b) End Sub 程序运行后,单击命令按钮,输出结果为( )。
|
|
1 |
|
3 |
|
2 |
|
4 |
|
19、
有如下的程序: Private Sub Form_Click() Dim x As Integer, y As Integer a = 7 b = 3 Call test(6, a + 1, b + 1) print "主程序", 6, a, b End SubSub test(x As Integer, y As Integer, z As Integer) print "子程序", x, y, z x = 2 y = 4 z = 9 End ub 当运行程序后,显示的结果是( )。
|
|
子程序6 4 3 主程序6 8 4 |
|
主程序6 4 3 子程序6 8 4 |
|
主程序6 8 4 子程序6 4 3 |
|
子程序6 8 4 主程序6 7 3 |
|
20、
窗体上有Text1、Text2两个文本框及一个命令按钮Command1,编写下列程序: Dim y As Integer Private Sub Command1_Click() Dim x As Integer x = 2 Text1.Text = P2(P1(x), y) Text2.Text = P1(x) End SubPrivate Function P1(x As Integer) As Integer x = x + y: y = x + y p1 = x + y End Function
Private Function P2(x As Integer, y As Integer) As Integer p2 = 2 * x + y End
|
|
2 4 2 4 |
|
2 4 4 8 |
|
10 10 58 58 |
|
4 4 8 8 |
|
|
二、填空题:(共12题,24分)
1、
函数过程定义中至少有一个赋值语句把表达式的值赋给 _________。
|
|
2、
在VB中,过程定义中有两种传递形式的参数:一种是_________ ,称为传值调用;另一种___________,称为传址调用。
|
|
3、
下列程序的运行结果是 。 Private Sub Command1_Click() Dim a As Integer, b As Integer, c As Integer Call s(8, 6, a) Call s(7, a, b) Call s(a, b, c) print "a="; a, "b="; b, "c="; c End SubPrivate Sub s(x As Integer, y As Integer, z As Integer) z = y - x End Sub
|
|
4、
下列程序运行后,单击命令按钮,则在文本框中显示的内容是 。 Public Sub fun(a(), ByVal x As Integer) for i = 1 To 5 x = x + a(i) next End SubPrivate Sub Command1_Click() Dim arr(5) As Variant for i = 1 To 5 arr(i) = i next n = 12 Call fun(arr(), n) Text1.text = n End Sub
|
|
5、
以下程序用来计算 1至指定数(由调用程序传入)之间所有奇数的和,将程序补充完整。 Function mult_____________________ Dim Sum As Integer Sum = 0 Dim i As Integer For i = 1 To__________ If i Mod 2________Then_sum=____________ Next i mult = Sum End Function 若要计算并输出 100之内所有奇数的和,则正确的调用语句是_____________。
|
|
6、
|
|
7、
求s=4!+5!+6!+7! Private Sub fact(n,f)
______________ for i=1 to n
_______________ next i End Sub Private Sub Form_Click() for i=4 to 7 ______________________ sum=sum+f next i print “sum=”;sum End Sub
|
|
8、
|
|
9、
求m,n的最大公约数和最小公倍数。 Sub HCF(ByVal m,ByVal n,h)
__________________________ Do While r<>0 m=n n=r
__________________________ Loop h=n End Sub Sub LCM(m,n,h) H=m*n/h End Sub Private Sub Form_Click() m=InputBox(“m=”) n= InputBox (“n=”) __________________________ print m;”和”;n;”的最大公约数=”;h
__________________________ print m;”和”;n;”的最小公倍数=”;h End Sub
|
|
10、
每一个用标识符定义的变量、常量、过程都有一个有效范围,这个范围称为标识符的 __________ 。
|
|
11、
指定过程中变量的值在退出过程后仍保留其值,_____________定义变量时需用关键字 。
|
|
12、
若模块中以关键字Public定义子过程,则在___________中都可以调用该过程。
|
|
|