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]+……
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】