MATRIX乘法程序中的大胡啸答案

时间:2018-02-08 05:47:47

标签: multiplication

这是一个程序,可以将数学中的2个矩阵相乘,但不知道为什么,我得到像" -1282230"或一些奇怪的数字。我想知道是什么导致它,我怎么能解决它?谢谢!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

int main()

{

int m[3][3],m2[3][3],i,je,k,ans[3][3],sum;

//从用户那里获取matrix1的输入

printf(&#34;输入第一个矩阵&#34的数字;);

je=0;

for(i=0;i<3;i++){

        printf(" for row %d\n",i+1);

    for(je=0;je<3;je++){

          scanf("%d",&m[i][je]);
    }

}

// taking inputs from the user for matrix2    

printf("Enter the numbers for second matrix");

je=0;

for(i=0;i<3;i++){

    printf(" for row = %d\n",i+1);

for(je=0;je<3;je++){

          scanf("%d",&m2[i][je]);
    }


}

// multiplication OR MATRIX CMS HERE;

sum = 0;

for(k=0;k<9;k++){

for(i=0;i<3;i++){

for(je=0;je<3;je++){


        sum =  m[k][je] * m2[je][i];

        ans[i][je] = sum;
    }

}

k++;

}

// it ENDS;

puts("ANSWER IS:: \n");

// Displaying answer, matrix; 

for(i=0;i<3;i++){

    for(je=0;je<3;je++){

        printf("%d\t",ans[i][je]);

    }

    printf("\n");

}


return 0;
}

1 个答案:

答案 0 :(得分:0)

这是一个有效的解决方案。你的代码的一个问题是你不能在每次乘法后将总和设置为0.

#include <stdio.h>   

int main() {   
    int m, n, p, q, c, d, k, sum = 0;   int first[10][10], second[10][10], multiply[10][10];

    printf("Enter number of rows and columns of first matrix\n");   scanf("%d%d", &m, &n);   printf("Enter elements of first matrix\n");
    for (c = 0; c < m; c++)
    for (d = 0; d < n; d++)
      scanf("%d", &first[c][d]);
    printf("Enter number of rows and columns of second matrix\n");   scanf("%d%d", &p, &q);
    if (n != p)
    printf("The matrices can't be multiplied with each other.\n");   else   {
    printf("Enter elements of second matrix\n");

    for (c = 0; c < p; c++)
      for (d = 0; d < q; d++)
        scanf("%d", &second[c][d]);

    for (c = 0; c < m; c++) {
      for (d = 0; d < q; d++) {
        for (k = 0; k < p; k++) {
          sum = sum + first[c][k]*second[k][d];
        }

        multiply[c][d] = sum;
        sum = 0;
      }
    }

    printf("Product of the matrices:\n");

    for (c = 0; c < m; c++) {
      for (d = 0; d < q; d++)
         printf("%d\t", multiply[c][d]);
         printf("\n");
        }   
    }
    return 0; }