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项
展开
 我来答
xuanxuan163com
2016-09-19 · TA获得超过2769个赞
知道大有可为答主
回答量:1709
采纳率:75%
帮助的人:1609万
展开全部
函数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项
Polaris北斗
2016-09-19 · TA获得超过3204个赞
知道大有可为答主
回答量:2530
采纳率:79%
帮助的人:823万
展开全部
第一次调用函数后 a的值为3

第二次调用函数后 a的值为4
第三次调用函数后 a的值为5
因为vb自定义函数参数默认是传址的,如果你把函数写成
Function fun_s(Byval a As Integer) As Integer

那a的值就会保持为2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式