A nested loop means a loop statement inside another loop statement. That is why nested loops are also called "loop inside loops". We can define any number of loops inside another loop.
For a nested loop, the inner loop performs all of its iterations for each iteration of the outer loop.
Example: If the outer loop is running from i = 1 to 5 and the inner loop is running from a to e. Then, for each value of the outer loop variable (i), the inner loop will run from a to e.
Types of Nested Loops in C
We can create nested loops use any loop available in C language whether it be a for loop or a do while loop. We can also combine different type of loops to create nested loops.
Example: for loop inside a do while loop or a while loop in side a for loop etc.
1. Nested for Loop
Nested for loop refers to any type of loop that is defined inside a 'for' loop. Below is the equivalent flow diagram for nested 'for' loops:
Flowchart for nested for loop in CSyntax:
C
for ( initialization; condition; increment ) {
for ( initialization; condition; increment ) {
// statement of inside loop
}
// statement of outer loop
}
Example: Below program uses a nested for loop to print a 3D matrix of 2x3x2.
C
#include <stdio.h>
int main()
{
// initializing the 3-D array
int arr[2][3][2]
= { { { 0, 6 }, { 1, 7 }, { 2, 8 } },
{ { 3, 9 }, { 4, 10 }, { 5, 11 } } };
// Printing values of 3-D array
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
for (int k = 0; k < 2; ++k) {
printf("Element at arr[%i][%i][%i] = %d\n",
i, j, k, arr[i][j][k]);
}
}
}
return 0;
}
OutputElement at arr[0][0][0] = 0
Element at arr[0][0][1] = 6
Element at arr[0][1][0] = 1
Element at arr[0][1][1] = 7
Element at arr[0][2][0] = 2
Element at arr[0][2][1] = 8
Element at arr[1][0][0] = 3
Element at arr[1][0][1] = 9
Element at arr[1][1][0] = 4
Element at arr[1][1][1] = 10
Element at arr[1][2][0] = 5
Element at arr[1][2][1] = 11
2. Nested while Loop
A nested while loop refers to any type of loop that is defined inside a 'while' loop. Below is the equivalent flow diagram for nested 'while' loops:
Flowchart for a nested while loop in CSyntax:
C
while(condition) {
while(condition) {
// statement of inside loop
}
// statement of outer loop
}
Example: Print Pattern using nested while loops
C
#include <stdio.h>
int main()
{
int end = 5;
printf("Pattern Printing using Nested While loop");
int i = 1;
while (i <= end) {
printf("\n");
int j = 1;
while (j <= i) {
printf("%d ", j);
j = j + 1;
}
i = i + 1;
}
return 0;
}
OutputPattern Printing using Nested While loop
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
3. Nested do-while Loop
A nested do-while loop refers to any type of loop that is defined inside a do-while loop. Below is the equivalent flow diagram for nested 'do-while' loops:
flowchart for do while loop in CSyntax:
C
do{
do{
// statement of inside loop
}while(condition);
// statement of outer loop
}while(condition);
Note: There is no rule that a loop must be nested inside its own type. In fact, there can be any type of loop nested inside any type and to any level.
Syntax:
C
do{
while(condition) {
for ( initialization; condition; increment ) {
// statement of inside for loop
}
// statement of inside while loop
}
// statement of outer do-while loop
}while(condition);
Example: Below program uses a nested for loop to print all prime factors of a number.Â
C
#include <math.h>
#include <stdio.h>
// A function to print all prime factors of a given number n
void primeFactors(int n)
{
// Print the number of 2s that divide n
while (n % 2 == 0) {
printf("%d ", 2);
n = n / 2;
}
// n must be odd at this point. So we can skip
// one element (Note i = i +2)
for (int i = 3; i <= sqrt(n); i = i + 2) {
// While i divides n, print i and divide n
while (n % i == 0) {
printf("%d ", i);
n = n / i;
}
}
// to handle the case when n
// is prime number greater than 2
if (n > 2)
printf("%d ", n);
}
int main()
{
int n = 315;
primeFactors(n);
return 0;
}
Break Inside Nested Loops
Whenever we use a break statement inside the nested loops it breaks the innermost loop only and program control goes to the outer loop. Breaking the inner loop does not affects the outer loops.
Example:Â
C
#include <stdio.h>
int main()
{
int i = 0;
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 3; j++) {
// This inner loop will break when i==3
if (i == 3) {
break;
}
printf("* ");
}
printf("\n");
}
return 0;
}
Output* * *
* * *
* * *
* * *
In the above program, the first loop will iterate from 0 to 5 but here if i will be equal to 3 it will break and will not print the * as shown in the output.Â
Continue Inside Nested loops
Whenever we use a continue statement inside the nested loops it skips the iteration of the innermost loop only. The outer loop remains unaffected.
Example:
C
#include <stdio.h>
int main()
{
int i = 0;
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 3; j++) {
// This inner loop will skip when j==2
if (j==2) {
continue;
}
printf("%d ",j);
}
printf("\n");
}
return 0;
}
In the above program, the inner loop will be skipped when j will be equal to 2. The outer loop will remain unaffected.
Uses of Nested Loops
- Printing Patterns: Nested loops are often used to print complex patterns such as printing shapes, grids, or tables.
- Searching and Sorting: Nested loops are used in algorithms that involve searching for or sorting elements like bubble sort, insertion sort, matrix searching etc.
- Multi-Dimensional Data: Nested loops are useful when dealing with multidimensional data structures like 2D or 3D arrays, matrices, list of lists.
- Dynamic Programming: Nested loops are commonly used in dynamic Programming for solving problems like knapsack problem or longest common subsequence.
Similar Reads
Nested Loops in C with Examples A nested loop means a loop statement inside another loop statement. That is why nested loops are also called "loop inside loops". We can define any number of loops inside another loop.For a nested loop, the inner loop performs all of its iterations for each iteration of the outer loop. Example: If t
6 min read
while Loop in C The while loop in C allows a block of code to be executed repeatedly as long as a given condition remains true. It is often used when we want to repeat a block of code till some condition is satisfied.Example: C#include <stdio.h> int main() { int i = 1; // Condition for the loop while (i <=
5 min read
do...while Loop in C C do...while loop is a type of loop that executes a code block until the given condition is satisfied. Unlike the while loop, which checks the condition before executing the loop, the do...while loop checks the condition after executing the code block, ensuring that the code inside the loop is execu
4 min read
Nested Functions in C Nesting of functions refers to placing the definition of the function inside another functions. In C programming, nested functions are not allowed. We can only define a function globally.Example:C#include <stdio.h> int main() { void fun(){ printf("GeeksForGeeks"); } fun(); return 0; }Outputmai
4 min read
C - Loops In C programming, there is often a need for repeating the same part of the code multiple times. For example, to print a text three times, we have to use printf() three times as shown in the code:C#include <stdio.h> int main() { printf( "Hello GfG\n"); printf( "Hello GfG\n"); printf( "Hello GfG
7 min read
Jump Statements in C In C, jump statements are used to jump from one part of the code to another altering the normal flow of the program. They are used to transfer the program control to somewhere else in the program. In this article, we will discuss the jump statements in C and how to use them. Types of Jump Statements
5 min read