题目描述
计算两个矩阵的乘积,第一个是 2 * 3,第二个是 3 * 2
输入
输入为两个矩阵,其中一个为 2 * 3 的矩阵,另一个为 3 * 2 的矩阵
输出
一个 2 * 2 的矩阵(每一个数字后都跟一个空格)
样例输入
1 2 33 4 56 78 910 11
样例输出
52 58100 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);}
注意:此方式较为死板,当矩阵不大时可以使用