一道程序改错题(VB的)

来源:百度知道 编辑:UC知道 时间:2024/05/28 04:07:18
程序功能:求当N=20时,1/(1*2)+1/(2*3)+1/(3*4)+….+1/(N*(N+1))的值。要求:按四舍五入的方式精确到小数点后第二位。程序中有错误。改正错误,使它能输出正确的结果。
Private Sub Command1_Click()
Dim s As Integer
Dim n As Integer
s = 0
n = 1
Do While n <= 20
s = s + 1 / n * (n + 1)
n = n + 1
Loop
Print Format(s, "0.##")
End Sub
这程序哪里有错误,望各位大虾指点小弟一下,谢啦
有多处错误·

Private Sub Command1_Click()
Dim s As Single 's的数据类型应当是浮点型的single或者double
Dim n As Integer
s = 0
n = 1
Do While n <= 1
s = s + 1 / (n * (n + 1))'你的表达式里面缺少外面那层的括号
n = n + 1
Loop
Print Format(s, "0.##")
End Sub

代码和解释我都奉上了,直接运行就行了、、

有两个错误,除了一楼说的将s的数据类型修改为single外,还有一个错误:
将第7行的赋值语句改为:
s = s + 1 / (n * (n + 1))
明白了吧!你少加了括号,而*与/运算符属于同一优先级!从而导致了错误!

s的数据类型不应该是整型吧?