|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
为什么我这个计算出来的矩阵乘积结果不对啊
#include<stdio.h>
int main()
{
int m,p,n=0,i,j;
int a[2][3]={1,2,3,4,5,6},b[3][2]={1,2,3,4,5,6};
int c[2][2];
for(i=0;i<2;i++)
{
for(n=0;n<2;n++)
{
for(j=0;j<3;j++)
{
c[i][n]+=(a[i][j]*b[j][i]);
}
}
}
for(i=0;i<2;i++)
{
printf("|");
for(j=0;j<3;j++)
{
printf("%2d",a[i][j]);
}
printf("|\n");
}
printf("*\n");
for(i=0;i<3;i++)
{
printf("|");
for(j=0;j<2;j++)
{
printf("%2d",b[i][j]);
}
printf("|\n");
}
printf("=\n");
for(i=0;i<2;i++)
{
printf("|");
for(j=0;j<2;j++)
{
printf("%2d",c[i][j]);
}
printf("|\n");
}
return 0;
}
- c[i][n]+=(a[i][j]*b[j][i]);
复制代码
矩阵乘法的运算你弄错了,不是简单的讲ij反过来就可以了
正确的代码如下
- #include<stdio.h>
- int main()
- {
-
- int m,p,n=0,i,j;
- int a[2][3]={1,2,3,4,5,6},b[3][2]={1,2,3,4,5,6};
- int c[2][2] = {0};
- int lie = 0;
- int hang = 0;
- for(i=0;i<2;i++)
- {
- for(n=0;n<2;n++)
- {
- for(j=0;j<3;j++)
- {
- c[i][n]+=(a[i][j]*b[hang][lie]);
- ++hang;
- }
- ++lie;
- hang = 0;
- }
- lie = 0;
-
- }
- for(i=0;i<2;i++)
- {
- printf("|");
- for(j=0;j<3;j++)
- {
- printf("%2d",a[i][j]);
- }
- printf("|\n");
- }
- printf("*\n");
- for(i=0;i<3;i++)
- {
- printf("|");
- for(j=0;j<2;j++)
- {
- printf("%2d",b[i][j]);
- }
- printf("|\n");
- }
- printf("=\n");
- for(i=0;i<2;i++)
- {
- printf("|");
- for(j=0;j<2;j++)
- {
- printf(" %d",c[i][j]);
- }
- printf("|\n");
- }
- return 0;
- }
复制代码
|
|