vb这道题里面的a在第二,三次调用函数是怎么变为了3 谁能解释下?
编写如下程序:PrivateSubCommand1_Click()DimaAsInteger,iAsIntegera=2Fori=1To3Printfun_s(a);Ne...
编写如下程序:Private Sub Command1_Click()
Dim a As Integer, i As Integer a = 2
For i = 1 To 3
Print fun_s(a);
Next i
End Sub
Function fun_s(a As Integer) As Integer
Dim b As Integer
Static c As Integer
a = a + 1
b = b + 1
c = c + 1
fun_s = a + b + c
End Function
程序运行后,单击命令按钮Command1,输出结果为A) 4 5 6B) 5 6 7C) 5 7 9D) 4 6 8 参考答案:C【解析】程序初始定义全局变量a,i。a=2。在fun_s中,定义了静态变量c,能够保留上一次程序调用的值,而b不保留上次的值,每次调用函数时,自动初始化为0。利用For循环,三次调用函数fun_s,执行结果为:第一次调用函数,a = a + 1=2+1=3,b = b + 1=0+1=1, c = c + 1=0+1=1,fun_s = a + b + c=5;第二次调用函数,a = a + 1=3+1=4,b = b + 1=0+1=1,c = c + 1=1+1=2,fun_s = a + b + c=7;第三次调用函数,a = a + 1=3+1=4,b = b + 1=0+1=1, c = c + 1=2+1=3,fun_s = a + b + c=9。故选择C项 展开
Dim a As Integer, i As Integer a = 2
For i = 1 To 3
Print fun_s(a);
Next i
End Sub
Function fun_s(a As Integer) As Integer
Dim b As Integer
Static c As Integer
a = a + 1
b = b + 1
c = c + 1
fun_s = a + b + c
End Function
程序运行后,单击命令按钮Command1,输出结果为A) 4 5 6B) 5 6 7C) 5 7 9D) 4 6 8 参考答案:C【解析】程序初始定义全局变量a,i。a=2。在fun_s中,定义了静态变量c,能够保留上一次程序调用的值,而b不保留上次的值,每次调用函数时,自动初始化为0。利用For循环,三次调用函数fun_s,执行结果为:第一次调用函数,a = a + 1=2+1=3,b = b + 1=0+1=1, c = c + 1=0+1=1,fun_s = a + b + c=5;第二次调用函数,a = a + 1=3+1=4,b = b + 1=0+1=1,c = c + 1=1+1=2,fun_s = a + b + c=7;第三次调用函数,a = a + 1=3+1=4,b = b + 1=0+1=1, c = c + 1=2+1=3,fun_s = a + b + c=9。故选择C项 展开
2个回答
展开全部
函数fun_s(a As Integer) 中参数a是默认按地址传递参数值,
VB函数参数有两种传递方式,
一种按值传递Byval,函数中参数值改变不会回传给主调函数或过程,
一种按地址传递Byref,函数中参数值改变会回传给主调函数或过程,
默认按地址传递Byref,如果要按值传递,需要在参数前加Byval。
本题中fun_s(a As Integer),a按地址传递参数,
第一次调用函数,
a = a + 1=2+1=3,
b = b + 1=0+1=1,
c = c + 1=0+1=1,
fun_s = a + b + c=5;
a的值被改变为3。
第二次调用函数,
a = a + 1=3+1=4,
b = b + 1=0+1=1,
c = c + 1=1+1=2,
fun_s = a + b + c=7;
a的值被改变为4。
第三次调用函数,
a = a + 1=4+1=5,
b = b + 1=0+1=1,
c = c + 1=2+1=3,
fun_s = a + b + c=9。
故选择C项
VB函数参数有两种传递方式,
一种按值传递Byval,函数中参数值改变不会回传给主调函数或过程,
一种按地址传递Byref,函数中参数值改变会回传给主调函数或过程,
默认按地址传递Byref,如果要按值传递,需要在参数前加Byval。
本题中fun_s(a As Integer),a按地址传递参数,
第一次调用函数,
a = a + 1=2+1=3,
b = b + 1=0+1=1,
c = c + 1=0+1=1,
fun_s = a + b + c=5;
a的值被改变为3。
第二次调用函数,
a = a + 1=3+1=4,
b = b + 1=0+1=1,
c = c + 1=1+1=2,
fun_s = a + b + c=7;
a的值被改变为4。
第三次调用函数,
a = a + 1=4+1=5,
b = b + 1=0+1=1,
c = c + 1=2+1=3,
fun_s = a + b + c=9。
故选择C项
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询