滨崎步2017年演唱会:请VB高手进来帮帮我啊

来源:百度文库 编辑:高考问答 时间:2024/04/30 15:59:49
option Base 1

Private Sub Form_Click()
Dim i As Integer, j As Integer, a() As Integer, n As Integer
n = 3
ReDim a(n, n)
For i = 1 To n
For j = 1 To n
a(i, j) = i + j
Next j
Next i
Call sub1(a, n)

End Sub

Private Sub sub1(y() As Integer, n As Integer)
Dim i As Integer, j As Integer
Dim t As Integer
For i = 1 To n
For j = 1 To n
t = y(i, j)
y(i, j) = y(n + 1 - j, n + 1 - j)
y(n + 1 - j, n + 1 - j) = t
Next j
Next i

End Sub
运行后 a(1,1) a(2,2) a(3,3) 分别是
请告诉我为什么,好吗,非常感谢!我知道a(1,1),a(2,2),a(3,3)就是过程中的y(1,1),y(2,2),y(3,3)而y()的值又与t有关,所以我在过程中的Next j和Next i之间添加了Print t结果显示是4,5,4没问题,而在最后Print y(1,1),y(2,2),y(3,3)中结果是4,5,5,为什么啊,请专家指点

a(1,1) a(2,2) a(3,3) 分别是4,5,5
代码如下,注意3个Print a(1, 1); a(2, 2); a(3, 3)的输出结果:

Option Explicit
Dim i As Integer
Dim j As Integer
Dim a() As Integer
Dim t As Integer
Dim n As Integer

Private Sub Form_Click()
n = 3
ReDim a(n, n)
For i = 1 To n
For j = 1 To n
a(i, j) = i + j
Next j
Next i
Print a(1, 1); a(2, 2); a(3, 3)
Call sub1(a, n)
Print a(1, 1); a(2, 2); a(3, 3)
End Sub

Private Sub sub1(y() As Integer, n As Integer)
Dim i As Integer, j As Integer
For i = 1 To n
For j = 1 To n
t = y(i, j)
y(i, j) = y(n + 1 - j, n + 1 - j)
y(n + 1 - j, n + 1 - j) = t
Next j
Print a(1, 1); a(2, 2); a(3, 3); "i="; i
Next i
End Sub

t = y(i, j)
y(i, j) = y(n + 1 - j, n + 1 - j)
y(n + 1 - j, n + 1 - j) = t

这一段是用来交换 y(i, j) 和 y(n + 1 - j, n + 1 - j) 的值的。
所以,你只输出 t 来检查是没有意义的。

你所说的题目运行如下:
原来数组
2 3 4
3 4 5
4 5 6
i=1的时候 a(1,1)与a(3,3) a(1,2)与a(2,2) a(1,3)与a(1,1)对调
4 4 6
3 3 5
4 5 2
i=2的时候 a(2,1)与a(3,3) a(2,2)与a(2,2) a(2,3)与a(1,1)对调
5 4 6
2 3 4
4 5 3
i=3的时候 a(3,1)与a(3,3) a(3,2)与a(2,2) a(3,3)与a(1,1)对调
4 4 6
2 5 4
3 3 5
你所说的t=4 那是因为在最后a(3,3)与a(1,1)对调时候t里面是a(3,3)即是4
而对调了以后则是5