题解 | #矩阵乘法#
矩阵乘法
https://www.nowcoder.com/practice/ebe941260f8c4210aa8c17e99cbc663b
//矩阵循环输入,乘法为m3[i][j] += m1[i][k] * m2[k][j];这里注意m3[i][j]不要写在循环里,会产生堆栈溢出。
#include <stdio.h>
int main() {
int x, y, z, k;
scanf("%d %d %d", &x, &y, &z);
int m1[x][y], m2[y][z], m3[x][z];//为什么不能初始化为{0}
int temp=0;
for(int i =0;i<x;i++)
{
for(int j =0;j<y;j++)
{
scanf("%d",&m1[i][j]);
}
}
for(int i =0;i<y;i++)
{
for(int j =0;j<z;j++)
{
scanf("%d",&m2[i][j]);
}
}
for(int i = 0; i<x; i++)
{
for(int j = 0; j<z; j++)
{
for(int k = 0; k<y; k++)
{
temp += m1[i][k] * m2[k][j]; //这里直接写m3[i][j]会出现堆栈溢出
}
m3[i][j] = temp;
temp = 0;
}
}
for(int i = 0; i<x; i++)
{
for(int j = 0; j<z; j++)
{
printf("%d ", m3[i][j]);
}
printf("\n");
}
return 0;
}

