江门司法普法考试:一个VB问题

来源:百度文库 编辑:神马品牌网 时间:2024/04/30 18:36:22
Private Sub Command1_Click()
Dim n As Long
Dim r As Long
n = InputBox("请输入一个数字")
n = CLng(n)
r = fun(n)
Print r
End Sub

Private Function fun(ByVal num As Long) As Long
Dim k As Long
num = Abs(num)
Do While num
k = k * (num Mod 10)
num = num \ 10
Loop
fun = k
End Function

这段程序我怎么读,最后答案都是4,但计算机上的出的是0
请大家指点一下,思路是怎么的?

Dim n As Long
n = InputBox("请输入一个数字")

Inputbox返回的字串,你定义了n是long,就是0了!你的n = CLng(n)
也就无效了!

你可以先用字串接受或者直接n =Clng( InputBox("请输入一个数字") )

是啊.CLNG没有这个子程序吗

Private Function fun(ByVal num As Long) As Long
Dim k As Long '问题出在这里

由于在这个函数中没有为k赋初值,而long类型的默认值是0,
所以在进入循环前k的值为0,在循环中,k=k*(num mod 10),
0乘任何值结果都是0, 因此函数的值总为0