vb编程遇疑问

来源:百度知道 编辑:UC知道 时间:2024/05/13 07:29:50
请各位vb编程高手看一如下程序:
(为什么当R为NUM时答案为24呢,而R为0时1时答案为1,当R为任意实数时(除0外)答案为:
R=1
NUM=0
NUM=0
NUM=0
..........)
编程为:
Function fun(ByVal num As Long) As Long
Dim k As Long, r As Integer
k = 1
num = Abs(num)
Do While r
k = k * (num Mod 10)
num = num \ 10
Form1.Print "num=" & num
Loop
fun = k
End Function
Private Sub Command1_Click()
Dim n As Long, r As Long
n = InputBox("请输入一个数")
n = CLng(n)
r = fun(n)
Print "r" & "=" & r
End Sub
程序运行后,单击命令按钮,在输入对话框中输入234,输出的结果为( )
问题的重点为当R为NUM时答案为何为24呢???????
问题的重点为当R为NUM时答案为何为24呢???????
问题的重点为当R为NUM时答案为何为24呢???????

大哥, 你r没有赋值啊 永远不会进入下面的语句
Do While r
k = k * (num Mod 10)
num = num \ 10
Form1.Print "num=" & num
Loop
只能让fun = 1 回到 r = fun(n) 当然是1了。

楼下 不是一直在循环 是根本不进入循环吧..

楼上正解

你的程序你好好看下,有问题,NUM=0这句都不可能显示出来

Do While r
这条语句有问题,当r为除0之外的任意实数时,为真。所以你的程序在一直循环,没有跳出来,
k = k * (num Mod 10)
num = num \ 10
这两条语句执行的结果必然为0,无论是任何实数,包括0
所以Form1.Print "num=" & num 一句一直在输出num = 0
当r=0时,Do While r
为假,不运行这个循环,而直接赋值fun = k ,k你在上面已经赋值为1了,所以当r=0时,结果为1