我正在寻找一种将2x1和2x2矩阵相乘的方法,但我的代码几乎不是每次都能工作,即使它确实有效,我也必须将数字放入代码中。如果我在运行代码时尝试询问数字
,它就不会工作到目前为止,这是我的代码:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
unsigned int a[1][2],b[2][2],c[2][1], i=0, j=0, k=0;
printf("-=Program to Multiply two Matrices=-");
//--------------------------------------------------------------------
printf("\nEnter the values of Matrix A: \n");
for(i=0;i<1;i++)
{
for(j=0;j<2;j++)
{
// printf("\n");
scanf("%d",&a[i][j]);
}
}
printf("\nMatrix A: ");
for(i=0;i<1;i++)
{
printf("\n");
for(j=0;j<2;j++)
{
printf(" ");
printf("%d",a[i][j]);
}
}
//----------------------------------------------------
printf("\nEnter the values of Matrix B: \n");
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
// printf("\n");
scanf("%d",&b[i][j]);
}
}
printf("\nMatrix B: ");
for(i=0;i<2;i++)
{
printf("\n");
for(j=0;j<2;j++)
{
printf(" ");
printf("%d",b[i][j]);
}
}
//--------------------------------------------------------
printf("\n\nMultiplication of matrices A and B is : \n\n");
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
c[i][j]=0;
for(k=0;k<1;k++)
{
c[i][j]=c[i][j]+(a[i][k]*b[k][j]);
}
}
}
printf("\nMatrix C (Resultant Matrix): ");
for(i=0;i<2;i++)
{
printf("\n");
for(j=0;j<1;j++)
{
printf(" ");
printf("%d",c[i][j]);
}
}
printf("\n");
return 0;
}
答案 0 :(得分:1)
矩阵乘法的基本概念第一矩阵列必须等于第二矩阵的行
示例:强>
//有效,因为A的列等于B的行,即2
矩阵A = 1 X 2
矩阵B = 2 X 2//无效(你的情况)
矩阵A = 2 X 1
矩阵B = 2 X 2
答案 1 :(得分:0)
只要涉及矩阵乘法,只有当第一个矩阵的列数与第二个矩阵中的行数匹配时才有可能,因此没有使用这样做并且整个概念是错误的