会PASCAL的教我一道题吧

来源:百度知道 编辑:UC知道 时间:2024/05/25 15:03:18
输入矩阵a(5行5列),将a转置成矩阵b(=a'),然后计算矩阵a与b的乘积c=a*b,并输出矩阵a,b,c。
提示:转置即行列对换。使矩阵b的第1行元素等于a的第1列元素,b的第2行元素等于a的第2列元素,……。

var a,b,c:array [1..100,1..100]of longint;
i,j,m,n,r,k,s,l:longint;
begin
readln(m,n,r);
for i:=1 to m do
for j:=1 to n do read(a[i,j]);
for i:=1 to n do
for j:=1 to r do read(b[i,j]);
for i:=1 to m do
for j:=1 to r do
begin
k:=0;s:=0;l:=0;
while (k<=m)and(l<=r) do begin
inc(k);
inc(l);
s:=s+a[i,k]*b[l,j];
end;
c[i,j]:=s;
end;
writeln(m,' ',r);
for i:=1 to m do begin
for j:=1 to r do write(c[i,j],' ');
writeln;
end;
end.
//将A,B数组相乘,题目名字叫距阵乘法吧

...用模拟死做不能不会吧....
其实分析一下的话,c中的c(m,n)=a(m,n)*b(m,n)=a(m,n)*a(n,m)...两个for直接解决问题...

你说的是矩阵的主对角线,直接用a【i,j】=a【j,i】