我的矩阵乘法总是出问题!

来源:百度知道 编辑:UC知道 时间:2024/05/22 03:18:31
这是我编得一个程序:
#include<iostream>
using namespace std;
int c[3][5];
int main()
{
int a[3][4]={
{1,2,3,4},
{7,8,9,5},
{7,1,5,9}};
int b[4][5]={
{4,8,9,7,1},
{8,6,5,7,3},
{1,8,1,6,8},
{8,9,6,5,7}};
for(int i=0;i<3;++i)
for(int j=0;i<5;++j)
for(int k=0;k<5;++k)
c[i][j]+=a[i][k]*b[k][j];

for(int i=0;i<3;++i)
for(int j=0;i<5;++j)
cout<<c[i][j]<<" ";

system("pause");
return 0;
}

我用的是dev c++ 这个软件!运行时就说内存不能为read,请大家帮忙!!!
不行呀,k的值改成小于4也不行,我有个地方打错字了,j那层循环里,i应该成j 还有为什么是++i,不是i++呀?

算法有问题,这里:
c[i][j]+=a[i][k]*b[k][j];
当k=4时,b[k][j]访问越界

#include <stdio.h>
int c[3][5] = {0};
int main()
{
int a[3][4]={
{1,2,3,4},
{7,8,9,5},
{7,1,5,9}};
int b[4][5]={
{4,8,9,7,1},
{8,6,5,7,3},
{1,8,1,6,8},
{8,9,6,5,7}};

for(int i=0;i<3;i++)
for(int j=0;j<5;j++)
for(int k=0;k<4;k++)
{
c[i][j]+=a[i][k]*b[k][j];
}

for(int i=0;i<3;++i)
{
for(int j=0;j<5;++j)
printf("%d,", c[i][j]);
printf("\n");
}

return 0;
}

在你那个程序里 i++ 和++i一样效果
i++表示用完i再把i自加1 ++i表示自加1后再用i