关于数组的问题!有点想不通啊~~
小弟第一次在这发帖,遇到一个问题,请教各位了!!!题目请看http://tp3.aiyuanyuan.com.cn/upload/pics/8a6830f74cff8da170bbf600f508fa42.JPG
这是我做的代码
Dim a(50) As Long
Private Sub Command1_Click()
a(0) = 1
a(1) = 1
For i = 2 To CInt(Text1.Text)
a(i) = a(i - 1) + a(i - 2) + 1
Debug.Print a(i)
Next i
Text2.Text = a(i)
End Sub
Private Sub Command2_Click()
Open "out5.txt" For Output As #1
Print #1, Text2.Text
Close #1
End Sub
这是答案
Dim a(50) As Long
Private Sub Command1_Click()
a(1) = 1
a(2) = 1
For i = 3 To CInt(Text1.Text)
a(i) = a(i - 1) + a(i - 2) + 1
Next i
Text2.Text = a(i - 1)
End Sub
Private Sub Command2_Click()
Open "out5.txt" For Output As #1
Print #1, Text2.Text
Close #1
End Sub
为什么我做的计算出来text2显示是0呢?立即里面也不是0啊!
还有,vb数组不是默认从0开始么? --------------------编程问答-------------------- 正因为数组默认从0开始,那么当i到达终值CInt(Text1.Text)后又一次进入循环变成了CInt(Text1.Text)+1,判断不符合循环要求后退出FOR后执行你的Text2.Text = a(i)语句;但这个时候的a(i)已经不是你循环里的a(i),而是a(i+1)了;
LONG型数组元素a(i+1)没赋值,当然默认是0了,呵呵
修改代码:
--------------------编程问答-------------------- vb数组是不是默认从0开始,看设置,在代码开头加一句:
Private Sub Command1_Click()
a(0) = 1
a(1) = 1
For i = 2 To CInt(Text1.Text)
a(i) = a(i - 1) + a(i - 2) + 1
Debug.Print i, a(i)
Next
Text2.Text = a(i - 1)
End Sub
option base 0 --------------------编程问答-------------------- 或者你把
Text2.Text = a(i - 1)
改成
Text2.Text = a(CInt(Text1.Text))
比较直观一点 --------------------编程问答-------------------- 感谢toury,zzyong00,ayalicer三位的回答,我已经明白了~ --------------------编程问答-------------------- Text2.Text = a(i)
改成
Text2.Text = a(i-1)
就可以了。
另外,VB的数组默认就是从0开始的
补充:VB , 基础类