L1-048. 矩阵A乘以B

本文提供了一个使用C语言实现的简单矩阵乘法程序。该程序首先读取两个矩阵的维度,并检查它们是否适合进行乘法操作。如果矩阵可以相乘,则程序继续接收矩阵元素并计算结果矩阵。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

水题不多说,直接上代码:
#include<stdio.h> using namespace std; int main() { int a[101][101]; int b[101][101]; int m,n; int x,y; scanf("%d%d",&m,&n); for(int i=0;i<m;i++) for(int j=0;j<n;j++) scanf("%d",&a[i][j]); scanf("%d%d",&x,&y); for(int i=0;i<x;i++) for(int j=0;j<y;j++) scanf("%d",&b[i][j]); if(n!=x) { printf("Error: %d != %d\n",n,x); } else { printf("%d %d\n",m,y); for(int i=0;i<m;i++) { for(int j=0;j<y;j++) { int sum=0; for(int k=0;k<n;k++) sum+=a[i][k]*b[k][j]; if(j<y-1) printf("%d ",sum); else printf("%d\n",sum); } } } return 0; }

 

转载于:https://www.cnblogs.com/nr1999/p/8603915.html

### 矩阵A乘以B的实现 #### 使用C语言实现矩阵乘法 在C语言中,可以通过嵌套循环来逐元素计算两个矩阵相乘的结果。对于两个矩阵 \( A \) 和 \( B \),如果 \( A \) 是一个 \( m \times n \)矩阵而 \( B \) 是一个 \( n \times p \)矩阵,则两者可以相乘得到一个新的 \( m \times p \) 维度的矩阵 \( C \)[^1]。 下面是具体的代码示例: ```c #include <stdio.h> void matrixMultiply(int a[][3], int b[][3], int c[][3], int rowA, int colA, int colB) { for (int i = 0; i < rowA; ++i) { // 行遍历 for (int j = 0; j < colB; ++j) { // 列遍历 c[i][j] = 0; for (int k = 0; k < colA; ++k) { // 中间维度遍历 c[i][j] += a[i][k] * b[k][j]; } } } } // 测试函数 int main() { int a[2][3] = {{1, 2, 3}, {4, 5, 6}}; int b[3][2] = {{7, 8}, {9, 10}, {11, 12}}; int c[2][2]; matrixMultiply(a, b, c, 2, 3, 2); printf("Result Matrix:\n"); for (int i = 0; i < 2; ++i) { for (int j = 0; j < 2; ++j) { printf("%d ", c[i][j]); } printf("\n"); } return 0; } ``` 这段程序定义了一个 `matrixMultiply` 函数用于完成矩阵间的乘法运算,并通过三重循环实现了标准的矩阵乘法规则。 #### 并行化处理——基于MPI的 Cannon 算法 当涉及到大规模数据集时,采用布式内存环境下的消息传递接口(MPI)技术能够显著提升性能效率。特别是针对大型稀疏矩阵的操作,利用像 Cannon 这样的高效并行算法显得尤为重要[^2]。 该算法的核心在于合理安排各个进程所持有的子矩阵及其相对位置关系,在每次迭代过程中调整这些局部区域的位置以便于后续阶段可以直接进行本地化的向量内积计算而不必频繁通信交换数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值