title: 2x2 Matrix Multiplication
body: <p>I'm trying to write a program to calculate the sum and product of two matrices, but I can't get it the product to work.  The sum is fine.  I am using Visual Studio.</p>
  
  <p>Here's my program:</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  #include &lt;stdlib.h&gt;
  
  int main()
  {
      float a[2][2], b[2][2], c[2][2], d[2][2], sum;
      int i,j,k;
  
      for(i = 0; i &lt; 2; i++) {  
        for(j = 0; j &lt; 2; j++) {  
          d[i][j] = 0;
        }
      }
  
      printf("Enter the elements of 1st matrix\n");
      /*
       * Reading two dimensional Array with the help of two for loop. If there
       * was an array of 'n' dimension, 'n' numbers of loops are needed for
       * inserting data to array.
       */   
      for (i = 0; i &lt; 2; ++i)      
        for (j = 0; j &lt; 2; ++j) {
          printf("Enter a%d%d: ", i + 1, j + 1);
          scanf("%f", &amp;a[i][j]);
        }
  
      printf("\nEnter the elements of 2nd matrix\n");
      for (i = 0; i &lt; 2; ++i)
        for (j = 0; j &lt; 2; ++j) {
          printf("Enter b%d%d: ", i + 1, j + 1);
          scanf("%f", &amp;b[i][j]);
        }
  
      printf("\nMatrix 1:\n");
      for (i = 0; i &lt; 2; ++i)
        for(j = 0; j &lt; 2; ++j) {
          printf("%.1f\t", a[i][j]);  
          if (j == 1)             /* To display matrix sum in order. */
            printf("\n");
        }
      printf("\nMatrix 2:\n");
  
      for(i = 0; i &lt; 2; ++i)
        for(j = 0; j &lt; 2; ++j) {
          printf("%.1f\t", b[i][j]);  
          if (j == 1)             /* To display matrix sum in order. */
             printf("\n");
        }
  
      for (i = 0; i &lt; 2; ++i)
        for(j = 0; j &lt; 2; ++j) {
          /* Writing the elements of multidimensional array using loop. */
          c[i][j]=a[i][j]+b[i][j];  /* Sum of corresponding elements of two arrays. */
        }
      printf("\nSum Of Matrix:\n");
      for (i = 0; i &lt; 2; ++i)
        for(j = 0; j &lt; 2; ++j) {
          printf("%.1f\t",c[i][j]);  
          if (j == 1)             /* To display matrix sum in order. */
            printf("\n");
        }
  
      for(i = 0 ; i &lt; 2 ; i++) {  
        for(j = 0 ; j &lt; 2 ; j++) {  
          sum = 0 ;  
          for(k = 0 ; k &lt; 2 ; k++) {  
            sum = sum + a[i][k] * b[k][j];
            printf("a: %d; b: %d\n", a[i][k], b[k][j]);
            printf("%d", sum);
          }
          d[i][j]=sum;
        }  
      }  
      printf("\nThe multiplication matrix is : \n\n") ;  
      for(i = 0; i &lt; 2; i++) {  
        for(j = 0; j &lt; 2; j++) {  
          printf("%d \t", d[i][j]) ;  
        }  
        printf("\n") ;  
      } 
  
      system("PAUSE");
      return 0;
  }
  </code></pre>
  
  <p>Here is the output:</p>
  
  <pre><code>Matrix 1:
  1.0     2.0
  3.0     4.0
  
  Matrix 2:
  5.0     6.0
  7.0     8.0
  
  Sum Of Matrix:
  6.0     8.0
  10.0    12.0
  a: 0; b: 1072693248
  0a: 0; b: 1073741824
  0a: 0; b: 1072693248
  0a: 0; b: 1073741824
  0a: 0; b: 1074266112
  0a: 0; b: 1074790400
  0a: 0; b: 1074266112
  0a: 0; b: 1074790400
  0
  The multiplication matrix is :
  
  0       0
  0       0
  </code></pre>
  
  <p>I can't see where the problem is with both matrices A and B.</p>