Bird
Raised Fist0
Cprogramming~20 mins

Array initialization in C - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Array Initialization Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of partially initialized array
What is the output of this C program?
C
#include <stdio.h>

int main() {
    int arr[5] = {1, 2};
    for (int i = 0; i < 5; i++) {
        printf("%d ", arr[i]);
    }
    return 0;
}
A1 2 0 0 0
B1 2 0 0 1
C1 2 3 4 5
D1 2 0 1 0
Attempts:
2 left
💡 Hint
Uninitialized elements in an array initialized with fewer values are set to zero.
❓ Predict Output
intermediate
2:00remaining
Output of string array initialization
What will this C program print?
C
#include <stdio.h>

int main() {
    char str[6] = "Hello";
    for (int i = 0; i < 6; i++) {
        printf("%d ", str[i]);
    }
    return 0;
}
A72 101 108 108 111 1
B72 101 108 108 111 0
C72 101 108 108 111 32
D72 101 108 108 111 111
Attempts:
2 left
💡 Hint
Remember that strings in C end with a special null character.
❓ Predict Output
advanced
2:00remaining
Output of multidimensional array initialization
What is the output of this C program?
C
#include <stdio.h>

int main() {
    int matrix[2][3] = {{1, 2}, {3}};
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 3; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }
    return 0;
}
A
1 2 0 
3 0 3 
B
1 2 3 
3 0 0 
C
1 2 0 
3 0 0 
D
1 2 0 
3 0 1 
Attempts:
2 left
💡 Hint
Uninitialized elements in nested arrays are set to zero.
❓ Predict Output
advanced
2:00remaining
Value of array element after initialization
What is the value of arr[3] after this code runs?
C
int arr[5] = {0, 1, 2, 3, 4};
arr[3] = arr[1] + arr[2];
A4
B1
C2
D3
Attempts:
2 left
💡 Hint
Look carefully at the assignment to arr[3].
❓ Predict Output
expert
3:00remaining
Output of array initialization with designated initializers
What is the output of this C program?
C
#include <stdio.h>

int main() {
    int arr[5] = {[2] = 10, [4] = 20};
    for (int i = 0; i < 5; i++) {
        printf("%d ", arr[i]);
    }
    return 0;
}
A0 0 10 0 20
B10 0 0 20 0
C0 10 0 20 0
D10 20 0 0 0
Attempts:
2 left
💡 Hint
Designated initializers set specific indexes; others default to zero.

Practice

(1/5)
1. Which of the following correctly declares and initializes an integer array of size 3 with values 1, 2, and 3 in C?
easy
A. int arr = {1, 2, 3};
B. int arr[3] = {1, 2, 3};
C. int arr[3] = (1, 2, 3);
D. int arr[] = 1, 2, 3;

Solution

  1. Step 1: Understand array declaration syntax

    In C, arrays are declared with a type, name, and size in square brackets, e.g., int arr[3].
  2. Step 2: Check initialization format

    Initialization uses curly braces with comma-separated values, e.g., {1, 2, 3}.
  3. Final Answer:

    int arr[3] = {1, 2, 3}; -> Option B
  4. Quick Check:

    Correct array declaration and initialization [OK]
Hint: Use curly braces {} with size in brackets [] for arrays [OK]
Common Mistakes:
  • Missing square brackets for size
  • Using parentheses instead of braces
  • Assigning array without braces
2. Which of the following is a syntax error when initializing an array in C?
easy
A. int nums[4] = {10, 20, 30, 40};
B. int nums[5] = {0};
C. int nums[] = {5, 6, 7};
D. int nums[3] = {1, 2, 3, 4};

Solution

  1. Step 1: Check array size and initializer count

    Array size is 3 but initializer has 4 values, which is invalid in C.
  2. Step 2: Verify other options

    int nums[4] = {10, 20, 30, 40}; matches size and values, C infers size from initializer, B zero-initializes first element and rest are zero.
  3. Final Answer:

    int nums[3] = {1, 2, 3, 4}; -> Option D
  4. Quick Check:

    Initializer count > array size causes syntax error [OK]
Hint: Initializer list cannot exceed declared array size [OK]
Common Mistakes:
  • Providing more initial values than array size
  • Omitting size but giving initializer with extra values
  • Using wrong braces
3. What is the output of the following C code?
int arr[5] = {1, 2};
printf("%d %d %d %d %d", arr[0], arr[1], arr[2], arr[3], arr[4]);
medium
A. 1 2 0 0 0
B. 1 2 garbage garbage garbage
C. 1 2 3 4 5
D. Compilation error

Solution

  1. Step 1: Understand partial initialization

    When fewer values are given, remaining elements are set to zero automatically.
  2. Step 2: Check printed values

    arr[0] = 1, arr[1] = 2, arr[2], arr[3], arr[4] = 0 each.
  3. Final Answer:

    1 2 0 0 0 -> Option A
  4. Quick Check:

    Partial init fills rest with zero [OK]
Hint: Uninitialized array elements default to zero if partially initialized [OK]
Common Mistakes:
  • Assuming uninitialized elements have garbage values
  • Expecting compilation error for partial init
  • Confusing array size with initializer count
4. Identify the error in the following C code snippet:
int data[3];
data = {1, 2, 3};
medium
A. Missing semicolon after array declaration.
B. Array size must be omitted when initializing.
C. Arrays cannot be assigned values after declaration like this.
D. Braces should be parentheses for assignment.

Solution

  1. Step 1: Understand array assignment rules

    In C, arrays cannot be assigned values after declaration using = and braces.
  2. Step 2: Check other options

    Semicolon is present, size can be specified, braces are correct for initialization but not assignment.
  3. Final Answer:

    Arrays cannot be assigned values after declaration like this. -> Option C
  4. Quick Check:

    Array assignment after declaration is invalid [OK]
Hint: Arrays must be initialized at declaration, not assigned later [OK]
Common Mistakes:
  • Trying to assign array with braces after declaration
  • Confusing array assignment with pointer assignment
  • Using parentheses instead of braces
5. You want to create an integer array of size 6 where the first two elements are 10 and 20, and the rest are zeros. Which of the following is the best way to initialize it in C?
hard
A. int arr[6] = {0}; arr[0] = 10; arr[1] = 20;
B. int arr[6] = {10, 20, 0, 0, 0, 0};
C. int arr[6] = {10, 20};
D. int arr[6]; arr[0] = 10; arr[1] = 20;

Solution

  1. Step 1: Analyze partial initialization

    int arr[6] = {10, 20}; partially initializes first two elements; rest are zero by default, so it works.
  2. Step 2: Compare with explicit zero initialization and assignment

    int arr[6] = {0}; arr[0] = 10; arr[1] = 20; explicitly zeroes all elements then assigns first two, ensuring clarity and no garbage.
  3. Step 3: Evaluate best practice

    int arr[6] = {0}; arr[0] = 10; arr[1] = 20; is best for clarity and safety; int arr[6] = {10, 20}; works but less explicit; int arr[6] = {10, 20, 0, 0, 0, 0}; is verbose; int arr[6]; arr[0] = 10; arr[1] = 20; leaves uninitialized elements.
  4. Final Answer:

    int arr[6] = {0}; arr[0] = 10; arr[1] = 20; -> Option A
  5. Quick Check:

    Explicit zero init then assign first elements [OK]
Hint: Zero initialize first, then assign specific elements for clarity [OK]
Common Mistakes:
  • Assuming partial init always safe without explicit zero
  • Not initializing array before assignment
  • Overwriting zeros with uninitialized values
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