Do while loop

    The do while loop is a post-condition loop. It guarantees to execute its body at least once, regardless of the loop condition. The reason for this is that in a post-condition loop the condition is checked after the body of the loop.

Do you learn better from video?

Learn faster with deeper understanding!
The "Computer programming for beginners" course is the perfect place to begin with programming.

Start now!

post-condition do while loop flow chart

The do while loop in C

The syntax of the do while loop in C is:

    do
   
{
        ...
       
Statements in the loop body
        ...

   
}while(condition);     
                                       

  • do” is the keyword that starts the loop.

  • Next follows the body of the loop. It is allowed to omit the curly brackets if the body contains only one statement, but this is a bad coding practice and you should avoid it.

  • The last part is the condition - while();

For beginners it is a common mistake to forget the semicolon after the condition.

    The loop will repeat the execution of the body while the condition is true. Once it becomes false, no more iterations are done and the program continues with the next statement, following the loop.

Examples

Calculating n factorial - n!

    Factorial is the product of all integer numbers from 1 to n, where n is the factorial we want to calculate. In mathematics it is written with an exclamation mark – n!

So..  4! = 1*2*3*4 = 24

Here is the code to calculate 5! using a do while loop:

    #include <stdio.h>
    int main()
    {
        int factorial = 1;
        int number = 5;
        do

        {
            factorial *= number;
            number--;
   
    }while(number > 0);
        printf("%d\n", factorial);
    }

Organizing a menu

    Another common example is a menu. We can print a menu and take different actions, depending on the user input. Here is a typical implementation:

    int main()
   
{
        
int menuChoice = 0;
        
do
        
{
            
printMenu();
            
scanf("%d", &menuChoice);
            
handleMenuChoice(menuChoice);
        
}while(menuChoice != 0);
   
        
return 0;
    }

   
void printMenu()
   
{
        
printf("========== MENU ==========\n");
        
printf("Input a number to take action:\n");
        
printf("1. Input a number to calculate its factorial\n");
        
printf("0. Exit\n");
        
printf("========== MENU ==========\n");
        
printf("Menu choice = ");
   
}

   
void handleMenuChoice(int menuChoice)
   
{
        
int number;
        
unsigned long factorial;
        
if(menuChoice == 1)
        {
            
printf("number = ");
            
scanf("%d", &number);
            
factorial = calculateFactorial(number);
            
printf("%d! = %lu \n", number, factorial);
        
}
   
}

    In this example I wanted to keep the code short. For that reason you see only 2 options in the menu. Also, normally you will handle the user choice with a switch, rather than an if.

    Now you can implement the functions printMenu() and handleMenuChoice() the way you like. For instance you can ask the user to input a sequence of numbers and find the greatest of them.

Examples download

    The source code for the above examples is available for download. It is in .c format inside the zip file: do-while-loop.zip

See also:

    This article is part of two tutorials: Basic C tutorial and keywords in C. Continue accordingly:

Previous lesson: C while loop

Next lesson: for loop

Previous keyworddefault

Next keyworddouble

Do you learn better from video?

Learn faster with deeper understanding!
The "Computer programming for beginners" course is the perfect place to begin with programming.

Start now!


› do..while

› do..while

Did this help? Support me with your vote ;-)

Did this help?