关于Pascal的问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 06:40:50
输入矩阵a(m行n列)和矩阵b(n行h列),计算并输出c=a*b
矩阵乘法定义:c(i,j)的值为a矩阵的第i行
与b矩阵的第j列中对应元素的
乘积之和,c为m行h列的矩阵
即:c(1,1)=a(1,1)*b(1,1)+a(1,2)*b(2,1)
+a(1,3)*b(3,1)+…+a(1,n)*b(n,1)
c(2,3)=a(2,1)*b(1,3)+a(2,2)*b(2,3)
+a(2,3)*b(3,3)+…+a(2,n)*b(n,3)

program juzhen;
var
a,b,c:array[1..100,1..100] of integer;
m,n,h,i,j,s,k:integer;
begin
write('m=');read(m);
write('n=');read(n);
write('h=');read(h);
writeln('Input A:');
for i:=1 to m do
for j:=1 to n do read(a[i,j]);
writeln('Input B:');
for i:=1 to n do
for j:=1 to h do read(b[i,j]);
for i:=1 to m do
for j:=1 to h do
begin
s:=0;
for k:=1 to n do s:=s+a[i,k]*b[k,j];
c[i,j]:=s;
end;
writeln('C=A*B');
for i:=1 to m do
begin
for j:=1 to h do write(c[i,j]:4);
writeln;
end;
end.

这位应该是高中数学还没有学到矩阵吧
去查一下矩阵相乘的定义这题应该就会了吧:
1 2 5 6
3 4 * 7 8
1*5+2*7 1*6+2*8
=3*5+4*7 3*6+4*8
19 22
=43 50
其实也就是说,a*b(ab不可颠倒)中的每一个元素c(m,n)等于矩阵a(1,m)*b(n,1)+a(2,m)*b(n,2)+a(3,m)+b(n,3)+....不断加下去,即a矩阵第m行的元素与b矩阵第n列的元素对应相乘的和。(同时a的列数必须等于