OverIQ.com

C Program to multiply two matrices

Last updated on July 27, 2020


The following is a C program to multiply two matrices:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/******************************************
 Program to multiply two matrices
******************************************/

#include<stdio.h> // include stdio.h
#define ROW1 2
#define COL1 2
#define ROW2 COL1
#define COL2 3

int main()
{
    int i, j, arr1[ROW1][COL1],
              arr2[ROW2][COL2],
              arr3[ROW1][COL2];

    printf("Enter first matrix (%d x %d): \n", ROW1, COL1);

    // input first matrix
    for(i = 0; i < ROW1; i++)
    {
        for(j = 0; j < COL1; j++)
        {            
            scanf("%d", &arr1[i][j]);
        }                
    }

    printf("\nEnter second matrix (%d x %d): \n", ROW2, COL2);

    // input second matrix
    for(i = 0; i < ROW2; i++)
    {
        for(j = 0; j < COL2; j++)
        {            
            scanf("%d", &arr2[i][j]);
        }                
    }

    printf("\narr1 * arr2 = ");        

    // multiply two matrices
    for(i = 0; i < ROW1; i++)
    {
        for(j = 0; j < COL2; j++)
        {
            arr3[i][j] = 0;

            for(int k = 0; k < COL1; k++)
            {
                arr3[i][j] += arr1[i][k] * arr2[k][j];            
            }                                    
        }                

        printf("\n");
    }       

    // print the result
    for(i = 0; i < ROW2; i++)
    {
        for(j = 0; j < COL2; j++)
        {
            printf("%d ", arr3[i][j]);
        }              
        printf("\n");
    }

    // signal to operating system everything works fine
    return 0;
}

Expected Output:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
Enter first matrix (2 x 2): 
2 3
4 5

Enter second matrix (2 x 3): 
6 4 2
7 8 9

arr1 * arr2 =

33 32 31 
59 56 53

How it works #

Two matrices can be multiplied only if the number of columns in the first matrix is equal to the number of rows in the second matrix.

Let, A be the matrix of size 2x3 and B be the matrix of size 3x2, Then, A * B is given by:

\[
\left(\begin{array}{ccc}a & b & c \\d & e & f\end{array}\right) * \left(\begin{array}{cc}g & h\\k &l \\o & p \end{array}\right) = \left(\begin{array}{cc}a*g + b * k + c * o &a*h + b * l + c * p \\d*g + e * k + f * o &d*h + e * l + f * p\end{array}\right)
\]

In general, If matrix A is of size m x n and B is of size n x p, then the size of matrix A * B will be m x p.

Here is how the program works:

  1. The first for loop (lines 20-26) asks the user to input the first matrix.
  2. The second for loop (lines 31-37) asks the user to input the second matrix.
  3. The third for loop (lines 42-55) multiplies the matrices.
  4. The fourth for loop (lines 58-65) prints the result of matrix multiplication.

Recommended Reading: