vb中的循环,计算出来的结果不对呀?

来源:百度知道 编辑:UC知道 时间:2024/06/25 22:42:17
我command1-click事件中执行一下代码:

Dim a, b, s, i As Integer
a = Val(Text1.Text)
b = Val(Text2.Text)
s = 0
i = a
Do While i <= b
i = i + 1
s = s + i
Loop
MsgBox "计算结果为:" & s

end sub

我在运行的时候,输入两个数,累加的结果都是不对的,比如1+……+3 他结果是9,奇怪不?
我1+……+100 他说结果是5150,更错。
得出了个规律:就是多加了个B,
所以,我把最后的输出改成msgbox"结果是:"&(s-b),就完全正确了。

就不知道是我的不对还是真的有这么个问题,
看网上所有的教程说这个vb循环都是列举这么个例子,

这是正确答案:
Private Sub cmd1_Click()
Dim a, b, s, i As Integer
a = Val(Text1.Text)
b = Val(Text2.Text)
s = 0
i = a
Do While i <= b
s = s + i
i = i + 1
Loop
MsgBox "计算结果为:" & s

End Sub

Private Sub Form_Load()
Text1.Text = ""
Text2.Text = ""
cmd1.Caption = "OK"
End Sub

do while 中,i=i+1要放在后面的,放前面就会多算一步的!

Do While i <= b
改为:
Do While i < b

给你解释一下为什么?
你的代码是把 b的值付给了i 也循环..
你的程序 最后一次循环的时候就是 把b值赋给i ,最后s的值也就多加了这个i的值(和b的值相等,等于是多加了个b),所以最后的结果和跟你想要的结果自然就是多加了一个b的值..
或者改为 do until i>=b 也行...

这样的循环,最好的办法是不是用do……loop而是用for……next
Dim s As long , i As Integer
s = 0
for i= Val(Text1.Text) to Val(Text2.Text)
s = s + i
next i
MsgBox "计算结果为:" & s
end sub

Private Sub Command1_Click()
Dim a, b, s, i As Integer
a = Val(Text1.Text)