Conditional Branching and Loops in C

Gourab DasGourab Das
10 min read

Introduction

In C programming, decision-making and looping structures are essential for controlling program flow. These are classified into control statements, which are divided into three categories:

  1. Selection Statements (Decision-Making)

  2. Iterative Statements (Loops)

  3. Jumping Statements (Unconditional Control Transfer)


1. Selection Statements (Decision-Making)

Selection statements allow the program to choose between different paths based on conditions.

1.1 if Statement

  • Used to execute a block of code only if a specified condition is true.

Syntax:

if (condition) {
    // Code to execute if condition is true
}

Example:

#include <stdio.h>
int main() {
    int num = 10;
    if (num > 5) {
        printf("Number is greater than 5\n");
    }
    return 0;
}

1.2 if-else Statement

  • Executes one block of code if the condition is true and another block if it is false.

Syntax:

if (condition) {
    // Code if condition is true
} else {
    // Code if condition is false
}

Example:

#include <stdio.h>
int main() {
    int num = 10;
    if (num % 2 == 0) {
        printf("Even number\n");
    } else {
        printf("Odd number\n");
    }
    return 0;
}

1.3 Nested if-else

  • if-else statements inside another if-else.

Syntax:

if (condition1) {
    if (condition2) {
        // Code if both conditions are true
    } else {
        // Code if only condition1 is true
    }
} else {
    // Code if condition1 is false
}

Example:

#include <stdio.h>
int main() {
    int num = 10;
    if (num > 0) {
        if (num % 2 == 0) {
            printf("Positive Even number\n");
        } else {
            printf("Positive Odd number\n");
        }
    } else {
        printf("Number is negative\n");
    }
    return 0;
}

1.4 else-if Ladder

  • Used when multiple conditions need to be checked sequentially.

Syntax:

if (condition1) {
    // Code if condition1 is true
} else if (condition2) {
    // Code if condition2 is true
} else {
    // Code if none of the conditions are true
}

Example:

#include <stdio.h>
int main() {
    int marks = 85;
    if (marks >= 90) {
        printf("Grade A\n");
    } else if (marks >= 75) {
        printf("Grade B\n");
    } else {
        printf("Grade C\n");
    }
    return 0;
}

1.5 switch Statement

  • Used to replace multiple if-else statements when checking for equality.

Syntax:

switch (expression) {
    case value1:
        // Code for value1
        break;
    case value2:
        // Code for value2
        break;
    default:
        // Code if no case matches
}

Example:

#include <stdio.h>
int main() {
    int day = 3;
    switch (day) {
        case 1: printf("Monday\n"); break;
        case 2: printf("Tuesday\n"); break;
        case 3: printf("Wednesday\n"); break;
        default: printf("Invalid day\n");
    }
    return 0;
}

2. Iterative Statements (Loops)

Loops allow executing a block of code multiple times.

2.1 while Loop

  • Repeats execution as long as the condition remains true.

Syntax:

while (condition) {
    // Code to execute
}

Example:

#include <stdio.h>
int main() {
    int i = 1;
    while (i <= 5) {
        printf("%d\n", i);
        i++;
    }
    return 0;
}

2.2 for Loop

  • Used when the number of iterations is known.

Syntax:

for (initialization; condition; increment/decrement) {
    // Code to execute
}

Example:

#include <stdio.h>
int main() {
    for (int i = 1; i <= 5; i++) {
        printf("%d\n", i);
    }
    return 0;
}

2.3 do-while Loop

  • Executes at least once before checking the condition.

Syntax:

do {
    // Code to execute
} while (condition);

Example:

#include <stdio.h>
int main() {
    int i = 1;
    do {
        printf("%d\n", i);
        i++;
    } while (i <= 5);
    return 0;
}

3. Jumping Statements

Jumping statements are used to control the flow of execution.

3.1 break Statement

  • Used to exit loops or switch statements.

Example:

