vb中数组问题

来源:百度知道 编辑:UC知道 时间:2024/06/07 04:01:04
先生成50个随机数赋值给x(i),i是从1 to 50 的。然后再查找x(i)中是偶数的,如果是偶数就赋值给y(i),最后显示想x(i)和y(i),但是问题来了,x(i)能正常显示,但是y(i)却显示一大串同一个数啊。高手帮忙看下哪里错了。

代码如下
Private Sub Command2_Click()
Cls
Dim x(50) As Integer, y(50) As Integer, i As Integer, n As Integer
For i = 1 To 50
x(i) = Int(Rnd * (300 - 100 + 1)) + 100
If x(i) Mod 2 = 0 Then
y(n + 1) = x(i)
n = n + 1
End If
Next i

For i = 1 To 50
Print x(i),
If i Mod 5 = 0 Then Print
Next i

For i = 1 To n
Print y(n),
If i Mod 5 = 0 Then Print
Next i
End Sub
说明一下,楼下几位没有考虑到一点,比方说x(5)=197的时候也就是奇数,它就不要赋值给y(5)了,这时y(5)就空了,但是最后要print的时候怎么避开这个y(5)呢?所以我用到了y(n)

Print y(n),
改成 Print y(i),

问题补充:
我已经知道你的意思了

For i = 1 To n
Print y(n),
If i Mod 5 = 0 Then Print
Next i

你这段代码就是按你的意思写的
但是你循环的是I 而是PRINT的是 y(n)
在这个循环中 n 是不变的,所以造成了你显示的Y数组全是同一个数
你把 y(n)改成y(i)问题就解决了

同时显示的只是X(i)里的偶数,不会显示奇数的

这里错了:
y(n + 1) = x(i)
n = n + 1
n的初值是0,下面有n = n + 1 ,也就是从1开始直到循环结束,n是连续变化的,结构就是数组中的偶数也是连续的。其实,这里n是不需要的改成这样就好了:
y(i) = x(i)

最后在输出y(n)的时候,
For i = 1 To n
Print y(n),
If i Mod 5 = 0 Then Print
Next i

里面print y(n),改成print y(i),

Print y(n), 应该Print y(i),