一个n×n矩阵的主对角线(从左上到右下的对角线)上各个元素的总和称为这个矩阵的迹。一个矩阵转置后,新矩阵的迹和原矩阵的相等。
以3×3数据块为例,原矩阵和转置矩阵的结果如图所示。
小明发现对这个矩阵进行转置后,主对角线上的数字没有发生变化,所以决定编写VB程序随机生成一个n×n的矩降再试一下。程序实现的功能如下:在文本框Text1中输入整数n(2≤n≤10),单击“生成矩阵”按钮Command1,生成n2个10到99之间(包含10和99)的随机整数,并以n行、n列矩阵的形式显示在列表框List1中,将转置后的矩阵也显示在List1中。再单击“主对角线”按钮Command2,则在标签Label1中输出两矩阵主对角线上的元素,运行界面如图所示,程序代码如下,请在画线处填入合适的代码。
Const max=100
Dim n As Integer
Dim a(1 To max)As Integer
Dim b(1 To max)As Integer
Private Sub Command1_Click( )
n=Val(Text1.Text)
For i=1 To n*n
a(i)= ①
Next i
p=1
For i=1 To n*n
b(i)=a(p)
If i Mod n=0 Then
p=p-n*(n-1)+1
Else
②
End If
Next i
List1.Clear
List1. AddItem Str(n)+"*"+Str(n)+"方阵”
Call Output(a( ))
List1.AddItem"转置矩阵"
Call Output(b( ))
End Sub
Private Sub Command2_Click( )
Label1.Caption="原矩阵":L.abel2.Caption="转置矩阵"
For i=1 To n
Label1.Caption=Label1.Caption & Str(a(i+(i-1)*n))
Label2.Caption=label2.Caption & Str(b(i+(i-1)*n))
Next i
End Sub
Sub Output(a()As Integer)
Dim line As String
line=""
For i=1 To n*n
If i>1 And i Mod n=1 Then
List1. AddItem line
line=Str(a(i))
Else
③
End If
Next i
List1. AddItem line
End Sub
以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②;③。
答案:【1】Int(Rnd*90)+10【2】p=p+n【3】line=line+Str(a(i))