今天我们来看一矩阵相乘的代码。解决你的线代苦恼!!
知识点:
1.只有第一个矩阵的列等于第二个矩阵的行才可以先做乘法。
即,j1 == c2。
2.矩阵相乘的法则:前行×后列。
3.一个c,j * j,m的
矩阵相乘后得到一个c,m的矩阵。
上代码:
#include <stdio.h>
int main() {
int a[100][100], b[100][100], result[100][100];
int i, j, k, m, n, p, q;
printf("请输入第一个矩阵的行数和列数:\n");
scanf("%d %d", &m, &n); //输入第一个矩阵的行,列。
printf("请输入第一个矩阵的元素:\n");
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &a[i][j]); //输入第一个矩阵的元素。
}
}
printf("请输入第二个矩阵的行数和列数:\n");
scanf("%d %d", &p, &q);
printf("请输入第二个矩阵的元素:\n");
for (i = 0; i < p; i++) {
for (j = 0; j < q; j++) {
scanf("%d", &b[i][j]); //输入第二个矩阵的元素
}
}
if (n != p) { //判断是否满足相乘条件
printf("两个矩阵无法相乘!\n");
return 0;
}
for (i = 0; i < m; i++) {
for (j = 0; j < q; j++) {
result[i][j] = 0;
for (k = 0; k < n; k++) { //用来控制后列,前行,的变化
result[i][j] += a[i][k] * b[k][j]; //进行前行成后列的计算。
}
}
}
printf("矩阵乘积:\n");
for (i = 0; i < m; i++) {
for (j = 0; j < q; j++) {
printf("%d ", result[i][j]); //打印结果
}
printf("\n");
}
return 0;
}
我们看一下运行结果:
感谢你的阅读,加油,你值得拥有这世间的所有美好!!