计算两个矩阵乘积(两种方式实现)(C语言)

题目描述

计算两个矩阵的乘积,第一个是 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);
}

注意此方式较为死板,当矩阵不大时可以使用

原创文章 19 获赞 8 访问量 863

猜你喜欢

转载自blog.csdn.net/qq_41519304/article/details/105628657