题目描述
计算两个矩阵的乘积,第一个是 2 * 3,第二个是 3 * 2
输入
输入为两个矩阵,其中一个为 2 * 3 的矩阵,另一个为 3 * 2 的矩阵
输出
一个 2 * 2 的矩阵(每一个数字后都跟一个空格)
样例输入
1 2 3
3 4 5
6 7
8 9
10 11
样例输出
52 58
100 112
矩阵乘法定义
方法一 (循环实现):
int i,j,k;
int matrix_2_3[2][3];
int matrix_3_2[3][2];
int result[2][2];
printf("请为第一个矩阵赋值:\n");
for(i=0; i<2; i++)
{
for(j=0; j<3; j++)
{
scanf("%d",&matrix_2_3[i][j]);
}
}
printf("请为第二个矩阵赋值:\n");
for(i=0; i<3; i++)
{
for(j=0; j<2; j++)
{
scanf("%d",&matrix_3_2[i][j]);
}
}
//三层循环计算两矩阵相乘
for(i=0; i<2; i++)
{
for(j=0; j<2; j++) //注意条件,这段代码块是为result数组计算并赋值
{
int temp = 0;
for(k=0; k<3; k++)
{
temp += matrix_2_3[i][k] * matrix_3_2[k][j];
}
result[i][j] = temp;
}
}
printf("两矩阵相乘后:\n");
for(i=0; i<2; i++)
{
for(j=0; j<2; j++)
{
printf("%d ",result[i][j]);
}
printf("\n");
}
方法二 (逐个计算):
int a1, b1, c1;
int d1, e1, f1;
int a2, b2;
int c2, d2;
int e2, f2;
int a, b;
int c, d;
while(scanf("%d%d%d%d%d%d",&a1,&b1,&c1,&d1,&e1,&f1)!=EOF&&
scanf("%d%d%d%d%d%d",&a2,&b2,&c2,&d2,&e2,&f2)!=EOF)
{
a = a1*a2 + b1*c2 + c1*e2;
b = a1*b2 + b1*d2 + c1*f2;
c = d1*a2 + e1*c2 + f1*e2;
d = d1*b2 + e1*d2 + f1*f2;
printf("%d %d \n%d %d \n",a ,b ,c ,d);
}
注意:此方式较为死板,当矩阵不大时可以使用