有关vb的编程问题

来源:百度知道 编辑:UC知道 时间:2024/09/22 03:45:45
求满足条件的N的最大值

1 / 1 + 1 / 2 + 1 / 3 + 1 / 4 + . . . + 1 / N > 10

答案是12367,可我算出来是12368,大家帮我看看编程吧。。。

s = 0
n = 1
Do Until s > 10
s = s + 1 / n
n = n + 1
Loop
Print n

最后一次循环时
s=s+1/n 此时s>10了这时的n是正确的
也就是下次循环不会发生了
但,接下来才是n=n+1
也就是在正确的n 上又加了1,然后此次循环才退出
应该能明白了吗

第12367次循环
s=XX+1/12367
n=12367+1

应该是:
s = 0
n = 0
Do Until s > 10
s = s + 1 / n
n = n + 1
Loop
Print n

Private Sub Command1_Click()
Dim s As Double
s = 0
n = 1
While 1 = 1
s = s + 1 / n
If s > 10 Then
GoTo a
End If

n = n + 1
Wend
a:
Print n

End Sub

这是可以完全运行的代码,已调试过!!

你用DO UNTIL ....LOOP 来做的话,它在算完的中间语句后还然再执行一次N=N+1的!这个是这个语句的特性...看不出的话你可以这样写:
s = 0
n = 1
Do
s = s + 1 / n
n = n + 1
Loop Until s > 10
MSGBOX n
是先执行再判断的哦!!!
如果你确实要用DO UNTIL...LOOP 写的话,行...这样来:
s = 0
n = 0
Do Until s > 10
n = n + 1
s = s + 1 / n
Loop
PRINT n

祝你成