c:不带*运算符的矩阵乘法

c:不带*运算符的矩阵乘法,c,matrix,C,Matrix,我必须写一个c程序,它不使用*运算符,将两个矩阵相乘。我写了一个代码,但是结果不正确。我认为while循环有点不正确。我希望有人能帮忙。你好,M 这是我的密码: #include<stdio.h> int main() { int matrix1[4][4]; int matrix2[4][4]; int matrix3[4][4]; int a; int b; int c; int sum; int multi = 0; //first

我必须写一个c程序,它不使用*运算符,将两个矩阵相乘。我写了一个代码,但是结果不正确。我认为while循环有点不正确。我希望有人能帮忙。你好,M

这是我的密码:

  #include<stdio.h>

int main()
{
  int matrix1[4][4];
  int matrix2[4][4];
  int matrix3[4][4];
  int a;
  int b;
  int c;
  int sum;
  int multi = 0;

  //first matrix
  for(a=0; a<4; a++)
  {
    for(b=0; b<4; b++)
    {
      scanf("%d", &matrix1[a][b]);
    }
  }
  //second matrix
  for(a=0; a<4; a++)
  {
    for(b=0; b<4; b++)
    {
      scanf("%d", &matrix2[a][b]);
    }
  }
//Multiplication:
  for(a=0; a<=3; a++)
  {
    for(b=0; b<=3; b++)
    {
      sum=0;
      for(c=0; c<=3; c++)
      {
        while(matrix2[c][b]>0)
        {
          multi += matrix1[a][c];
          matrix2[c][b]--;
        }
      }
      sum = sum+multi;
      matrix3[a][b]=sum;
    }
  }

  //result;
  for(a=0; a<4; a++)
  {
    for(b=0; b<4; b++)
    {
      printf(" %d ", matrix3[a][b]);
    }
    printf("\n");
  }
  return 0;
}
#包括
int main()
{
int matrix1[4][4];
int matrix2[4][4];
int matrix3[4][4];
INTA;
int b;
INTC;
整数和;
int-multi=0;
//第一矩阵
对于(a=0;a你有两个主要错误

  • 您必须将
    multi
    重置为
    0
    而不是
    sum
    ,这是没有用的
  • 您必须为Molti应用程序使用一个临时变量。您的代码使用
    matrix2[c][b]-;


  • 想想乘法的定义。“我认为”听起来你需要学习如何使用调试器。知道如何调试程序是非常方便的,也是技能的一部分。算术运算符中的
    *
    运算符,或
    *
    中的:指针/解引用运算符?使用
    matrix2[c][b]--;
    您正在修改矩阵中的值,因此下次该值将为0…将程序划分为功能单元并分别进行测试。您不能使用
    *
    ?然后编写一个函数
    mul(a,b)
    ,并改为使用它。
    #include<stdio.h>
    
    int main(void)
    {
        int matrix1[4][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
        int matrix2[4][4] = { {17,18,19,20},{21,22,23,24},{25,26,27,28},{29,30,31,32}};
        int matrix3[4][4];
        int a;
        int b;
        int c;
        int multi = 0;
    
        //Multiplication:
        for (a = 0; a < 4; a++)
        {
            for (b = 0; b < 4; b++)
            {
                multi = 0;
                for (c = 0; c < 4; c++)
                {
                    int temp = matrix2[c][b];
                    while (temp > 0)
                    {
                        multi += matrix1[a][c];
                        temp--;
                    }
                }
                matrix3[a][b] = multi;
            }
        }
    
        //result;
        for (a = 0; a < 4; a++)
        {
            for (b = 0; b < 4; b++)
            {
                printf("%d\t", matrix3[a][b]);
            }
            printf("\n");
        }
        return 0;
    }
    
    250  260  270  280  
    618  644  670  696  
    986  1028 1070 1112 
    1354 1412 1470 1528