Matrix 如何在c语言中乘法不同大小的矩阵

Matrix 如何在c语言中乘法不同大小的矩阵,matrix,matrix-multiplication,multiplication,Matrix,Matrix Multiplication,Multiplication,我正在寻找一种将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 Mult

我正在寻找一种将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;  
}  
#包括
#包括
内部主(空)
{  
无符号整数a[1][2],b[2][2],c[2][1],i=0,j=0,k=0;
printf(“-=两个矩阵相乘的程序=-”;
//--------------------------------------------------------------------  
printf(“\n输入矩阵A的值:\n”);

对于(i=0;i矩阵乘法的基本概念是第一个矩阵列必须等于第二个矩阵的

示例:

//有效,因为A列等于B行,即2

矩阵A=1 X2
矩阵B=2x2

//无效(您的案例)
矩阵A=2 X1
矩阵B=2x2


就矩阵乘法而言,只有当第一个矩阵的列数与第二个矩阵的行数相匹配时,才有可能进行乘法运算,所以这样做没有用,而且整个概念都是错误的

为什么不发布您的代码呢?等效值是否也成立?即第一个矩阵行=第二个矩阵列N