大神  VB用一维数组 代码怎么编写?跪求啦!谢谢

解决方案 »

  1.   

    可以这样写:dim arr(1 to 25) as integer
    a(1) = 1
    ' ...
    a(25) = 9
      

  2.   

    爱的魔力转圈圈Option Explicit
    Dim aryOut(0 To 24) As Byte ' 一维数组
    Private Sub Command1_Click()
        
        Dim intDirect As Integer '方向 0 右 1下 2左 3上
        Dim x As Integer, y As Integer '当前填写位置在矩阵中的坐标
        Dim i As Integer
        For i = 1 To 25 ' 25个数 挨个填入一维数组。当前位置从矩阵坐标 (0,0)开始 方向从0右开始
            aryOut(GetAryPos(x, y)) = i '数值填入
            getNext x, y, intDirect
        Next
        '产生输出字符串
        Dim strout As String
        For i = LBound(aryOut) To UBound(aryOut)
            strout = strout & Format(aryOut(i), "00") & " "
            If (i + 1) Mod 5 = 0 Then strout = strout & vbCrLf
        Next
        '打印输出
        Debug.Print strout
        
    End Sub
    '根据矩阵坐标,获取其在数组中的下标
    Private Function GetAryPos(ByVal x As Integer, ByVal y As Integer) As Integer
        GetAryPos = 5 * y + x
    End Function
    '边缘检测 根据矩阵坐标,方向,获取下一个坐标,并看看该坐标上的数据是否已经有值(碰到边缘了)
    Private Sub getNext(ByRef x As Integer, ByRef y As Integer, ByRef direct As Integer, Optional turntimes As Integer = 0)
        Dim tmpx As Integer, tmpy As Integer
        Dim Turnflag As Boolean '是否转向标志
        If turntimes > 4 Then Exit Sub
        '沿着输入的方向前进一步,获取坐标
        tmpx = x: tmpy = y
        Select Case direct
            Case 0
                tmpx = x + 1
            Case 1
                tmpy = y + 1
            Case 2
                tmpx = x - 1
            Case 3
                tmpy = y - 1
        End Select
        
        If tmpx > 4 Or tmpx < 0 Or tmpy > 4 Or tmpy < 0 Then
        '如果超出矩阵范围了,检测到边缘,需要顺时针转向
            Turnflag = True
        Else
        '没有超出矩阵范围,检测到矩阵已经填值了,需要顺时针转向,否则不需要
            Turnflag = IIf(aryOut(GetAryPos(tmpx, tmpy)) > 0, True, False)
        End If
        If Turnflag Then
            '如果需要转向,那么方向改变
            direct = (direct + 1) Mod 4
            '然后尝试取转向后的下一步
            getNext x, y, direct, turntimes + 1
        Else
            '不需要转向,返回已经走了一步的坐标
            x = tmpx: y = tmpy
        End If
        
    End Sub