1 #include <stdio.h> 2 int main(void) 3 { 4 int n,m,l; 5 scanf("%d%d%d",&n,&m,&l); 6 long int a[n][m],b[m][l]; 7 long int c[n][l]; 8 int i,j; 9 for(i=0;i<n;i++) 10 for(j=0;j<m;j++) 11 scanf("%ld",&a[i][j]);//输入 12 for(i=0;i<m;i++) 13 for(j=0;j<l;j++) 14 scanf("%ld",&b[i][j]);//输入 15 for(i=0;i<n;i++) 16 for(j=0;j<l;j++) 17 c[i][j]=0;//c[][]初始化,方便后续进行c[][]+= 18 for(i=0;i<n;i++) 19 for(j=0;j<l;j++) 20 for(int t=0;t<m;t++)//引入t进行对应列与对应行的乘积求和 21 c[i][j]+=a[i][t]*b[t][j]; 22 for(i=0;i<n;i++) 23 { 24 for(j=0;j<l;j++) 25 printf("%ld ",c[i][j]); 26 printf("\n"); 27 } 28 return 0; 29 }
题面
编写一个程序,读取一个n×m矩阵A和一个m×l矩阵B,然后打印它们的乘积,一个n×l矩阵C。
输入
在第一行中,三个整数n、m和l由空格字符分隔。
在接下来的几行中,给出了n×m矩阵A和m×l矩阵B。
输出
打印n×l矩阵C的元素。相邻元素之间用一个空格字符分隔。
数据范围
- 1 ≤ n,m,l ≤ 100
- 0 ≤ 矩阵A、B中的元素 ≤ 10000
输入样例
3 2 3 1 2 0 3 4 5 1 2 1 0 3 2
输出样例
1 8 5 0 9 6 4 23 14
矩阵乘法:要求第一个矩阵(a[n][m])列数与第二个矩阵(b[m][l])行数相同
结果矩阵(c[n][l]):将矩阵Ⅰ的行中每一个数分别与矩阵Ⅱ的列中每一个数相乘并求和
如:c[3][5]=a[3][0]*b[0][3]+a[3][1]*b[1][3]+……