当前位置: 代码迷 >> C语言 >> 矩阵相乘
  详细解决方案

矩阵相乘

热度:535   发布时间:2007-07-06 08:14:50.0
矩阵相乘

void jc(int *a,int *b,int *c,int m,int n)
{int i,j,k,x,y,l;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
for(k=0;k<m;k++)
*(c+i*n+j)+=*(a+m*i+k)*(*(b+n*k+j));

}
main()
{int a[4][2],b[2][4],c[2][2]={0},i,j;
printf("input a:\n");
for(i=0;i<4;i++)
for(j=0;j<2;j++)
scanf("%d",&a[i][j]);
printf("input b:\n");
for(i=0;i<2;i++)
for(j=0;j<4;j++)
scanf("%d",&b[i][j]);
jc(&a[0][0],&b[0][0],&c[0][0],4,2);
for(i=0;i<2;i++)
{for(j=0;j<2;j++)
printf("%d ",c[2][2]);
printf("\n");
}
}
矩阵相乘,这个程序得不出正确结果 ,请帮忙找一下原因

搜索更多相关的解决方案: 矩阵  相乘  

----------------解决方案--------------------------------------------------------
用一维数组存储是个不错的想法.

你的程序就是:n*m * m*k 的结果应该是n*k的,但你写的是错的.明显变成2*2的了.
其实是有结果返回的.
----------------解决方案--------------------------------------------------------
回复:(nuciewth)用一维数组存储是个不错的想法.你的...
我还是不太明白,可以给我具体说说吗,十分感谢
----------------解决方案--------------------------------------------------------
就是结果应该得到4*4的矩阵,而你却是2*2的.
函数调用时候的问题.
----------------解决方案--------------------------------------------------------
回复:(nuciewth)就是结果应该得到4*4的矩阵,而你却...

明白了,谢谢

[此贴子已经被作者于2007-7-6 9:25:21编辑过]


----------------解决方案--------------------------------------------------------
回复:(nuciewth)就是结果应该得到4*4的矩阵,而你却...
void jucheng(int a[2][4],int b[4][2],int c[2][2])
{int i,j,k;
for(i=0;i<2;i++)
for(j=0;j<2;j++)
for(k=0;k<4;k++)
c[i][j]+=a[i][k]*b[k][j];
}
main()
{int a[2][4],b[4][2],c[2][2]={0},i,j;
for(i=0;i<2;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
for(i=0;i<4;i++)
for(j=0;j<2;j++)
scanf("%d",&a[i][j]);
jucheng(a,b,c);
for(i=0;i<2;i++)
{for(j=0;j<2;j++)
printf("%d ",a[i][j]);
printf("\n");
}
}
这个结果也得不出正确的结果 ,很闷

----------------解决方案--------------------------------------------------------
全部是a .
----------------解决方案--------------------------------------------------------
  相关解决方案