战王铁血柔情txt网盘:懂VB的请进

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 11:50:38
Private Sub Form_Click()
Dim a(1 To 20) As Integer, k As Integer
For k = 1 To 20
a(k) = k * k
Next k
Print a(k)
End Sub

为什么以上的程序会出现“下标越界”???急啊!!

楼主,这个问题添加监视就可以看出来,当k=20时,就是循环了20次以后,要退出循环,读取next,就是下一个值(next本身就是这个意思)。
所以输出结果是数组a(21),当然是下标越界。
如果要改正最简单的是print a(k-1)
如果搂主不好理解,可以不用for……next循环
用do……loop就行
Private Sub Form_Click()
Dim a(1 To 20) As Integer, k, b As Double
Do While k < 20
k = k + 1
a(k) = k * k
Loop
Print a(k)
End Sub
这样就行了
答案是400对吗?

当然,在执行完循环之后,开始执行 Print a(k) 时,k 的值已经是 21 了,所以当然越界了。

长度为N的数组是以arr(0).....arr(n-1)格式放置数据的
也就是说你的a(k)应该换成a(k-1)

Private Sub Form_Click()
Dim a(1 To 20) As Integer, k As Integer
For k = 1 To 20
a(k) = k * k
Print a(k)
Next k

End Sub
是这个意思吗