婷猪

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
 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]+……

posted on 2021-12-05 11:55  婷猪  阅读(521)  评论(0)    收藏  举报