C++中矩阵相乘

2024-12-30 10:04:54
推荐回答(2个)
回答1:

一个M*N的矩阵与一个N*P的矩阵相乘,得到的结果是M*P矩阵。
例如a: 1 2 3
4 5 6
乘以b: 7 8 9 1
2 3 4 5
6 7 8 9
得到的结果是2*4矩阵。
第一个元素是:1*7+2*2+3*6
即a的第一行乘以b的第一列,以此类推。代码如下:

#include
using namespace std;
#define M 2
#define N 3
#define P 4
int main()
{
int a[M][N]={{1,2,3},{4,5,6}};
int b[N][P]={{7,8,9,1},{2,3,4,5},{6,7,8,9}};
int c[M][P];
int i,j,k;
for(i=0;i for(j=0;j c[i][j]=0;
for(i=0;i for(j=0;j for(k=0;k c[i][j]+=a[i][k]*b[k][j];
cout<<"矩阵相乘结果是:"< for(i=0;i for(j=0;j cout< cout< }
//system("pause");
return 0;
}

回答2:

一个M*N的矩阵与一个N*P的矩阵相乘,得到的结果是M*P矩阵。
例如a:
1
2
3
4
5
6
乘以b:
7
8
9
1
2
3
4
5
6
7
8
9
得到的结果是2*4矩阵。
第一个元素是:1*7+2*2+3*6
即a的第一行乘以b的第一列,以此类推。代码如下:
#include
using
namespace
std;
#define
M
2
#define
N
3
#define
P
4
int
main()
{
int
a[M][N]={{1,2,3},{4,5,6}};
int
b[N][P]={{7,8,9,1},{2,3,4,5},{6,7,8,9}};
int
c[M][P];
int
i,j,k;
for(i=0;ifor(j=0;jc[i][j]=0;
for(i=0;ifor(j=0;jfor(k=0;kc[i][j]+=a[i][k]*b[k][j];
cout<<"矩阵相乘结果是:"<for(i=0;ifor(j=0;jcout<";
cout<}
//system("pause");
return
0;
}