Here's a C program with output and explanation to find smallest element of given matrix using Nested Loops and For Loops.

# include <stdio.h> # include <conio.h> void main() { int mat[10][10] ; int i, j, row, col, big; clrscr() ; printf("Enter the order of the matrix : ") ; scanf("%d %d", &row, &col) ; printf("\nEnter the elements of the matrix : \n\n") ; for(i = 0 ; i < row ; i++) for(j = 0 ; j < col ; j++) scanf("%d", &mat[i][j]) ; big = mat[0][0] ; for(i = 0 ; i < row ; i++){ for(j = 0 ; j < col ; j++){ if(mat[i][j] > big) big= mat[i][j] ; } } printf("\nThe biggest element in the matrix is : %d\n\n",big); getch() ; }

###
**Output of above program -**

Enter the order of the matrix : 2 2Enter the elements of the matrix :

4 5

1 2

The smallest element in the matrix is : 5

### Explanation of above program -

In this program, we have a matrix

*mat*of maximum size 10 x 10. The variables*row and col*holds the value of number of rows and columns of matrix respectively and the variable big contains the value of biggest element of the matrix*mat*.
First
the program asks the user to enter the order of the matrix and then
using a nested for loops the matrix is populated. Now using the code -

*"big = mat[0][0]"*we are setting a benchmark for the rest of the calculation.
Using
the next nested loop, we're now calculating the biggest element in the
matrix. Lets understand this process with an example -

####
Working of Nested For Loop -

Suppose, row = col = 2 and the values in
the matrix are same as shown in the output. Also the initial value of
big would be mat[0][0] or in this case it'd be equal to 4. In this
case, the outer for loop will run for i = 0 to i < row. Similarly,
inner for loop will run for j = 0 to j < col.

**When i = 0 -**

- The value of j is also 0.
- Next, using IF condition the program checks whether the current
matrix element that we're checking to be the biggest is bigger than
the value already stored in the variable
*big*. If the current element is indeed bigger than the variable*big*, the program updates the value of variable big with this current matrix element. Otherwise the program continues with other values in the matrix. - So initially big = 4 and i = j = 0, so, in the first iteration the IF condition becomes false as
*mat[i][j] > big*or mat[0][0] > 4 is not true. So the inner loop continues incrementing the value of j to 1. - Now, the value of j is 1.
- Now, mat[0][1] = 5 and big = 4. So 5 > 4 which is true. So now the value of big is updated to mat[0][1] i.e. now big = 5 and the inner loop continues incrementing the value of j to 2 making the looping condition for the inner loop false. So the inner for loop quits..
- Now the value of i is incremented to 1.

**When i = 1 -**

- The value of j is 0.
- Now, mat[1][0] = 1 and big = 5. So 1 > 5 which is false. So the inner loop continues incrementing the value
of j to 1.

- Now j = 1, so mat[1][1] = 2 and big = 5. So 2 > 5 which is false. So the inner loop continues incrementing the value of j to 2 making the looping condition for the inner loop false. So the inner for loop quits.
- Now the value of i is incremented to 2 making the looping condition for the outer loop also false. So the outer for loop also quits.

After this nested loop the variable

*big*contains the smallest value in the matrix.