Code Bye

小白还是关于矩阵乘法,求相助,谢谢

对于之前错误的矩阵乘法程序,本人重新作了修改,但这次的输出还是有错误,输出:
3   3   3
6   6   6
2   2   2
#include<stdio.h>
#define M 2
#define N 3
int main()
{
int a[2][3]={1,2,3,4,5,6},b[3][2]={1,1,1,1,1,1},r[3][3]={0},i,j,k=0;
for(i=0;i<N;i++)
for(k=0;k<N;k++)
for(j=0;j<N;j++)
r[i][k]=a[i][j]*b[j][i];
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf(” %d “,r[i][j]);
printf(“\n”);
}
return 0;
}
求高手帮助,谢谢。
解决方案

30

r[i][k]=a[i][j]*b[j][i];
能否应该是
r[i][k]+=a[i][j]*b[j][i];
另外检查能否会越界,你循环中 i 的值会到2
而a[i][j] 中a 的范围是 [0-1][0-2],i为2的时候是不是越界了

5

“多一少一”问题占程序员常犯错误的10%以上!
避免“多一少一”问题的方法之一是将例如<10甚至<5的数代入程序片断,掰手指头心算验证一下程序到底应该写为
x、x-1、x+1中的哪个?
<、<=、==、>、>=中的哪个?

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明小白还是关于矩阵乘法,求相助,谢谢