#include <stdio.h>
int main() {
    for (int i = 1; i <= 5; i++) {
        if (i == 3) break;
        printf("%d\n", i);
    }
    return 0;
}

3.2 continue Statement

  • Skips the current iteration and continues with the next.

Example:

#include <stdio.h>
int main() {
    for (int i = 1; i <= 5; i++) {
        if (i == 3) continue;
        printf("%d\n", i);
    }
    return 0;
}

3.3 goto Statement

  • Transfers control to a labeled statement.

Example:

#include <stdio.h>
int main() {
    int i = 1;
    loop:
        printf("%d\n", i);
        i++;
        if (i <= 5) goto loop;
    return 0;
}

Conclusion

  • Selection statements (if-else, switch) help in decision-making.

  • Loops (while, for, do-while) allow executing code multiple times.

  • Jumping statements (break, continue, goto) control execution flow.

These control structures are fundamental for writing efficient C programs.


Some practice questions

1. Selection Statements (Decision-Making)

Q1: What is the purpose of the if statement in C?

A: The if statement is used to execute a block of code only if a specified condition evaluates to true.

Q2: What is the difference between if and if-else statements?

A: The if statement executes a block of code only when the condition is true, whereas if-else provides an alternative block to execute when the condition is false.

Q3: What is an else-if ladder in C?

A: An else-if ladder is used to check multiple conditions sequentially. It consists of multiple if-else if-else statements.

Q4: What is the difference between if-else and switch statements?

A:

Featureif-elseswitch
Used forComplex conditions (logical, relational)Checking multiple constant values
EfficiencySlower for multiple conditionsFaster when checking many constant cases
Data TypesWorks with all data typesWorks only with integer and character types

Q5: What is the default case in a switch statement?

A: The default case in a switch statement executes when none of the specified case values match the given expression.

Q6: Why is the break statement used inside a switch case?

A: The break statement prevents fall-through and ensures that only one case executes in a switch statement.


2. Iterative Statements (Loops)

Q7: What is a loop in C?

A: A loop is used to repeatedly execute a block of code until a specified condition is met.

Q8: What are the three types of loops in C?

A:

  1. while loop

  2. for loop

  3. do-while loop

Q9: What is the difference between while and do-while loops?

A:

Featurewhile Loopdo-while Loop
ExecutionChecks condition first, then executesExecutes first, then checks condition
Minimum ExecutionMay not execute if the condition is false initiallyExecutes at least once

Q10: What is an infinite loop? Give an example.

A: An infinite loop runs indefinitely because its condition never becomes false.
Example:

while (1) {
    printf("Infinite Loop\n");
}

Q11: What is the syntax of a for loop in C?

A:

for (initialization; condition; increment/decrement) {
    // Loop body
}

Q12: How is the while loop different from the for loop?

A:

Featurewhile Loopfor Loop
Best Used ForWhen number of iterations is unknownWhen number of iterations is known
StructureCondition is separate from initialization and incrementAll parts (initialization, condition, update) are in one line

3. Jumping Statements

Q13: What is the purpose of the break statement?

A: The break statement is used to terminate a loop or a switch case immediately.

Q14: What is the purpose of the continue statement?

A: The continue statement skips the current iteration of the loop and moves to the next iteration.

Q15: What is the goto statement? Why is it discouraged?

A: The goto statement is used to transfer control to a labeled statement elsewhere in the program. It is discouraged because it makes the code harder to read and maintain.

Example:

goto label;
label: printf("Jumped to this line\n");

4. Conceptual Questions

Q16: What happens if there is no break statement in a switch case?

A: If break is missing, execution will continue to the next case (fall-through behavior).

Q17: What is an entry-controlled and exit-controlled loop?

A:

  • Entry-controlled loop: Condition is checked before execution (for, while).

  • Exit-controlled loop: Condition is checked after execution (do-while).

Q18: Can we use a switch statement with a float variable?

A: No, switch works only with integer or character types.

