In the series of learning flow control statements we learned to iterate set of statements using loop. Here in this post we learn to write one loop inside other.
In programming there exists situations where you need to iterate single or a set of repetitive statement for a number of times. For example consider an example of a train. In train there are n compartments and each compartment has m seats. Ticket checker will check ticket for each passenger for each compartment. You can write the above statement in programming as.
for each compartment in compartments
{
for each seat in compartment
{
check ticket of passenger on seat
}
}
Such situations in C programming are handled using nested loops.
C programming language supports nesting of one loop inside another. You can define any number of loop inside another loop. You can also have any number of nesting level. You can put any type of loop in another type. For example, you can write a for
loop inside while
loop, while
inside another while
etc.
Syntax of nested loop
outer_loop
{
inner_loop
{
// Inner loop statement/s
}
// Outer loop statement/s
}
outer_loop
and inner_loop
is one of the valid C loop i.e. either for loop or while loop or do…while loop.
Examples of nested loop
You can write one type of loop in any other loop. In addition you can have any number of loop nested inside other. Below are some examples of nested loops.
Nested for
loopfor(initialization; condition; update)
{
// statements
for(initialization; condition; update)
{
// Inner loop statements
}
// statements
}
Nested while
loopwhile(condition)
{
// statements
while(condition)
{
// Inner loop statements
}
// statements
}
Nested do...while
loopdo
{
// statements
do
{
// Inner loop statements
}while(condition);
// statements
}while(condition);
Example program to demonstrate nested loop
for(initialization; condition; update)
{
// statements
for(initialization; condition; update)
{
// Inner loop statements
}
// statements
}
while
loopwhile(condition)
{
// statements
while(condition)
{
// Inner loop statements
}
// statements
}
Nested do...while
loopdo
{
// statements
do
{
// Inner loop statements
}while(condition);
// statements
}while(condition);
Example program to demonstrate nested loop
do
{
// statements
do
{
// Inner loop statements
}while(condition);
// statements
}while(condition);
Let us write a C program to print multiplication table from 1 to 5.
/**
* C program to print multiplication table from 1 to 5
*/
#include <stdio.h>
int main()
{
/* Loop counter variable declaration */
int i, j;
/* Outer loop */
for(i=1; i<=10; i++)
{
/* Inner loop */
for(j=1; j<=5; j++)
{
printf("%d\t", (i*j));
}
/* Print a new line */
printf("\n");
}
return 0;
}
Let us take a note on above program.
To understand the above program easily let us first focus on inner loop.
- First the initialization part executes initializing
j=1
. After initialization it transfer program control to loop condition part i.e.j<=5
. - The loop condition checks if
j<=5
then transfer program control to body of loop otherwise terminated the inner loop. - Body of loop contains single
printf("%d\t", (i*j));
statement. For each iteration it print the product of i and j. - Next after loop body, the loop update part receives program control. It increment the value of j with 1 and transfer program control back to loop condition.
From the above description it is clear that the inner loop executes 5 times.
For i=1 it prints the product of i and j
1 2 3 4 5
Similarly for i=2 it prints
2 4 6 8 10
Next let us now concentrate on outer loop.
- In the outer loop first variable i is initialized with 1. Then it transfer program control to loop condition i.e.
i<=10
. - The loop condition part checks if
i<=10
then transfer program control to body of loop otherwise terminate from loop. - Body of loop does not contain any statement rather it contain another loop i.e. the inner loop we discussed above.
- The program control is transferred to loop update part i.e.
i++
after inner loop terminates. The loop update part increment the value of i with 1 and transfer the control to loop condition.
From the above description of outer loop, it is clear that outer loop executes 10 times. For each time outer loop repeats, inner loop is executed with different value of i printing the below output.
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
5 10 15 20 25
6 12 18 24 30
7 14 21 28 35
8 16 24 32 40
9 18 27 36 45
10 20 30 40 50