继续VB 题求解 输出的结果是 第一行5 第二行7 第三行12 第四行12 第五行 13 第六行 25 想知道二三行怎么来

OptionExplicitPrivateSubCommand1_Click()DimiAsInteger,sAsIntegerFori=1To9Step3s=fun((... Option Explicit
Private Sub Command1_Click()
Dim i As Integer, s As Integer
For i = 1 To 9 Step 3
s = fun((i)) + fun(i)
Print s
Next i
End Sub
Private Function fun(m As Integer) As Integer
Static a As Integer
If m Mod 2 = 0 Then
a = a + 1
m = m + 1
Else
a = a + 2
m = m + 2
End If
fun = a + m
Print fun
End Function分享到:
检举 | 今天 17:17 满意回答 显示超过3行是因为每次循环时主过程Command1_Click中运行1次Print s,s = fun((i)) + fun(i)
中调用fun函数运行2次Print fun。
fun((i))中(i)是表达式,其值是i的值,fun函数的参数m是按地址传递,fun函数运行时会改变参数m的值,fun((i))中是通过表达式(i)传递i的值给fun函数,运行是不会改变i的值。fun(i)运行是会改变i的值。
展开
 我来答
网海1书生
科技发烧友

2012-10-05 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26226

向TA提问 私信TA
展开全部
第一行:
a=a+2=2
m=m+2=1+2=3
fun=a+m=2+3=5
所以第一行是5

第二行:
a=a+2=2+2=4
m=m+2=1+2=3
fun=a+m=4+3=7
所以第二行是7

第三行:
s = fun((i)) + fun(i) = 5+7=12
所以第三行是12

第四行:
a=a+1=4+1=5
m=m+1=6+1=7 '这是因为上面第二行中是按址传递,所以i变为3,再递增3后就是6了
fun=a+m=5+7=12
所以第四行是12

第五行:
a=a+1=5+1=6
m=m+1=6+1=7
fun=a+m=6+7=13
所以第五行是13

第六行:
s = fun((i)) + fun(i) = 12+13=25
所以第六行是25

第七行:
没有了,由于上面第五行中i已被改为7,再递增3的话就变为10,超出循环上限9,所以退出了
匿名用户
2012-10-05
展开全部
i=1时,执行语句s=fun((i))+fun(i)时,会输出 第一行5 第二行7,执行该语句后m=3
执行语句Print s会输出第三行12
执行next i 语句后i变为6

i=6时,执行语句s=fun((i))+fun(i)时,会输出 第四行12第五行13,执行该语句后m=7
执行语句Print s会输出第六行25
执行next i 语句后i变为10,超过9,循环结束
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式