用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
你可以用一个中间数组 来存结果,如下,你只需要新建一个窗体 添加如下代码就行!!!
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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