Q19: Can a for loop work without an initialization or condition?

A: Yes, all parts are optional. Example of an infinite loop using for:

for (;;) {
    printf("Infinite Loop\n");
}

Q20: What is nesting of loops? Give an example.

A: Nesting means placing one loop inside another.
Example:

for (int i = 1; i <= 3; i++) {
    for (int j = 1; j <= 2; j++) {
        printf("i=%d, j=%d\n", i, j);
    }
}

Multiple Choice Questions (MCQs) on Selection Statements in C

Basic MCQs

  1. What is the purpose of selection statements in C?
    a) To execute statements sequentially
    b) To make decisions based on conditions
    c) To repeat statements multiple times
    d) To define functions

    Answer: (b) To make decisions based on conditions

  2. What will be the output of the following code?

     #include <stdio.h>
     int main() {
         int x = 5;
         if (x = 0) {
             printf("Hello");
         } else {
             printf("World");
         }
         return 0;
     }
    

    a) Hello
    b) World
    c) Compilation error
    d) No output

    Answer: (a) Hello (because x = 0 assigns 0 to x, which is false, so the if block is skipped, and "World" is printed.)

  3. Which of the following is NOT a selection statement in C?
    a) if
    b) switch
    c) for
    d) if-else

    Answer: (c) for (it is a loop, not a selection statement)


Intermediate MCQs

  1. How many cases can a switch statement have in C?
    a) Only 2
    b) Between 2 and 5
    c) Any number
    d) Maximum of 10

    Answer: (c) Any number

  2. What will be the output of the following code?

     #include <stdio.h>
     int main() {
         int num = 3;
         if (num > 5)
             if (num < 10)
                 printf("A");
             else
                 printf("B");
         printf("C");
         return 0;
     }
    

    a) A
    b) B
    c) C
    d) A C

    Answer: (c) C (because num > 5 is false, so the inner if is skipped, and only "C" is printed.)

  3. What is the default return type of the main() function in C?
    a) int
    b) void
    c) char
    d) float

    Answer: (a) int


Advanced MCQs (Tricky Questions)

  1. What happens if we forget to write break in a switch case?
    a) Only the matched case executes
    b) The program crashes
    c) The next cases also execute until a break is found
    d) Compilation error

    Answer: (c) The next cases also execute until a break is found (This is called fall-through behavior in C.)

  2. What will be the output of the following code?

     #include <stdio.h>
     int main() {
         int x = 2;
         switch (x) {
             case 1:
                 printf("One");
             case 2:
                 printf("Two");
             case 3:
                 printf("Three");
             default:
                 printf("Default");
         }
         return 0;
     }
    

    a) Two
    b) TwoThreeDefault
    c) Compilation error
    d) Default

    Answer: (b) TwoThreeDefault (No break statements cause fall-through.)

  3. Which of the following is true about the switch statement in C?
    a) case labels can have duplicate values
    b) default is mandatory
    c) break is optional but prevents fall-through
    d) switch can only work with integers

    Answer: (c) break is optional but prevents fall-through

  4. Consider the following code:

    #include <stdio.h>
    int main() {
        int a = 10, b = 20;
        if (a == 10)
            if (b == 20)
                printf("X");
            else
                printf("Y");
        return 0;
    }
    

    What will be the output?
    a) X
    b) Y
    c) Compilation error
    d) No output

    Answer: (a) X (Both conditions are true.)


Bonus: Conceptual MCQs

  1. Can we use float values in a switch case statement in C?
    a) Yes
    b) No

    Answer: (b) No (switch only works with int, char, and enum types.)

  2. What is the correct way to compare two char values in an if condition?
    a) if (char1 == char2)
    b) if (char1 = char2)
    c) if (char1.compare(char2))
    d) if (strcmp(char1, char2))

    Answer: (a) if (char1 == char2)

0
Subscribe to my newsletter

Read articles from Gourab Das directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Gourab Das
Gourab Das