# C Program to Subtract Two Matrices

« Previous Program Next Program »

In this article, you will learn and get code on matrix subtraction in C. There are two programs available here:

• 3x3 Matrix Subtraction
• Matrix Subtraction of Desired Size

### How Matrix Subtraction gets Performed ?

There is a separate tutorial on it, that is, Matrix Subtraction. There in very short time, you will get the complete knowledge on how a matrix subtraction gets performed. But for now the subtraction of any two 3*3 matrix gets performed like:

`matSub[i][j] = mat1[i][j] - mat2[i][j];`

where i and j indicates row and column. On putting the value of i and j with 0:

`matSub = mat1 - mat2;`

Above statement shows, the first number (or element) of second matrix gets subtracted from the first number of first matrix and initialized as the first element of third matrix (that holds the subtraction result of both the matrix).

Note - The number at 0th row and 0th column of first matrix gets subtracted with number at 0th row and 0th column of second matrix. And its subtraction result gets initialized as the the value of 0th row and 0th column of resultant matrix. Same subtraction process applied for all the elements

## 3*3 Matrix Subtraction in C

To subtract two matrices in C programming, you have to ask from user to enter the two 3*3 matrices. That is, enter 9 elements for first matrix and then 9 elements for second matrix. Now second matrix from first gets subtracted. Print the subtraction result on output as shown in the program given below.

```#include<stdio.h>
#include<conio.h>
int main()
{
int mat1, mat2, matSub, i, j;
printf("Enter First 3*3 Matrix Elements: ");
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
scanf("%d", &mat1[i][j]);
}
printf("Enter Second 3*3 Matrix Elements: ");
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
scanf("%d", &mat2[i][j]);
}
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
matSub[i][j] = mat1[i][j] - mat2[i][j];
}
printf("\nThe Subtraction Result is:\n");
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
printf("%d  ", matSub[i][j]);
printf("\n");
}
getch();
return 0;
}```

This program was build and run under Code::Blocks IDE. Here is its sample run:

Now enter any 9 numbers for first matrix and then 9 numbers for second matrix. Then press `ENTER` key to see the subtraction of two given matrix. The subtraction gets performed in a way that the first matrix gets subtracted from second one:

If you enters 9 elements for first matrix say mat1[][]. Then these elements stored in a way that:

• First element gets stored at mat1
• Second element gets stored at mat
• Third element gets stored at mat1
• Fourth element gets stored at mat1
• Fifth element gets stored at mat1
• and so on

Same happened with second matrix. Now the subtraction of two matrix using for loop goes like:

• The outer for loop evaluates or executes 3 times
• And at every execution of outer for loop, inner for loop executes 3 times
• So at first execution of outer for loop, inner for loop executes 3 times. Therefore:
1. matSub = mat1 - mat2
2. matSub = mat1 - mat2
3. matSub = mat1 - mat2
• gets executed. At second execution of outer for loop, inner for loop again executes 3 times. Therefore again:
1. matSub = mat1 - mat2
2. matSub = mat1 - mat2
3. matSub = mat1 - mat2
• gets executed. Same things happened with third execution:
1. matSub = mat1 - mat2
2. matSub = mat1 - mat2
3. matSub = mat1 - mat2
• In this way, the matrix matSub[][] holds the subtraction result of both the given matrix
• Now print the value of matSub[][]

Here  means very first element corresponding to the matrix written before it. And  means second element,  means fourth element,  means last element

To learn about the working of for loop, then refer to the separate tutorial on for Loop in C.

The for loop works like, first and only once its initialization part executes. Then checks the condition, if condition evaluates to be true, then program flow executes all the statement present as the block of this for loop. Then update the loop variable or program flow goes to update part. After updating the value, checks the condition. If it again evaluates to be true, then program flow again does the same job of executing its block of code. The process continues until the condition evaluates to be false

## Subtract Two Matrices of Desired Size

This program has an extra feature. That is, it allows the user to define the size for both the matrices.

```#include<stdio.h>
#include<conio.h>
int main()
{
int rowSize1, colSize1, rowSize2, colSize2, i, j;
int mat1, mat2, matSub;
printf("Enter Row and Column Size of First Matrix: ");
scanf("%d%d", &rowSize1, &colSize1);
printf("Enter Row and Column Size of Second Matrix: ");
scanf("%d%d", &rowSize2, &colSize2);
if(rowSize1==rowSize2 && colSize1==colSize2)
{
printf("\nEnter First %d*%d Matrix Elements: ", rowSize1, colSize1);
for(i=0; i<rowSize1; i++)
{
for(j=0; j<colSize1; j++)
scanf("%d", &mat1[i][j]);
}
printf("Enter Second %d*%d Matrix Elements: ", rowSize2, colSize2);
for(i=0; i<rowSize2; i++)
{
for(j=0; j<colSize2; j++)
scanf("%d", &mat2[i][j]);
}
printf("\nThe Subtraction Result is:\n");
for(i=0; i<rowSize1; i++)
{
for(j=0; j<colSize1; j++)
{
matSub[i][j] = mat1[i][j] - mat2[i][j];
printf("%d  ", matSub[i][j]);
}
printf("\n");
}
}
else
printf("\nSubtraction can't be Performed!");
getch();
return 0;
}```

Here is its sample run:

Note = If size mismatched, then subtraction can't be performed. That is, if either row size of first matrix is not equal to row size of second matrix or column size of first matrix is not equal to column size of second matrix, then subtraction can't be performed.

In above program, at the time of subtraction, we have printed the element after each subtraction.

#### Same Program in Other Languages

C Online Test

« Previous Program Next Program »