Bird
Raised Fist0
C++programming~10 mins

Nested loops in C++ - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Nested loops
Start outer loop i=0
↓
Check outer condition i < 3?
No→EXIT
Yes↓
Start inner loop j=0
↓
Check inner condition j < 2?
No→Increment i
Yes↓
Execute inner loop body
↓
Increment j
Back to inner condition↓
Increment i
↩Back to inner condition
The outer loop runs first. For each outer loop step, the inner loop runs completely before the outer loop moves on.
Execution Sample
C++
for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 2; j++) {
        std::cout << i << "," << j << "\n";
    }
}
Print pairs of i and j where i goes from 0 to 2 and j goes from 0 to 1.
Execution Table
StepijOuter condition (i<3)Inner condition (j<2)ActionOutput
100TrueTruePrint 0,00,0
201TrueTruePrint 0,10,1
302TrueFalseExit inner loop
410TrueTruePrint 1,01,0
511TrueTruePrint 1,11,1
612TrueFalseExit inner loop
720TrueTruePrint 2,02,0
821TrueTruePrint 2,12,1
922TrueFalseExit inner loop
103-False-Exit outer loop
💡 Outer loop ends when i reaches 3 because condition i < 3 is false.
Variable Tracker
VariableStartAfter 1After 2After 3After 4After 5After 6After 7After 8Final
i0001112223
j012012012-
Key Moments - 3 Insights
Why does the inner loop restart j from 0 each time the outer loop increments i?
Because the inner loop variable j is declared inside the outer loop, it resets to 0 every time the outer loop runs a new iteration, as shown in rows 1, 4, and 7 of the execution_table.
Why does the outer loop variable i only increment after the inner loop finishes?
The outer loop waits for the inner loop to complete all its iterations before increasing i, as seen in the execution_table where i stays the same while j runs through all values.
What happens when the inner loop condition becomes false?
When j reaches 2, the inner condition j < 2 is false, so the inner loop exits and control returns to the outer loop to increment i, as shown in rows 3, 6, and 9.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 5. What are the values of i and j?
Ai=1, j=0
Bi=0, j=1
Ci=1, j=1
Di=2, j=1
💡 Hint
Check the 'i' and 'j' columns in row 5 of the execution_table.
At which step does the outer loop condition become false?
AStep 9
BStep 10
CStep 3
DStep 1
💡 Hint
Look at the 'Outer condition (i<3)' column for the first 'False' value.
If the inner loop condition changed to j < 3, how many total print outputs would there be?
A9
B3
C6
D12
💡 Hint
Multiply outer loop iterations (3) by new inner loop iterations (3).
Concept Snapshot
Nested loops run one loop inside another.
Outer loop runs once per iteration.
Inner loop runs fully each outer iteration.
Inner loop variable resets each time.
Use nested loops to handle grids or pairs.
Full Transcript
This example shows nested loops in C++. The outer loop variable i starts at 0 and runs while less than 3. For each i, the inner loop variable j starts at 0 and runs while less than 2. Each pair i,j is printed. The inner loop completes all its iterations before the outer loop increments i. When j reaches 2, the inner loop exits and i increments. When i reaches 3, the outer loop exits. Variables i and j change as shown in the variable tracker. Key points include the reset of j each outer iteration and the order of loop completions.

Practice

(1/5)
1. What does a nested loop in C++ mean?
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 2; j++) {
// code
}
}
easy
A. Two loops running one after another
B. A loop inside another loop
C. A loop that runs only once
D. A loop that never ends

Solution

  1. Step 1: Understand the code structure

    The code shows one for loop inside another for loop, which means nested loops.
  2. Step 2: Define nested loops

    Nested loops mean one loop runs inside another loop's block of code.
  3. Final Answer:

    A loop inside another loop -> Option B
  4. Quick Check:

    Nested loop = loop inside loop [OK]
Hint: Look for one loop inside another's braces [OK]
Common Mistakes:
  • Thinking loops run one after another, not inside
  • Confusing nested loops with single loops
  • Assuming nested loops run only once
2. Which of the following is the correct syntax for a nested loop in C++?
easy
A. for(int i=0; i<3; i++) { for(int j=0; j<2; j++) { /* code */ } }
B. for i in range(3): for j in range(2): /* code */
C. while(i<3) { while(j<2) /* code */ }
D. loop(i=0; i<3; i++) { loop(j=0; j<2; j++) { /* code */ } }

