帮忙解释下这道题

来源:百度知道 编辑:UC知道 时间:2024/06/19 12:45:34
有如下一个函数过程
Function fn(ByVal num As Long)
Dim k As Long
k=1
num=Abs(num)
Do While num
k=k*(num Mod 10)
num=num\10
Loop
fn=k
End Function
以下是一个调用该函数的事件过程,运行程序后,在输入对话框输入数字“123”,该过程的运行结果是(6 )
Private Sub Command5_Click()
Dim n As Long
Dim r As Long
n= InputBox ("请输入一个数值")
n= CLng(n)
r= fn(n)
Print r
End Sub

谢谢大家
我不明白为什么要把三次循环的结果给乘起来

VB的题目么??试着分析一下...
Private Sub Command5_Click()
Dim n As Long
Dim r As Long
n= InputBox ("请输入一个数值")
n= CLng(n) //这里是你输入的123
r= fn(n) //这里调用函数fn(n),n=123,往分割线下看
Print r //打印结果
End Sub
====================================
Function fn(ByVal num As Long) //形参被实参替换,num=123
Dim k As Long
k=1
num=Abs(num) //求绝对值,|123|=123
Do While num //循环语句,判定num是否为0
k=k*(num Mod 10) //循环1:num和10取余得3,K=3
num=num\10 //循环1:num整除10,num=12
Loop //循环1结束,开始循环2:(下面)
// k=k*(num Mod 10) -> K=3*(12取余10) ->k=6
// num=12\10 -> num=1
// 第三次循环自己会分析了吧,3次循环K依次为3,2,1,乘起来得6
fn=k //返回结果,返回分割线上面
End Function