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
阅读更多
个人分类: VB编程系列
想对作者说点什么? 我来说一句

VB 矩阵的转置

2010年06月07日 37KB 下载

松下FP系列PLC与VB通信源码

2011年11月07日 12KB 下载

用指针实现二维数组的转置

2012年11月15日 5KB 下载

C++矩阵转置

C++矩阵转置

syyyy712 syyyy712

2017-12-10 19:21:41

阅读数:278

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