A do-while loop lets you run a block of code at least once, then repeat it while a condition is true.
When you want to ask a user for input and repeat until they enter a valid answer.
When you need to run a menu at least once and keep showing it until the user chooses to exit.
When you want to perform an action first, then check if it should continue.
When you want to read data repeatedly until a stop condition is met, but must read at least once.
Syntax
C
do {
// code to run
} while (condition);
The code inside do { } runs first, then the condition is checked.
If the condition is true, the loop repeats. If false, it stops.
Examples
This prints numbers 1 to 3, increasing i each time.
C
int i = 1;
do {
printf("%d\n", i);
i++;
} while (i <= 3);
This asks the user if they want to continue, repeating if they type 'y'.
C
char answer;
do {
printf("Continue? (y/n): ");
scanf(" %c", &answer);
} while (answer == 'y');
Sample Program
This program prints "Count is" followed by numbers 1 to 5 using a do-while loop.
C
#include <stdio.h>
int main() {
int count = 1;
do {
printf("Count is %d\n", count);
count++;
} while (count <= 5);
return0;
}
OutputSuccess
Important Notes
The do-while loop always runs the code block at least once, even if the condition is false at the start.
Remember the semicolon ; after the while(condition) line is required.
Use do-while when you want the loop body to run before checking the condition.
Summary
A do-while loop runs code first, then checks a condition to repeat.
It is useful when the code must run at least once.
Syntax requires a semicolon after the while condition.
Practice
(1/5)
1. What is the main difference between a do-while loop and a while loop in C?
easy
A. A do-while loop cannot be used with integers.
B. A do-while loop checks the condition before executing the code block.
C. A do-while loop executes the code block at least once before checking the condition.
D. A do-while loop does not require a semicolon after the while condition.
Solution
Step 1: Understand the execution order of loops
A while loop checks the condition first, so it may not run the code block if the condition is false initially.
Step 2: Identify the behavior of do-while loop
A do-while loop runs the code block once before checking the condition, ensuring at least one execution.
Final Answer:
A do-while loop executes the code block at least once before checking the condition. -> Option C
Quick Check:
do-while runs once first = A [OK]
Hint: Remember: do-while runs code first, then checks condition [OK]
Common Mistakes:
Thinking do-while checks condition first
Believing semicolon after while is optional
Confusing do-while with while loop behavior
2. Which of the following is the correct syntax for a do-while loop in C?
easy
A. do { /* code */ } while (condition);
B. do ( /* code */ ) while condition;
C. do { /* code */ } while condition
D. do while (condition) { /* code */ };
Solution
Step 1: Recall the correct syntax structure
The do-while loop requires braces around the code block and a semicolon after the while condition in parentheses.
Step 2: Compare options to syntax
do { /* code */ } while (condition); matches the correct syntax: do { /* code */ } while (condition); with braces and semicolon.
Final Answer:
do { /* code */ } while (condition); -> Option A
Quick Check:
Semicolon after while(condition) = B [OK]
Hint: Look for braces and semicolon after while(condition) [OK]
Common Mistakes:
Omitting semicolon after while condition
Using parentheses instead of braces for code block
Placing while before do
3. What will be the output of the following C code?
int i = 3;
do {
printf("%d ", i);
i--;
} while (i > 0);
medium
A. 1 2 3
B. 2 1 0
C. 3 2 1 0
D. 3 2 1
Solution
Step 1: Trace the loop iterations
Initially, i = 3. The loop prints i, then decrements i by 1. It repeats while i > 0.
Step 2: List printed values
First iteration: prints 3, i becomes 2 Second iteration: prints 2, i becomes 1 Third iteration: prints 1, i becomes 0 Loop stops because i is not > 0.
Final Answer:
3 2 1 -> Option D
Quick Check:
Prints 3 down to 1 = A [OK]
Hint: Count printed values before condition fails [OK]
Common Mistakes:
Including 0 in output
Starting from 2 instead of 3
Printing in ascending order
4. Identify the error in this do-while loop code snippet:
int x = 5;
do {
printf("%d", x);
x--;
} while x > 0;
medium
A. The loop condition should be inside braces.
B. Missing parentheses around the while condition.
C. Variable x is not initialized.
D. Missing semicolon after the do block.
Solution
Step 1: Check syntax of the while condition
The while condition must be enclosed in parentheses, like while (x > 0);.
Step 2: Identify the error in the code
The code has while x > 0; missing parentheses, causing a syntax error.
Final Answer:
Missing parentheses around the while condition. -> Option B
Quick Check:
while(condition) needs parentheses = D [OK]
Hint: Always put condition in parentheses after while [OK]
Common Mistakes:
Omitting parentheses in while condition
Forgetting semicolon after while statement
Misplacing braces around condition
5. You want to write a do-while loop that asks the user to enter a positive number and repeats until the user enters a positive number. Which code snippet correctly implements this?
hard
A. int num;
do {
printf("Enter a positive number: ");
scanf("%d", &num);
} while (num <= 0);
B. int num = 0;
do {
scanf("%d", &num);
printf("Enter a positive number: ");
} while (num > 0);
C. int num;
do {
scanf("%d", &num);
} while (num < 0);
D. int num;
do {
printf("Enter a positive number: ");
scanf("%d", &num);
} while (num < 0);
Solution
Step 1: Understand the requirement
The loop must ask for input at least once and repeat while the number is not positive (<= 0).
Step 2: Analyze each option
int num;
do {
printf("Enter a positive number: ");
scanf("%d", &num);
} while (num <= 0); prompts before input and repeats while number is <= 0, which matches the requirement. int num = 0;
do {
scanf("%d", &num);
printf("Enter a positive number: ");
} while (num > 0); prints prompt after input and repeats while number > 0, which is incorrect. int num;
do {
scanf("%d", &num);
} while (num < 0); repeats while number < 0, missing zero case. int num;
do {
printf("Enter a positive number: ");
scanf("%d", &num);
} while (num < 0); repeats while number < 0, missing zero case.
Final Answer:
int num;
do {
printf("Enter a positive number: ");
scanf("%d", &num);
} while (num <= 0); -> Option A
Quick Check:
Repeat while number not positive = C [OK]
Hint: Repeat while input ≤ 0, prompt before input [OK]
Common Mistakes:
Checking wrong condition (e.g., num < 0 instead of <= 0)
Prompting after input instead of before
Not handling zero as invalid input
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.