实现m*n矩阵与n*k矩阵的乘法
时间: 2023-12-31 17:04:14 浏览: 75
假设有一个m行n列的矩阵A和一个n行k列的矩阵B,它们的乘积C为一个m行k列的矩阵。
C的每个元素C[i][j]的值为A的第i行和B的第j列对应元素乘积之和。
具体实现可以使用两个嵌套的for循环,依次计算C的每个元素。代码如下:
```python
def matrix_multiply(A, B):
m = len(A)
n = len(A[0])
k = len(B[0])
C = [[0] * k for i in range(m)]
for i in range(m):
for j in range(k):
for l in range(n):
C[i][j] += A[i][l] * B[l][j]
return C
```
其中,m、n、k分别为A、B、C矩阵的行列数,C的初始值为0矩阵。在计算C[i][j]时,需要对A的第i行和B的第j列进行乘积累加,这里使用了一个内层循环,循环变量为l,表示A和B对应元素的列数。
相关问题
实现m*n矩阵与n*k矩阵的乘法用C语言实现
#include <stdio.h>
int main() {
int m, n, k;
printf("Enter the dimensions of the matrices: ");
scanf("%d %d %d", &m, &n, &k);
int A[m][n], B[n][k], C[m][k];
printf("Enter the elements of matrix A: \n");
for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
scanf("%d", &A[i][j]);
printf("Enter the elements of matrix B: \n");
for(int i=0; i<n; i++)
for(int j=0; j<k; j++)
scanf("%d", &B[i][j]);
// Multiply matrices A and B
for(int i=0; i<m; i++) {
for(int j=0; j<k; j++) {
C[i][j] = 0;
for(int x=0; x<n; x++)
C[i][j] += A[i][x] * B[x][j];
}
}
// Print the resulting matrix C
printf("The result of matrix multiplication: \n");
for(int i=0; i<m; i++) {
for(int j=0; j<k; j++)
printf("%d ", C[i][j]);
printf("\n");
}
return 0;
}
请用c语言实现并写出以下代码: 请实现m*n矩阵与q*k矩阵的乘法。
```
#include <stdio.h>
int main()
{
int m, n, q, k;
printf("请输入第一个矩阵的行数m和列数n:");
scanf("%d%d", &m, &n);
printf("请输入第二个矩阵的行数q和列数k:");
scanf("%d%d", &q, &k);
if (n != q) {
printf("错误:第一个矩阵的列数和第二个矩阵的行数不一致!\n");
return 1;
}
int a[m][n], b[q][k], c[m][k];
printf("请输入第一个矩阵的元素:\n");
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &a[i][j]);
}
}
printf("请输入第二个矩阵的元素:\n");
for (int i = 0; i < q; i++) {
for (int j = 0; j < k; j++) {
scanf("%d", &b[i][j]);
}
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < k; j++) {
int sum = 0;
for (int p = 0; p < n; p++) {
sum += a[i][p] * b[p][j];
}
c[i][j] = sum;
}
}
printf("两个矩阵的乘积为:\n");
for (int i = 0; i < m; i++) {
for (int j = 0; j < k; j++) {
printf("%d ", c[i][j]);
}
printf("\n");
}
return 0;
}
```