Back to C Programming
2026-07-127 min read

C Control Flow Examples

Learn C Control Flow Examples step by step with clear examples and exercises.

Why This Matters

Welcome to this engaging and practical guide on C Control Flow Examples! In this tutorial, we'll delve deep into understanding various control flow structures that are essential for writing efficient and effective programs in the C programming language. By the end of this lesson, you'll have a solid grasp of these concepts, ready to tackle real-world coding challenges with confidence.

Why This Matters

Control flow structures play a crucial role in structuring your code and making it more readable, maintainable, and efficient. They allow you to make decisions, iterate through loops, and handle complex conditions in your programs. Understanding C control flow examples is essential for acing coding interviews, debugging real-world bugs, and developing high-quality software.

Prerequisites

Before diving into the core concept, it's important that you have a basic understanding of:

  1. Variables and data types in C
  2. Basic input/output operations using printf and scanf functions
  3. Fundamentals of C programming, such as operators, expressions, and statements

Core Concept

In this section, we'll explore several essential control flow structures in C:

  1. if...else statement
  2. for loop
  3. while loop
  4. do...while loop
  5. switch...case
  6. break and continue

if...else Statement

The if...else statement is used to execute different blocks of code based on a condition. Here's an example:

#include <stdio.h>

int main() {
int num = 10;

if (num > 5) {
printf("The number is greater than 5.\n");
} else {
printf("The number is less than or equal to 5.\n");
}

return 0;
}

In this example, we first declare an integer variable num. We then check if the value of num is greater than 5 using the if statement. If the condition is true, the message "The number is greater than 5." is printed. Otherwise, the message "The number is less than or equal to 5." is printed using the else clause.

for Loop

The for loop is used for iterating a specific number of times or until a certain condition is met. Here's an example that prints numbers from 1 to 10:

#include <stdio.h>

int main() {
int i;

for (i = 1; i <= 10; i++) {
printf("%d\n", i);
}

return 0;
}

In this example, we initialize i to 1, set the condition as i <= 10, and increment i by 1 in each iteration. The loop continues until i is no longer less than or equal to 10, printing each number on a new line.

while Loop

The while loop continues executing as long as the condition is true. Here's an example that prints even numbers from 2 to 20:

#include <stdio.h>

int main() {
int num = 2;

while (num <= 20) {
printf("%d\n", num);
num += 2; // increment by 2 to print even numbers
}

return 0;
}

In this example, we initialize num to 2 and set the condition as num <= 20. The loop continues printing each even number, then increments num by 2 before checking the condition again.

do...while Loop

The do...while loop is similar to the while loop, but the code inside the loop always executes at least once before checking the condition. Here's an example that prompts the user for input until they enter a valid number:

#include <stdio.h>

int main() {
int num;

do {
printf("Enter a number: ");
scanf("%d", &num);

// check if the entered number is positive
if (num > 0) {
printf("Valid input.\n");
} else {
printf("Invalid input. Please enter a positive number.\n");
}
} while (num <= 0);

return 0;
}

In this example, the code inside the do...while loop always executes at least once before checking the condition. This means that the user is prompted for input even if they enter an invalid number initially.

switch...case

The switch...case statement allows you to compare a value against multiple cases efficiently. Here's an example that classifies numbers as odd, even, or zero:

#include <stdio.h>

int main() {
int num;

printf("Enter a number: ");
scanf("%d", &num);

switch (num) {
case 0:
printf("The number is zero.\n");
break;
case 1:
case -1:
printf("The number is odd.\n");
break;
default:
if (num % 2 == 0) {
printf("The number is even.\n");
} else {
printf("The number is odd.\n");
}
}

return 0;
}

In this example, we first prompt the user for input and store it in num. We then use a switch statement to check the value of num. If num is equal to 0, we print "The number is zero.". If num is either 1 or -1, we print "The number is odd.". For all other cases, we use an if-else statement to determine whether the number is even or odd and print the appropriate message.

break and continue

The break and continue statements are used to control the flow of loops. The break statement exits the current loop, while the continue statement skips the current iteration and continues with the next one. Here's an example that prints numbers from 1 to 10, skipping even numbers:

#include <stdio.h>

int main() {
int i;

for (i = 1; i <= 10; i++) {
if (i % 2 == 0) { // check if the number is even
continue; // skip this iteration and move to the next one
}
printf("%d\n", i);
}

return 0;
}

In this example, we use the continue statement to skip even numbers when printing numbers from 1 to 10. The loop continues until i is no longer less than or equal to 10.

Worked Example

Now that you understand the core concepts, let's put them into practice with a worked example: Write a program that finds the largest prime number among the numbers from 2 to 50.

#include <stdio.h>

int isPrime(int num) {
if (num <= 1) return 0; // 0 and negative numbers are not prime
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) return 0; // check divisibility by numbers up to the square root of num
}
return 1; // the number is prime
}

int main() {
int maxPrime = 0;
for (int i = 2; i <= 50; i++) {
if (isPrime(i) && (maxPrime == 0 || i > maxPrime)) {
maxPrime = i; // update the maximum prime number found so far
}
}
printf("The largest prime number among the numbers from 2 to 50 is %d.\n", maxPrime);

return 0;
}

In this example, we define a helper function isPrime(int num) that checks whether a given number is prime. We then use a for loop to iterate through the numbers from 2 to 50 and find the largest prime number using the maxPrime variable. The program prints the largest prime number found.

Common Mistakes

  1. Forgetting to initialize variables before using them in control flow structures.
  2. Using incorrect syntax for conditional statements, such as forgetting to enclose conditions in parentheses or omitting semicolons after statements.
  3. Misunderstanding the difference between == (equal to) and = (assign) when comparing values.
  4. Incorrectly using the break and continue statements, such as breaking out of the wrong loop or continuing with an invalid iteration.
  5. Not handling all possible cases in a switch...case statement, leading to unexpected behavior or unhandled errors.

Practice Questions

  1. Write a program that checks if a given year is a leap year (a year that has 366 days). A leap year is any year that is divisible by 4, except for years that are divisible by 100 but not divisible by 400.
  2. Write a program that finds the sum of all even numbers between 1 and 100.
  3. Write a program that prints the Fibonacci sequence up to the nth term, where n is input by the user. The Fibonacci sequence starts with 0 and 1, and each subsequent number is the sum of the previous two numbers.
  4. Write a program that finds the smallest prime number greater than a given number n.

FAQ

What's the difference between an if...else statement and a switch...case statement in C?

  • An if...else statement is used to compare a single condition, while a switch...case statement is used to compare multiple conditions efficiently.

How do I handle input validation when using scanf() in C?

  • You can use conditional statements and loops to validate user input and ensure that it meets certain criteria before processing it further.

What's the purpose of the break statement in a loop, and how does it differ from the continue statement?

  • The break statement exits the current loop, while the continue statement skips the current iteration and moves to the next one.

How can I find the factorial of a given number using recursion in C?

  • You can define a recursive function that calculates the factorial of a number by multiplying the number with the factorial of the number minus 1, until a base case (e.g., when the number is equal to 0) is reached.

What's the most efficient way to sort an array in C?

  • There are several sorting algorithms you can use in C, such as bubble sort, selection sort, insertion sort, quicksort, and mergesort. The choice of algorithm depends on factors like the size of the data set, the nature of the data, and the desired performance characteristics.