Solution

  1. Step 1: Identify C++ loop syntax

    C++ uses for(initialization; condition; increment) syntax for loops.
  2. Step 2: Check each option

    for i in range(3): for j in range(2): /* code */ uses Python syntax, invalid in C++.
    for(int i=0; i<3; i++) { for(int j=0; j<2; j++) { /* code */ } } uses correct C++ syntax with nested for loops.
    while(i<3) { while(j<2) /* code */ } uses while loops missing initializations and increments.
    loop(i=0; i<3; i++) { loop(j=0; j<2; j++) { /* code */ } } uses invalid loop keyword.
  3. Final Answer:

    for(int i=0; i<3; i++) { for(int j=0; j<2; j++) { /* code */ } } -> Option A
  4. Quick Check:

    C++ nested loops use for(init; cond; inc) [OK]
Hint: Remember C++ loops use for(init; cond; inc) syntax [OK]
Common Mistakes:
  • Using Python or other language syntax in C++
  • Missing semicolons in for loop header
  • Using wrong keywords like 'loop'
3. What is the output of this C++ code?
for(int i = 1; i <= 2; i++) {
for(int j = 1; j <= 3; j++) {
std::cout << i*j << " ";
}
std::cout << std::endl;
}
medium
A. 3 6 9 \n 6 12 18
B. 1 2 3 4 5 6
C. 1 2 3 \n 2 4 6
D. 1 1 1 \n 2 2 2

Solution

  1. Step 1: Trace outer loop values

    Outer loop runs i=1 and i=2.
  2. Step 2: Calculate inner loop outputs

    For i=1, j=1 to 3: outputs 1*1=1, 1*2=2, 1*3=3.
    For i=2, j=1 to 3: outputs 2*1=2, 2*2=4, 2*3=6.
  3. Final Answer:

    1 2 3 2 4 6 -> Option C
  4. Quick Check:

    Multiply i and j in nested loops [OK]
Hint: Multiply outer and inner loop counters for output [OK]
Common Mistakes:
  • Ignoring the newline after inner loop
  • Adding all numbers instead of printing products
  • Confusing loop ranges
4. Find the error in this nested loop code:
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; i++) {
std::cout << i+j << " ";
}
std::cout << std::endl;
}
medium
A. Inner loop increments i instead of j
B. Outer loop condition is wrong
C. Missing semicolon after std::cout
D. No error, code runs fine

Solution

  1. Step 1: Check inner loop increment

    Inner loop header uses i++ instead of j++, causing infinite loop or wrong behavior.
  2. Step 2: Identify correct increment variable

    Inner loop should increment j to progress through its range.
  3. Final Answer:

    Inner loop increments i instead of j -> Option A
  4. Quick Check:

    Inner loop must increment its own variable [OK]
Hint: Check loop increments match loop variables [OK]
Common Mistakes:
  • Incrementing wrong variable in inner loop
  • Assuming code runs without checking increments
  • Confusing outer and inner loop variables
5. You want to print a 4x4 multiplication table using nested loops in C++. Which code snippet correctly achieves this?
hard
A. for(int i=1; i<=4; i++) { for(int j=1; j<=4; j++) { std::cout << i-j << " "; } std::cout << std::endl; }
B. for(int i=0; i<4; i++) { for(int j=0; j<4; j++) { std::cout << i+j << " "; } std::cout << std::endl; }
C. for(int i=1; i<=4; i++) { for(int j=1; j<=4; j++) { std::cout << i+j << " "; } std::cout << std::endl; }
D. for(int i=1; i<=4; i++) { for(int j=1; j<=4; j++) { std::cout << i*j << " "; } std::cout << std::endl; }

Solution

  1. Step 1: Understand multiplication table logic

    Each cell should print the product of row and column numbers (i*j).
  2. Step 2: Check each option's output logic

    for(int i=1; i<=4; i++) { for(int j=1; j<=4; j++) { std::cout << i*j << " "; } std::cout << std::endl; } prints i*j correctly.
    for(int i=0; i<4; i++) { for(int j=0; j<4; j++) { std::cout << i+j << " "; } std::cout << std::endl; } prints sum with zero-based indices.
    for(int i=1; i<=4; i++) { for(int j=1; j<=4; j++) { std::cout << i+j << " "; } std::cout << std::endl; } prints sum with one-based indices.
    for(int i=1; i<=4; i++) { for(int j=1; j<=4; j++) { std::cout << i-j << " "; } std::cout << std::endl; } prints difference.
  3. Final Answer:

    for(int i=1; i<=4; i++) { for(int j=1; j<=4; j++) { std::cout << i*j << " "; } std::cout << std::endl; } -> Option D
  4. Quick Check:

    Multiplication table = print i*j in nested loops [OK]
Hint: Multiply loop counters for multiplication table [OK]
Common Mistakes:
  • Using addition or subtraction instead of multiplication
  • Starting loops at 0 instead of 1 for table
  • Not printing newline after each row
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard