永发信息网

用VB编写程序,实现矩阵互置,即将一个N*M的矩阵的行和列互换?

答案:4  悬赏:40  手机版
解决时间 2021-01-03 17:49
  • 提问者网友:斑駁影
  • 2021-01-03 02:32
题目如题,感谢各位高手了
最佳答案
  • 五星知识达人网友:蕴藏春秋
  • 2021-01-22 04:08
楼上的如果是 tmp = f(i, j) f(i, j) = f(j, i) f(j, i) = tmp 这样交换的话 肯定不是正确结果呀~~你想,拿f(1,2)为例,你循环到1-2的时候 交换f(1,2)和f(2,1) 交换了一次,然后 你循环到 2-1 的时候,f(2,1)又要和 f(1,2)交换一次,就交换回来了呀!!!!
你可以用一个中间数组 来存结果,如下,你只需要新建一个窗体 添加如下代码就行!!!
Private Sub Form_Click()
Dim a(1 To 5, 1 To 5) As Integer
Dim b(1 To 5, 1 To 5) As Integer
n = 0
For i = 1 To 5
For j = 1 To 5
n = n + 1
a(i, j) = n
If j = 5 Then
Print a(i, j)
Else
Print a(i, j),
End If
Next
Next
For i = 1 To 5
For j = 1 To 5
b(i, j) = a(j, i)
Next
Next
For i = 1 To 5
For j = 1 To 5
a(i, j) = b(i, j)
If j = 5 Then
Print a(i, j)
Else
Print a(i, j),
End If
Next
Next
End Sub
全部回答
  • 1楼网友:笑迎怀羞
  • 2021-01-22 07:16
Private Sub Form_Click()Me.AutoRedraw = TrueMe.ClsDim f(5, 5) As String, tmp As StringPrint "置换前:"For i = 1 To 5 For j = 1 To 5 f(i, j) = Int(Rnd * 99) If Len(f(i, j)) < 2 Then f(i, j) = "0" & f(i, j) Print f(i, j) & Space(1); Next jPrintNext iPrint vbCrLf & "置换后:"For i = 1 To 5 For j = i To 5 tmp = f(i, j) f(i, j) = f(j, i) f(j, i) = tmp Next jNext iFor i = 1 To 5 For j = 1 To 5 Print f(i, j) & Space(1); Next jPrintNext iEnd Sub
  • 2楼网友:神的生死簿
  • 2021-01-22 05:38
Private Sub Form_Click() Dim a(1 To 4, 1 To 5) As Integer Dim b(1 To 5, 1 To 4) As Integer For i = 1 To 4 For j = 1 To 5 a(i, j) = 2 * i + j Print a(i, j); " "; Next j Print Next i Print For i = 1 To 5 For j = 1 To 4 b(i, j) = a(j, i) Print b(i, j); " "; Next j Print Next i End Sub
  • 3楼网友:鸠书
  • 2021-01-22 04:44
'*****因为vb数组不能根据变量定义,所以本例开始定义一个足够大的数组空间,另一种是循环定义变量产生数据空间 dim arra(1000, 1000), arrb(1000, 1000) n = val(inputbox("输入n")) m = val(inputbox("输入m")) if n >= 1000 or m >= 1000 then msgbox "行列不要大过1000" '***产生矩阵 print "转换前" for i = 1 to n for j = 1 to m arra(i, j) = int(rnd * 10) print arra(i, j) & " "; next print next '‘**交换 for i = 1 to n for j = 1 to m arrb(j, i) = arra(i, j) next next print "转换后" '****输出 for i = 1 to m for j = 1 to n print arrb(i, j) & " "; next print next
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