注册 登录
编程论坛 VB6论坛

一维数组怎么转为二维数组啊

乖巧的大脸猫 发布于 2021-05-08 14:09, 1831 次点击
将一个一维数组a(9)中各元素按行的顺序放入二维数组b(3,3)
4 回复
#2
风吹过b2021-05-08 21:04
啥情况?
b(1,1)=a(1)
b(2,1)=a(2)
b(3,1)=a(3)
b(1,2)=a(4)
......
这种的吗?
如果数组下标都是1开始的,那么可以使用 CopyMemory
如:
程序代码:
Option Explicit
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Sub Command1_Click()
Dim a(1 To 9) As Long
Dim b(1 To 3, 1 To 3) As Long
Dim i As Long
For i = 1 To 9
    a(i) = i * 10 + Rnd() * 10
Next i
Call CopyMemory(b(1, 1), a(1), 4 * 9)
End Sub


如果不是,老老实实写循环一个一个的赋值吧。
#3
apull2021-05-08 22:28

数组从0开始
for i=0 to 2
  for j=0 to 2
     b(i,j)=a(i*3+j)
  next j
next i

从1开始
for i=1 to 3
  for j=1 to 3
     b(i,j)=a((i-1)*3+j)
  next j
next i
#4
wds12021-05-12 14:34
假设A(9)为A(1)-A(9),B(3,3)为B(1,1)-B(3,3)

for i=0 to 8'按行放
  b((i \ 3)+1,(i mod 3) +1 )=a(i+1)
next

For i = 0 To 8'按列放
  b((i Mod 3) + 1, (i \ 3) + 1) = a(i + 1)
Next
#5
cwa99582021-05-13 15:06
将一个一维数组a(9)中各元素按行的顺序放入二维数组b(3,3)

a(9)是10个元素,b(3,3)是16个元素
下标从1开始,是一样的个数,都是9个。
dim a(9),b(3,3)
for i=1 to 3
   for j=1 to 3
     b(i,j)=a((i-1)*3+j)
   next
next


[此贴子已经被作者于2021-5-13 15:07编辑过]

1