(c语言)二维数组a(2行3列)表示矩阵A,二维数组b(3行2列)表示矩阵B,计算矩阵A和矩阵B的乘积(2行2列)
//用c语言实现二维数组a(2行3列)表示矩阵A,二维数组b(3行2列)表示矩阵B,计算矩阵A和矩阵B的乘积(2行2列)
/*
B1 B4
A1 A2 A3 A1*B1+A2*B2+A3*B3 A1*B4+A2*B5+A3*B6
* B2 B5 =
A4 A5 A6 A4*B1+A5*B2+A6*B3 A4*B4+A5*B5+A6*B6
B3 B6
*/
#include <stdio.h>
int main()
{
int a[2][3];//定义一个2行3列的数组表示矩阵A
int b[3][2];//定义一个3行2列的数组表示矩阵B
int c[2][2];//定义一个2行2列的数组表示矩阵C用来存放矩阵A与矩阵B的乘积
int i, j, k;
for (i = 0; i < 2; i++) //输入第一个矩阵的数
{
for (j = 0; j < 3; j++)
{
scanf("%d",&a[i][j]);
}
}
for (i = 0; i < 3; i++) //输入第二个矩阵的数
{
for (j = 0; j < 2; j++)
{
scanf("%d",&b[i][j]);
}
}
//计算结果步骤
//c[0][0] = a[0][0] * b[0][0] + a[0][1] * b[1][0] + a[0][2] * b[2][0];
//c[0][1] = a[0][0] * b[0][1] + a[0][1] * b[1][1] + a[0][2] * b[2][1];
//c[1][0] = a[1][0] * b[0][0] + a[1][1] * b[1][0] + a[1][2] * b[2][0];
//c[1][1] = a[1][0] * b[0][1] + a[1][1] * b[1][1] + a[1][2] * b[2][1];
for (i = 0; i < 2; i++)
{
for (j = 0; j < 2; j++)
{
for (k = 0; k < 3; k++)
{
c[i][j] += a[i][k] * b[k][j]; //计算结果
}
}
}
for (i = 0; i < 2; i++)
{
for (j = 0; j < 2; j++)
{
printf("%d", c[i][j]); //输出结果
}
printf("\n");
}
return 0;
}