itgle.com

在窗体中添加一个命令按钮,编写如下程序: Private Sub Sub1(p,m,n) p=p+1:m=m+1:n=n+1 Print "sub1:";p;m;n End Sub Private Sub Command1_Click() a1=1:b=2:c1=3 Call Sub1(a,b1+3,c1) Print"Main:";a1;b1;c1 End Sub 程序运行后,输出结果为A.Sub: 2 6 4 Main: 2 6 4B.Sub: 2 6 4 Main: 2 6 4C.Sub: 2 6

题目

在窗体中添加一个命令按钮,编写如下程序: Private Sub Sub1(p,m,n) p=p+1:m=m+1:n=n+1 Print "sub1:";p;m;n End Sub Private Sub Command1_Click() a1=1:b=2:c1=3 Call Sub1(a,b1+3,c1) Print"Main:";a1;b1;c1 End Sub 程序运行后,输出结果为

A.Sub: 2 6 4 Main: 2 6 4

B.Sub: 2 6 4 Main: 2 6 4

C.Sub: 2 6 4 Main: 1 2 3

D.Sub: 2 6 4 Main: 2 2 3


相似考题
更多“在窗体中添加一个命令按钮,编写如下程序:Private Sub Sub1(p,m,n)p=p+1:m=m+1:n=n+1Print "sub1: ”相关问题
  • 第1题:

    运行以下程序后,输出结果为_____________。 Private Sub Command1_Click() a=1:b=2:c=3 Call test(a,b+3,(c)) Print "main:";a;b;c End Sub Private Function test(p,m,n) p=p+1:m=m+1:n=n+1 Print "sub:";p;m;n End Function

    :A. sub:2 6 4 main:1 2 3

    B. sub:2 6 4 main:2 2 3

    C. sub:2 6 4 main:2 6 4

    D. sub:2 6 4 main:1 6 4


    参考答案:B

  • 第2题:

    在窗体上画一个命令按钮,然后编写如下事件过程:Private Sub Command1_Click( ) Dim m As Integer,n As Integer,p As Integer m=3:n=5:p=O Call Y(m,n,p) Print Str(p)End SubSub Y(ByVal i As Integer,ByVal j As Integer,k As Integer) k=i + jEnd Sub程序运行后,如果单击命令按钮,则在窗体上显示的内容是

    A.4

    B.6

    C.8

    D.10


    正确答案:C
    解析:此程序考查了函数的调用,函数过程有3个形参,功能是将第一个和第二个形参的和赋给第三个形参,其中前两个形参是按值传递,不会影响实参的数值,即在调用函数过程的过程中,不变化实参的数值;而第三个形参是按址传递,传递的是实参的地址,这样实参会随着过程中形参的变化而变化,即改变实参的数值。在主调过程中定义了三个整型变量,分别赋值3、5、0,调用过程后m、n的数值仍然是3、5,而p的值不再是0而变为8,即m、n的和,这也是被调函数的作用。

  • 第3题:

    在窗体上画一个名称为Command1的命令按钮,然后编写如下事件过程: Private Sub Command1 Click() a = 2 For i=1 To 3 Call funl(i,A)Next i x = i + 2 Print x;a End Sub Private Sub fun1(n,m) m=m + n * 2 n = n + m End Sub 程序运行后,单击命令按钮,则窗体上显示的内容是

    A.1 5

    B.4 5

    C.8 4

    D.3 4


    正确答案:C
    解析:在本题中,由于两个形参都没有指明用哪种方式进行参数传送,按VisualBasic规定,在默认的情况下,变量的数据传送按传址方式进行。当第一次调用fun1过程时,循环变量i将1传给形参n,变量a将2传给形参m。经计算后,变量m和n值分别为4和5。返回被调过程后,变量i和a的值分别为5和4。经过“Nexti”语句后,循环变量i加了步长得6,大于终值3,退出循环,所以变量x=6+2=8。值得注意的是:在函数的调用过程中,不要使用循环变量作为实参,否则会产生意想不到的结果。

  • 第4题:

    在窗体上画一个命令按钮,然后编写如下事件过程: Private Sub Command1_Click() Dim in As Integer,n As Integer,p As Integer m=3:n=5:p=0 Call Y(m,n,p) Print Str(p) End Sub Sub Y(ByVal i As Integer,ByVal j As Integer,k As Integer) k=i+j End Sub 程序运行后,如果单击命令按钮,则在窗体上显示的内容是

    A.4

    B.6

    C.8

    D.10


    正确答案:C
    解析:[命题目的] 考查考生对调用通用过程中参数传递方式的掌握情况。
      [解题要点] 此程序考查了函数的调用,函数过程有3个形参,功能是将第1个与第2个形参的和赋给第3个形参,其中前两个形参是按值传递,不会影响实参的数值,即在调用函数过程的过程中,不改变实参的数值;而第3个形参是按址传递,传递的是实参的地址,这样实参会随着过程中形参的变化而变化,即改变实参的数值。在主调过程中定义了3个整型变量,分别赋值3、5、0,调用过程后m、n的数值仍然是3、5,而p的值不再是0,变为8,即m、n的和,这也是被调函数的作用。
      [错解分析] 参数按传值方式传递时,不改变实参中的值;按传地址的方式传递时,实参和形参指向同一个存储地址,所以实参指向的内容被改变。
      [考点链接] 参数传递方式的概念和应用。

  • 第5题:

    在窗体上添加一个名称为Command1的命令按钮,然后编写如下事件代码: Private Sub Command1_Click( ) Dim a(10,10) For m=2 To 4 For n=4 TO 5 a(m,n)m*n Next n Next m MsgBox a(2,4)+a(3,5)+a(4,5) End Sub 打开窗体运行后,单击命令按钮,则消息框的输出结果是( )。

    A.23

    B.33

    C.43

    D.53


    正确答案:C
    解析:本题考查VBA中二维数组的知识。本题中的数组a是一个二维数组,在一个二重循环中为这个数组部分进行了赋值。本题中只需要注意最后使用到的二维数组的元素值,显然其值为两个下标之积。

  • 第6题:

    假定有如下的Sub过程:

    Sub Sub1(x As Single,y As single)

    t=x

    x=t/y

    y=t Mod y

    End Sub

    在窗体上画一个命令按钮,然后编写如下事件过程:

    Private Sub Command1_click()

    Dim a As Single

    Dim b As Single

    a=5

    b=4

    Sub1 a,b

    Print a;b

    End Sub

    程序运行后,单击命令按钮,输出结果为

    A.

    B.

    C.

    D.


    正确答案:D
    解析:在调用通用过程时要注意的是参数的传递方式。本题中两个变量都是以传值方式传递。根据传值方式的定义不难计算出本题结果。

  • 第7题:

    在窗体上画一个名称为Commandl的命令按钮,然后编写如下事件过程: Private Sub Command1_Click() For n = 1 To 20 If n Mod 3 <> 0 Then m = m + n \ 3 Next n print n End Sub 程序运行后,如果单击命令按钮,则窗体上显示的内容是

    A.15

    B.18

    C.21

    D.24


    正确答案:C
    解析:本题考查For循环控制语句,做好此题的关键是掌握For循环语句的执行过程。For循环首先把“初值”赋给循环变量,接着检查循环变量的值是否超过终值,如果超过就停止执行循环体,跳出循环,执行Next后面的语句;否则执行一次循环体,然后把“循环变量+步长”的值赋给循环变量,重复上述过程。据此,如果For循环的终值等于初值,For循环也会执行一次循环。本题需要输出执行完Forn循环后n值,应为21。根据前述,当执行完n=20的循环时,n被赋值21,然后再取检验它是否超过了终值。故正确答案为C。

  • 第8题:

    假定有如下的Sub过程:Sub Sub1 (x As Single, y As Single) t=x x = t/y y = t Mod yEnd Sub 在窗体上画一个命令按钮,然后编写如下事件过程:Private Sub Command1_ Click() Dim a As Single Dim b As Single a = 5 b = 4 Sub1 a, b Print a; b End Sub 程序运行后,单击命令按钮,输出结果为______。

    A.5 4

    B.1 1

    C.1.2 5.4

    D.1.25 1


    正确答案:D
    解析:本题重点是在子过程的调用过程中,虚实参数的传送问题,变量a和b按址传送,返回子过程的x和y值。

  • 第9题:

    当发生Form_Click事件时,下列程序的输出结果是( )。 Private m As Integer,n As Integer Private Sub Form_Click() Dim k As Integer,p As Integer k=6:p=60 Call sub1(k,p) Print m,n,m,k,p Call sub1(k,p) Print m,n,k,p End Sub Private Sub Form_Load() m=7 n=70 End Sub Public Sub sub1(x As Integer,ByVal y As Integer) Dim m As Integer n=n+5 m=n+x+y x=x+y y=x+y End Sub

    A.7 75 66 60 7 80 126 60

    B.7 75 66 60 7 75 126 60

    C.7 75 66 60 7 80 66 60

    D.7 75 66 60 7 75 66 60


    正确答案:A
    解析:本题定义了两个窗体级变量m和n,并在窗体的Load事件中给窗体级变量m和n分别赋值7和70。当发生Form_Click事件时,首先进行第一次sub1过程的调用,把k的值6按地址传递给形参x,把p的值60按值传递给形参y。在sub1中定义了一个局部变量m,因此在该函数中使用的m是局部变量而非窗体级变量。执行下面的4条赋值语句后,窗体级变量n的值为75,局部变量m的值为142,形参x的值为66,形参y的值为126。函数调用返回后,由于p是按值传递,所以它的值没有变化,k是按地址传递,所以它的值变为邱,输出m、n、k和p的值分别是7、75、66和60。同理,分析第二次sub1过程调用,可知过程调用返回后,变量m、n、k和p的值分别是7、80、126、60。

  • 第10题:

    在窗体中添加一个名称为Commandl的命令按钮,然后编写如下事件代码:Private Sub Commandl Click( ) MsgBox f(24,18)End Sub Public Function f(m As Integer,n As Integer)As"integerDo While m<>n Do While m>n m=m-n Loop Do While m<n n=n-m Loop Loop f=m End Function 窗体打开运行后,单击命令按钮,则消息框的输出结果是( )。

    A.2

    B.4

    C.6

    D.8


    正确答案:C
    C。【解析】本题第一个内层循环,m的值为24-18=6,n的值为18;第二个内层循环l,m的值为6,n的值为18-6=12;第二个内层循环2,In的值为6,n的值为12-6=6。

  • 第11题:

    在窗体上画一个名称为Commandl的命令按钮,然后编写如下事件过程: Private Sub Command1_Click() Dim x As Integer,y As Integer x = 41: y = 54 Call sub1(x,y) x = x + 1 Print x; y End Sub Private Sub sub1(n As Integer, ByVal m As Integer) n=n Mod 10 m=m\10 End Sub 程序运行后,单击命令按钮,则窗体上显示的内容是

    A.41 54

    B.2 54

    C.1 3

    D.42 3


    正确答案:B
    解析:在Function((参数表列))过程中,“参数表列”指明了调用时传送给过程的参数类型和个数,每个参数的格式为:[ByVal][ByRef]变量名[()][As数据类型]其中系统默认为ByRef,它指明参数传送是以传地址进行的,实际参数变量的值会由于过程中对形参的操作而改变。而ByVal则不同,参数传送,是以传值传送的,实际参数变量的值不再由于过程中对形参的操作而改变,本题目中过程sub1的参数n是传地址引用,而参数m是传值引用,因此x的值改变,x=21\10+1=2;而y值不改变,仍为54。答案为选项B。

  • 第12题:

    在窗体中添加一个名称为Commandl的命令按钮,然后编写如下事件代码:

    Private Sub Command1_Click()

    Dim x As Integer,y As Integer

    x=12:y=32

    Call p(x,y)

    MsgBox x*y

    End Sub

    Public Sub p(n As Integer,By Val m As Integer)

    n=n Mod 10

    m=m Mod 10

    End Sub

    窗体打开运行后,单击命令按钮,则消息框的输出结果为【 】。


    正确答案:64
    64 解析:子过程p有两个参数m和n,参数m,n是整型,而通过“ByVal”可知,参数m是按值传递的参数。由于在过程定义时未做参数说明的情况下,默认为传址调用,所以参数n是按址传递。(按址传递的过程调用是将相应位置实参的地址传送给形参处理,而被调用过程内部对形参的任何操作引起的形参值的变化又会反向影响实参的值。在这个过程中,数据的传递具有双向性。)在命令按钮单击事件过程中,程序通过两个实参x,y为形参m,n赋值,“n=n Mod 10”表示12与10取余,结果为2,由于n是传址调用,所以返回实参的结果:x=2,而形式参数m因为被“ByVal”修饰,所以过程调用只是将实参y的值“单向”传送给形参 m处理,而被调用过程内部对形参m的取余操作引起的形参值的变化均不会反馈、影响实参y的值,也就是说实参y=32,通过语句“MsgBox x*y”,可以得出:x*y=2*32=64,也就是窗体打开运行后,单击命令按钮,则消息框的输出结果为64。

  • 第13题:

    在窗体中添加一个名称为Com1的命令按钮,然后编写如下程序:

    Private Sub s(ByVal p As Integer)

    p=p*2

    End Sub

    Private Sub Com1_Click()

    Dim i As Integer

    i=3

    Call s(i)

    If i>4 Then i=i^2

    End sub

    窗体打开运行后,单击命令按钮,则消息框的输出结果为( )。


    正确答案:3
    3 解析: 本题考查VBA程序的知识。在VBA的过程调用时,参数有两种传递方式:传址传递和传值传递。如果在过程声明时形参用ByVal声明,说明此参数为传值调用,此时形参的变化不会返回到实参;若用ByRef声明,说明此参数为传址调用,此时形参的变化将会返回到实参:没有说明传递类型,则默认为传址传递。此题中形参p被说明为ByVal传值形式的整型量,当运行Com1_Click()过程时调用s()函数,实参i传送其值给形参p,p发生变化p=p*2=3*2=6。但因为使用的是ByVal传值传递,所以实参i的值不发生变化,if语句中的判断条件为假,所以会直接执行MsgBox i语句后输出3。

  • 第14题:

    在窗体上画一个命令按钮,然后编写如下事件过程: Private Sub Commandl_Click() Dim m As Integer, n As Integer, p As Integer m=3: n=5: p=0 Call Y(m, n, p) Print Str(p) End Sub Sub Y(ByVal i As Integer, ByVal j As Integer, k As Integer) k=i+j End Sub 程序运行后,如果单击命令按钮,则在窗体上显示的内容是( )

    A.4

    B.6

    C.8

    D.10


    正确答案:C
    解析:此程序考查了函数的调用,函数过程有3个形参,功能是将第一个和第二个形参的和赋给第三个形参,其中前两个形参是按值传递,不会影响实参的数值,即在调用函数过程的过程中,不变化实参的数值;而第三个形参是按址传递,传递的是实参的地址,这样实参会随着过程中形参的变化而变化,即改变实参的数值。在主调过程中定义了三个整型变量,分别赋值3、5、0,调用过程后 m,n的数值仍然是3、5,而p的值不再是0而变为8即m、n的和,这也是被调函数的作用。

  • 第15题:

    在窗体中添加一个命令按钮,编写如下程序: Private Sub Subl(p,m,n) p=p+1:m=m+1:n=n+1 Print"subl:";p;m;n End Sub Private Sub Command1_Click() al=1:b=2:c1=3 Call Subl(a,b1+3,c1) Print"Main:";a1;b1;c1 End Sub 程序运行后,输出结果为

    A.Sub:2 6 4 Main:2 6 4

    B.Sub:2 6 4 Main:2 6 4

    C.Sub:2 6 4 Main:1 2 3

    D.Sub:2 6 4 Main:2 2 3


    正确答案:D
    解析:考查考生对参数传递的掌握情况。
      [解题要点] 这是在实现子过程被调用时参数虚实结合的问题。a1为变量按址传送,b1+3和c1为表达式按值传送。
      [错解分析] 参数的传值方式和传址方式的区别。
      [考点链接] 函数调用和参数传递。

  • 第16题:

    在窗体上画—个名称为Command1的命令按钮,然后编写如下事件过程: Private Sub Command1_Click_() For n=1 To 20 If n Mod 3<>0 Then m=m+n\3 Next n print n End Sub 程序运行后,如果单击命令按钮,则窗体上显示的内容是 ______。

    A.15

    B.18

    C.21

    D.24


    正确答案:C
    解析:本题考查的是For...Next循环语句。For...Next循环执行时,先将初始值赋给循环变量,判断是否超过终值,若未超过则执行循环体,遇到Next语句后,循环变量增加一个步长(默认值为1),再判断是否超过终值,若未超过则继续执行循环体,如此重复直到循环变量超过终值,退出循环。本题中的循环变量为n,步长为1,当n=20时,再执行Next n,则n=21,此时n大于终值20,退出循环。

  • 第17题:

    在窗体中添加一个名称为Command1的命令按钮,然后编写如下事件代码: Private Sub Command1_Cliek() Dim a(10, 10) For m = 2 To 4 For n = 4 To 5 a(m, n) = m*n Next n Next m MsgBox a(2, 5)+a(3, 4)+a(4,5) End Sub 窗体打开运行后,单击命令按钮,则消息框的输出结果是( )。

    A.22

    B.32

    C.42

    D.52


    正确答案:C
    解析:该程序共循环3次,第一次循环算出a(2,5)=10,第二次循环算出a(3,4)=12,第三次循环算出a(4,5)=22,故a(2,5)+a(3,4)+a(4,5)=42。

  • 第18题:

    在窗体上画一个名称为Command1的命令按钮,然后编写如下事件过程: Private Sub Command1_Click() Call sub1(-15.1,2.54) End Sub Public Function sub1(a As Integer,ByVa1 b As String) As Integer a=Val(B)sub1=a Print sub1 End Function 程序运行后,单击命令按钮,在窗体上输出的是

    A.3

    B.2

    C.-15

    D.提示出错


    正确答案:A
    解析:本题主要考查了功能函数的调用。特别要注意的是转换函数Va1的含义。 Va1表示的含义是将字符串转换为数值型,在本题中要求转换为整型值,在转换过程中应用到了四舍五人的规则,Va1(2.54)的结果值为3。故程序运行后单击命令按扭,在窗体上输出的数为3。选项A正确。

  • 第19题:

    在窗体中添加一个命令按钮,编写如下程序: Private Sub Test(p,m,n) p=p+1:m=m+1:n=n+1 Print "Sub: ";p;m;n End Sub Private Sub Command1.Click() a1=1:b=2:c1=3 Call Test((a,b1+3,(c1)) Print "Main:";a1;b1;c1 End Sub 程序运行后,输出结果为

    A.Sub: 2 6 4 Main: 2 6 4

    B.Sub: 2 6 4 Main: 2 6 4

    C.Sub: 2 6 4 Main: 1 2 3

    D.Sub: 2 6 4 Main: 2 2 3


    正确答案:D
    解析:这是在实现子过程被调用时参数虚实结合的问题。a1为变量按址传送,b1+3和(c1)为表达式按值传送。

  • 第20题:

    在窗体上画一个名称为Command1的命令按钮,然后编写如下事件过程: Private Sub sub1(p,m,n) p=p + 1 : m = m + 1 : n =n + 1 Print p;m;n End Sub Private Sub Command1_Click() x=6 : y=4 : z=2 Call sub1(x,y+1,(z)) Print x;y;z End Sub 程序运行后,单击命令按钮,则窗体上第二行显示的内容是

    A.7 6 3

    B.7 4 2

    C.6 4 2

    D.4 6 3


    正确答案:B
    解析:本题考察的是函数过程的调用和参数传送。当发生了Command1的单击事件时,调用函数过程sub1,虽然sub1函数过程在定义时3个参数都被定义成传址方式传送,但在调用时只有第1个参数是变量,按引用传送,其他两个参数均按传值传送。参数传送后,进入subl函数过程执行,p、m和n均加1分别得到的值为7、6和3。函数过程调用返回后,只有x的值发生了变化,变为7,y和z的值仍为4和2。

  • 第21题:

    在窗体中添加一个命令按钮,编写如下程序:

    Private Sub Sub1(p,m,n)

    p=p+1:m=m+1:n=n+1

    Print "sub1:";p;m;n

    End Sub

    Private Sub Command1_Click()

    a1=1:b=2:c1=3

    Call Sub1(a,b1+3,c1)

    Print"Main:";a1;b1;c1

    End Sub

    程序运行后,输出结果为

    A.Sub: 2 6 4 Main: 2 6 4

    B.Sub: 2 6 4 Main: 2 6 4

    C.Sub: 2 6 4 Main: 1 2 3

    D.Sub: 2 6 4 Main: 2 2 3


    正确答案:D
    解析:考查考生对参数传递的掌握情况。这是在实现子过程被调用时参数虚实结合的问题。a1为变量按址传送,b1+3和c1为表达式按值传送。参数的传值方式和传址方式的区别。

  • 第22题:

    在窗体上画一个名称为Command1的命令按钮,然后编写如下事件过程: Private Sub sub1(ByVal x As Integer, ByVal y As Integer, ByVal z As Integer) z=x * x+ y * y End Sub Private Sub Command1_Click() Dim a As Integer a = 8 Call sub1(1, 2,A)Print a End Sub 程序运行后,单击命令按钮,则窗体上显示的内容是

    A.8

    B.2

    C.5

    D.11


    正确答案:A
    解析:因为sub1过程的形参都是传值传送,所以在其内的所有计算结果都将不返回,并不影响对应的实参值,变量a的值并没有改变,仍旧是8。

  • 第23题:

    在窗体上画一个名称为Commandl的命令按钮,然后编写如下事件过程: Private Sub Commandl Click() Forn=1 To 20 If n Mod 3<>Thenm=m+n\3 Next n Print n End Sub 程序运行后,如果单击命令按钮,则窗体上显示的内容是______。

    A.15

    B.18

    C.21

    D.24


    正确答案:C
    解析:本题考查的是For…Next循环语句。For…Next循环执行时,先将初始值赋给循环变量,判断是否超过终值,若未超过则执行循环体,遇到Next语句后,循环变量增加一个步长(默认值为1),再判断是否超过终值,若未超过则继续执行循环体,如此重复直到循环变量超过终值,退出循环。本题中的循环变量为n,步长为1,当n=20时,再执行Nextn,则n=21,此时n大于终值20,退出循环。