Bird
Raised Fist0
DSA Cprogramming~10 mins

Array Traversal Patterns in DSA C - Execution Trace

Choose your learning style10 modes available
Concept Flow - Array Traversal Patterns
Start at index 0
↓
Check: index < array length?
No→End traversal
Yes↓
Process element at current index
↓
Move to next index (index + 1)
↩Back to Check
Start from the first element, check if index is within bounds, process element, then move to next index until all elements are visited.
Execution Sample
DSA C
int arr[] = {10, 20, 30, 40};
int n = 4;
for (int i = 0; i < n; i++) {
    printf("%d ", arr[i]);
}
Traverse the array from start to end and print each element.
Execution Table
StepOperationIndex (i)Condition (i < n)Element ProcessedOutput So Far
1Initialize i=000 < 4 = Truearr[0] = 1010
2Increment i=111 < 4 = Truearr[1] = 2010 20
3Increment i=222 < 4 = Truearr[2] = 3010 20 30
4Increment i=333 < 4 = Truearr[3] = 4010 20 30 40
5Increment i=444 < 4 = FalseNoneTraversal ends
💡 Loop ends when index i reaches 4, which is not less than array length 4.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4After Step 5
iundefined01234
Output"""10 ""10 20 ""10 20 30 ""10 20 30 40 ""Traversal ends"
Key Moments - 3 Insights
Why does the loop stop when i equals the array length, not when i is greater?
Because the condition i < n is checked before processing. When i equals n (array length), the condition becomes false and the loop stops, preventing out-of-bounds access. See execution_table row 5.
What happens if we start i at 1 instead of 0?
The first element arr[0] would be skipped because traversal starts at index 1. The output would miss the first element. This is shown by the initial i value in execution_table row 1.
Why do we increment i after processing the element?
Incrementing i after processing ensures each element is visited exactly once in order. If incremented before processing, the first element would be skipped. The execution_table shows processing happens before increment.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the value of i at Step 3?
A3
B2
C1
D4
💡 Hint
Check the 'Index (i)' column at Step 3 in the execution_table.
At which step does the loop condition become false?
AStep 5
BStep 4
CStep 3
DStep 2
💡 Hint
Look at the 'Condition (i < n)' column where it changes to False.
If the array length n was 3 instead of 4, how many elements would be processed?
A4
B2
C3
D1
💡 Hint
Refer to the condition i < n and how it controls the number of processed elements.
Concept Snapshot
Array Traversal Pattern:
- Start index i at 0
- Loop while i < array length
- Process element at arr[i]
- Increment i by 1 each iteration
- Stops when i reaches array length
Ensures all elements are visited in order.
Full Transcript
Array traversal means visiting each element in an array one by one. We start at index zero and check if the index is less than the array length. If yes, we process the element at that index, then move to the next index by adding one. This repeats until the index reaches the array length, stopping the loop to avoid going outside the array. This pattern ensures every element is accessed safely and in order.

Practice

(1/5)
1. What does the following code snippet do?
for (int i = 0; i < n; i++) { printf("%d ", arr[i]); }
easy
A. Prints only the last element of the array
B. Prints all elements of the array from end to start
C. Prints only the first element of the array
D. Prints all elements of the array from start to end

Solution

  1. Step 1: Understand the loop range

    The loop starts at 0 and runs while i is less than n, incrementing i by 1 each time.
  2. Step 2: Analyze the print statement inside the loop

    Each iteration prints the element at index i, so it prints elements from arr[0] to arr[n-1].
  3. Final Answer:

    Prints all elements of the array from start to end -> Option D
  4. Quick Check:

    Loop from 0 to n-1 prints all elements [OK]
Hint: Loop from 0 to n-1 prints array forward [OK]
Common Mistakes:
  • Confusing loop direction and thinking it prints backward
  • Assuming it prints only one element
  • Misreading the loop condition
2. Which of the following is the correct syntax to traverse an array arr of size n backwards in C?
easy
A. for (int i = 0; i < n; i++) { printf("%d", arr[i]); }
B. for (int i = n; i > 0; i++) { printf("%d", arr[i]); }
C. for (int i = n-1; i >= 0; i--) { printf("%d", arr[i]); }
D. for (int i = 1; i <= n; i++) { printf("%d", arr[i]); }

Solution

  1. Step 1: Identify correct loop start and end for backward traversal

    Backward traversal starts from index n-1 down to 0.
  2. Step 2: Check loop syntax correctness

    for (int i = n-1; i >= 0; i--) { printf("%d", arr[i]); } uses i = n-1; i >= 0; i-- which correctly traverses backward.
  3. Final Answer:

    for (int i = n-1; i >= 0; i--) { printf("%d", arr[i]); } -> Option C
  4. Quick Check:

    Backward loop uses i = n-1 to 0 with decrement [OK]
Hint: Backward loop starts at n-1 and decrements to 0 [OK]
Common Mistakes:
  • Starting loop at n instead of n-1
  • Using i++ instead of i-- for backward traversal
  • Accessing arr[i] with out-of-range indices
3. What is the output of the following code?
int arr[] = {5, 10, 15, 20};
int sum = 0;
for (int i = 1; i < 4; i++) {
    sum += arr[i];
}
printf("%d", sum);
medium
A. 50
B. 45
C. 30
D. Syntax Error

Solution

  1. Step 1: Identify loop indices and elements summed

    The loop runs i from 1 to 3, summing arr[1], arr[2], arr[3] which are 10, 15, and 20.
  2. Step 2: Calculate sum of selected elements

    sum = 10 + 15 + 20 = 45
  3. Final Answer:

    45 -> Option B
  4. Quick Check:

    Sum of arr[1..3] = 45 [OK]
Hint: Sum elements from index 1 to 3 inclusive [OK]
Common Mistakes:
  • Starting sum from arr[0] mistakenly
  • Adding wrong indices or missing last element
  • Confusing loop range boundaries
4. Find the error in the following code that attempts to print all elements of an array arr of size n:
for (int i = 0; i <= n; i++) {
    printf("%d ", arr[i]);
}
medium
A. Loop condition should be i < n, not i <= n
B. Array indexing should start from 1, not 0
C. printf statement syntax is incorrect
D. No error, code is correct

Solution

  1. Step 1: Analyze loop condition and array indexing

    Loop runs from i = 0 to i = n inclusive, accessing arr[n] which is out of bounds.
  2. Step 2: Correct loop condition to avoid out-of-bounds access

    Change condition to i < n so indices go from 0 to n-1, valid for array of size n.
  3. Final Answer:

    Loop condition should be i < n, not i <= n -> Option A
  4. Quick Check:

    Array indices valid from 0 to n-1 [OK]
Hint: Use i < n to avoid out-of-bounds errors [OK]
Common Mistakes:
  • Using <= instead of < in loop condition
  • Starting index at 1 instead of 0
  • Ignoring array size limits
5. Given an integer array arr of size n, which code snippet correctly prints every second element starting from the first element?
hard
A. for (int i = 0; i < n; i += 2) { printf("%d ", arr[i]); }
B. for (int i = 1; i < n; i += 2) { printf("%d ", arr[i]); }
C. for (int i = 0; i <= n; i += 2) { printf("%d ", arr[i]); }
D. for (int i = n-1; i >= 0; i -= 2) { printf("%d ", arr[i]); }

Solution

  1. Step 1: Understand requirement to print every second element starting at first

    Start at index 0 and increment index by 2 each time to skip every other element.
  2. Step 2: Check loop correctness and bounds

    for (int i = 0; i < n; i += 2) { printf("%d ", arr[i]); } uses i = 0; i < n; i += 2 which correctly prints arr[0], arr[2], arr[4], etc.
  3. Final Answer:

    for (int i = 0; i < n; i += 2) { printf("%d ", arr[i]); } -> Option A
  4. Quick Check:

    Increment by 2 starting at 0 prints every second element [OK]
Hint: Increment index by 2 starting at 0 for every second element [OK]
Common Mistakes:
  • Starting at index 1 instead of 0
  • Using <= n causing out-of-bounds
  • Looping backward when forward is needed
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