VB编程系列(4):矩阵转置

问题描述:

编写一个程序,将一个 M 行 N 列的矩阵转置。


解题思路:

所谓矩阵转置,可以看下面这个例子:

       |1    2  3  |
A = |4     5  6  |
       |7    8  9  |
       |10 11 12 | 转置后内容为

       |1 4 7 10 |
B = |2 5 8 11 |
       |3 6 9 12 | 即行列互换,即B(j,i)=A(i,j)


程序代码:

Dim M, N As Integer
M = Val(InputBox("请输入矩阵行数"))
N = Val(InputBox("请输入矩阵列数"))
Dim A(), B() As Integer
ReDim A(M, N), B(N, M)
Randomize
Print "矩阵A:"
For i = 1 To M
  For j = 1 To N
    A(i, j) = Int(Rnd * 90 + 10)
    Print Tab(4 * j); A(i, j);
    B(j, i) = A(i, j)
  Next
  Print
Next
Print "转置后的矩阵B:"
For i = 1 To N
  For j = 1 To M
    Print Tab(4 * j); B(i, j);
  Next
Next
Print


另外,若是 N 行 N 列矩阵,且不使用 B 数组,其解题思路应该是这样的:

对第 i 行第 j 列的每个数,A(i, j) 与 A(j, i) 互换,注意,j 的取值范围只能是 1 到 i。

程序代码如下:

Dim N As Integer
N = Val(InputBox("请输入 N 阶矩阵的行、列数"))
Dim A() As Integer
ReDim A(N, N)
Randomize
Print "矩阵A:"
For i = 1 To N
  For j = 1 To N
    A(i, j) = Int(Rnd * 90 + 10)
    Print Tab(4 * j); A(i, j);
  Next
  Print
Next
For i = 1 To N
  For j = 1 To i
    t = A(j, i)
    A(j, i) = A(i, j)
    A(i, j) = t
  Next
Next
Print "转置后的矩阵A:"
For i = 1 To N
  For j = 1 To N
    Print Tab(4 * j); A(i, j);
  Next
Next
Print

猜你喜欢

转载自blog.csdn.net/qq_37183108/article/details/80350412