Bird
Raised Fist0
DSA Cprogramming~20 mins

Array Traversal Patterns in DSA C - Practice Problems & Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Array Traversal Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of Nested Loop Array Traversal
What is the printed output of the following C code snippet that traverses a 2D array?
DSA C
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
for (int i = 0; i < 2; i++) {
    for (int j = 0; j < 3; j++) {
        printf("%d ", arr[i][j]);
    }
    printf("\n");
}
A1 2 3 4 5 6 \n
B4 5 6 \n1 2 3 \n
C1 4 2 \n3 5 6 \n
D1 2 3 \n4 5 6 \n
Attempts:
2 left
💡 Hint
Think about how the outer loop controls rows and the inner loop controls columns.
❓ Predict Output
intermediate
2:00remaining
Output of Single Loop Traversal with Step
What is the output of this C code that traverses an array with a step of 2?
DSA C
int arr[] = {10, 20, 30, 40, 50, 60};
int n = 6;
for (int i = 0; i < n; i += 2) {
    printf("%d ", arr[i]);
}
A10 30 50
B20 40 60
C10 20 30 40 50 60
D60 50 40 30 20 10
Attempts:
2 left
💡 Hint
The loop increments by 2, so it skips every other element.
🔧 Debug
advanced
2:00remaining
Identify the Error in Reverse Array Traversal
What error does this C code produce when trying to print an array in reverse?
DSA C
int arr[] = {1, 2, 3, 4, 5};
int n = 5;
for (int i = n - 1; i >= 0; i--) {
    printf("%d ", arr[i]);
}
APrints: 5 4 3 2 1
BCompilation error: invalid loop condition
CPrints: 5 4 3 2 1 0 (out of bounds access)
DRuntime error: Array index out of bounds
Attempts:
2 left
💡 Hint
Check the starting index and valid array indices.
🧠 Conceptual
advanced
2:00remaining
Understanding Traversal Order in Zigzag Pattern
Given a 2D array, which traversal pattern prints elements in a zigzag order (left to right on even rows, right to left on odd rows)?
DSA C
int arr[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
for (int i = 0; i < 3; i++) {
    if (i % 2 == 0) {
        for (int j = 0; j < 3; j++) {
            printf("%d ", arr[i][j]);
        }
    } else {
        for (int j = 2; j >= 0; j--) {
            printf("%d ", arr[i][j]);
        }
    }
    printf("\n");
}
A3 2 1 \n4 5 6 \n9 8 7 \n
B1 2 3 \n4 5 6 \n7 8 9 \n
C1 2 3 \n6 5 4 \n7 8 9 \n
D1 3 2 \n4 6 5 \n7 9 8 \n
Attempts:
2 left
💡 Hint
Even rows go left to right, odd rows go right to left.
🚀 Application
expert
3:00remaining
Count Unique Elements Using Array Traversal
Given an unsorted integer array, which code snippet correctly counts the number of unique elements using only array traversal and no extra data structures?
DSA C
int arr[] = {2, 3, 2, 4, 3, 5};
int n = 6;
int count = 0;
for (int i = 0; i < n; i++) {
    int j;
    for (j = 0; j < i; j++) {
        if (arr[i] == arr[j]) {
            break;
        }
    }
    if (j == i) {
        count++;
    }
}
printf("%d", count);
A5
B4
C3
D6
Attempts:
2 left
💡 Hint
Count increments only when current element is not found before in the array.

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