VB的一道求3.14的题.帮我看看哪里错了

来源:百度知道 编辑:UC知道 时间:2024/06/26 01:59:39
Private Sub Command1_Click()
Dim x, p, t
x = 1
t = -t
While p >= 0.000001
x = 1 / (2 * x - 1) * t
p = x * 4
t = -t
Wend
Print p
End Sub

就这一段代码.运行了什么也没有.我VB学得不好.哪里错了希望可以完整地告诉我.谢谢.

看起来你是要用pi/4=1-1/3+1/5-1/7+1/9……计算Pi值,参考以下代码

Private Sub Command1_Click()
'pi/4=1-1/3+1/5-1/7+1/9……
Dim pi As Double
For i = 1 To 100000
pi = pi + ((-1) ^ (i + 1)) * 1 / (2 * i - 1)
Next
Print pi * 4
End Sub

一、你错误在于第4行,这里t本来为空值,等同于0
t=-t
之后还是0
然后再循环内,x永远为0
p也就为0

你程序的本意是t作为正负号使用的,
所以,第三行改为t=1,或者是t=-1
这样以后,p不会为零,但是否能正确,取决于你的公式。

二、还有在循环内,每次都给p赋新值。从逻辑上见似乎没有必要。
故此可以把这行与输出语句合并:即取消这行,同时在print里输出4倍的p
print 4*p

三、你的循环条件While p >= 0.000001 也似乎有些问题。
首次循环,x=1,t=-1,x新值为-1,p为-4,即退出循环,不可能继续精确:
二次循环,x=-1,t=1,x新值为-1/3,p为-4/3
三次循环,x=-1/3,t=-1,x新值为5/3,p为20/3

Private Sub Command1_Click()
Dim pi As Double, n As Long
pi = 2
For n = 1 To 10000
pi = pi * ((2 * n) / (2 * n - 1)) * ((2 * n) / (2 * n + 1))
Next n
MsgBox pi
End Sub

我想应该是你的三个变量(x,p,t)没有确定初始类型,你给它们加个类型试一下,祝你学习愉快~~~~~