请输入两个矩阵,用循环结构写矩阵点乘。例如有两个矩阵A和B,它们的维度分别为(m,n)和(n,p),矩阵点乘的结果C的维度为(m,p)
时间: 2023-05-27 13:02:59 浏览: 74
输入矩阵A:
1 2 3
4 5 6
输入矩阵B:
7 8
9 10
11 12
两个矩阵点乘结果为:
58 64
139 154
代码实现:
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int m, n, p;
int A[MAX_SIZE][MAX_SIZE], B[MAX_SIZE][MAX_SIZE], C[MAX_SIZE][MAX_SIZE];
// 输入矩阵A和B的维度
printf("请输入矩阵A和B的维度(以空格分隔):");
scanf("%d %d %d", &m, &n, &p);
// 输入矩阵A的值
printf("请输入矩阵A的值:\n");
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &A[i][j]);
}
}
// 输入矩阵B的值
printf("请输入矩阵B的值:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < p; j++) {
scanf("%d", &B[i][j]);
}
}
// 矩阵点乘,遍历结果矩阵C并计算元素值
for (int i = 0; i < m; i++) {
for (int j = 0; j < p; j++) {
C[i][j] = 0;
for (int k = 0; k < n; k++) {
C[i][j] += A[i][k] * B[k][j];
}
}
}
// 输出结果矩阵C
printf("两个矩阵点乘结果为:\n");
for (int i = 0; i < m; i++) {
for (int j = 0; j < p; j++) {
printf("%d ", C[i][j]);
}
printf("\n");
}
return 0;
}
阅读全文