第六章 过程

课程名称:VisualBasic程序设计 总分:44 答题时长:20分钟 出卷人:徐珊

、单项选择题:(共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 Sub

Private 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 Sub

Public 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 Sub

Private 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 Function

Private 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 Function

Private 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 Sub

Sub 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 Sub

Private 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 Sub

Private 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 Sub

Private 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定义子过程,则在___________中都可以调用该过程。