小白关于矩阵的乘法,求相助

C语言 码拜 7年前 (2017-04-15) 889次浏览
程序如下,本人想实现二维矩阵的乘法,里面初始化数据都为零,但是却输出了”0 0 0 0 8 0 4203905 0 4202896“,问一下为什么会输出非零实数,求高手解答,谢谢。
#include<stdio.h>
#define M 3
#define N 2
int main()
{
int a[M][N]={0,0,0,0,0,0},b[N][M]={0,0,0,0,0,0},r[M][M],i,j,k=0;
for(i=0;i<M;i++)
{
for(k=0;k<M;k++)
for(j=0;j<N;j++)
r[i][k]+=a[i][j]*b[j][i];
}
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
printf(” %d “,r[i][j]);
}
return 0;
}
解决方案

10

原因是你的r 中不是全部的数都初始化了
你初始的部分只是:
for(k=0;k<M;k++)
for(j=0;j<N;j++)
这里一个唯度上是M,另一个是N
但r的大小两个维度上都是M

5

r[i][k]+=a[i][j]*b[j][k];

10

r[i][k] += a[i][j] * b[j][i];这句你多了个+号
应该是r[i][k] = a[i][j] * b[j][i];

5

r[M][M]初始化

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明小白关于矩阵的乘法,求相助
喜欢 (0)
[1034331897@qq.com]
分享 (0)