Bird
Raised Fist0
Cprogramming~10 mins

Nested structures - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to define a nested structure.

C
struct Point {
    int x;
    int y;
};

struct Rectangle {
    struct Point [1];
    struct Point bottomRight;
};
Drag options to blanks, or click blank then click option'
AtopRight
BtopLeft
Ccorner
Dpoint
Attempts:
3 left
💡 Hint
Common Mistakes
Using a generic name like 'point' instead of a descriptive one.
Forgetting to name the nested struct member.
2fill in blank
medium

Complete the code to access the x coordinate of the topLeft point in a Rectangle variable.

C
struct Rectangle rect;
int x_coord = rect.[1].x;
Drag options to blanks, or click blank then click option'
AtopLeft
Bpoint
CbottomRight
Dcorner
Attempts:
3 left
💡 Hint
Common Mistakes
Accessing bottomRight instead of topLeft.
Trying to access x directly from rect without the nested member.
3fill in blank
hard

Fix the error in the code to correctly initialize a nested structure.

C
struct Rectangle rect = { { [1], 10 }, {20, 30} };
Drag options to blanks, or click blank then click option'
A{5}
BtopLeft
C5
Dx
Attempts:
3 left
💡 Hint
Common Mistakes
Using the member name instead of a value.
Using braces incorrectly around a single integer.
4fill in blank
hard

Fill both blanks to declare and initialize a nested structure variable.

C
struct Rectangle [1] = { {10, [2], {20, 30} };
Drag options to blanks, or click blank then click option'
Arect
B15
C25
Dbox
Attempts:
3 left
💡 Hint
Common Mistakes
Using an invalid variable name.
Confusing the y coordinate value.
5fill in blank
hard

Fill all three blanks to define a nested structure and assign values.

C
struct Point {
    int [1];
    int [2];
};

struct Rectangle {
    struct Point topLeft;
    struct Point [3];
};
Drag options to blanks, or click blank then click option'
Ax
By
CbottomRight
Dcorner
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect member names for Point.
Naming the second Point member incorrectly.

Practice

(1/5)
1. What is a nested structure in C programming?
easy
A. A structure that contains another structure as a member
B. A structure with only one member
C. A structure declared inside a function
D. A structure that uses pointers only

Solution

  1. Step 1: Understand structure composition

    A nested structure means one structure is included inside another as a member.
  2. Step 2: Rule out distractors

    The other options describe unrelated concepts: a structure using pointers only, with only one member, or declared inside a function.
  3. Final Answer:

    A structure that contains another structure as a member -> Option A
  4. Quick Check:

    Nested structure = structure inside structure [OK]
Hint: Nested means one structure inside another [OK]
Common Mistakes:
  • Thinking nested means pointer usage
  • Confusing nested with single-member structures
  • Assuming nested means declared inside functions
2. Which of the following is the correct syntax to access a member of a nested structure in C?
easy
A. outer.inner->member
B. outer->inner->member
C. outer.inner.member
D. outer->inner.member

Solution

  1. Step 1: Identify access operator for nested structures

    When using nested structures (not pointers), use dot notation for each level: outer.inner.member.
  2. Step 2: Understand pointer vs non-pointer access

    Arrow (->) is used only when accessing members through pointers, which is not stated here.
  3. Final Answer:

    outer.inner.member -> Option C
  4. Quick Check:

    Use dot for nested struct members [OK]
Hint: Use dot notation for nested struct members [OK]
Common Mistakes:
  • Using arrow (->) when not using pointers
  • Mixing dot and arrow incorrectly
  • Confusing member access syntax
3. What is the output of the following C code?
typedef struct {
    int day;
    int month;
    int year;
} Date;

typedef struct {
    char name[20];
    Date birthday;
} Person;

int main() {
    Person p = {"Alice", {15, 8, 1990}};
    printf("%d-%d-%d", p.birthday.day, p.birthday.month, p.birthday.year);
    return 0;
}
medium
A. 15-8-1990
B. Alice-15-8
C. 1990-8-15
D. Compilation error

Solution

  1. Step 1: Understand structure initialization

    Person p is initialized with name "Alice" and birthday as Date {15, 8, 1990}.
  2. Step 2: Trace printf output

    printf prints p.birthday.day (15), p.birthday.month (8), p.birthday.year (1990) separated by dashes.
  3. Final Answer:

    15-8-1990 -> Option A
  4. Quick Check:

    Print nested struct members correctly [OK]
Hint: Access nested members with dot notation [OK]
Common Mistakes:
  • Printing name instead of date
  • Mixing order of day, month, year
  • Forgetting to initialize nested struct
4. Identify the error in this nested structure code snippet:
struct Address {
    char city[20];
    int zip;
};

struct Employee {
    char name[30];
    struct Address addr;
};

int main() {
    struct Employee emp;
    emp.addr->zip = 12345;
    return 0;
}
medium
A. Missing semicolon after struct definitions
B. Using '->' operator on a non-pointer structure variable
C. Incorrect declaration of nested structure
D. Cannot assign integer to zip member

Solution

  1. Step 1: Check member access syntax

    emp.addr is a structure variable, not a pointer, so '->' operator is invalid here.
  2. Step 2: Correct operator usage

    Use dot operator '.' to access zip: emp.addr.zip = 12345;
  3. Final Answer:

    Using '->' operator on a non-pointer structure variable -> Option B
  4. Quick Check:

    Use '.' for struct variables, '->' for pointers [OK]
Hint: Use '.' for struct, '->' only for pointers [OK]
Common Mistakes:
  • Using '->' on struct variables
  • Confusing pointer and non-pointer access
  • Ignoring compiler error messages
5. Given the following nested structures, how would you write a function in C that takes a Person and returns the birth year?
typedef struct {
    int day;
    int month;
    int year;
} Date;

typedef struct {
    char name[50];
    Date birthday;
} Person;

// Function prototype here
Which of the following is the correct function definition?
hard
A. int getBirthYear(Person *p) { return p.birthday->year; }
B. int getBirthYear(Person *p) { return p->birthday.year; }
C. int getBirthYear(Person p) { return p.year; }
D. int getBirthYear(Person p) { return p.birthday.year; }

Solution

  1. Step 1: Understand parameter passing

    The function takes a Person by value, so use dot notation to access members.
  2. Step 2: Access nested member correctly

    Access birthday.year as p.birthday.year since p is not a pointer.
  3. Final Answer:

    int getBirthYear(Person p) { return p.birthday.year; } -> Option D
  4. Quick Check:

    Use dot for struct value parameters [OK]
Hint: Use dot for struct, arrow for pointer parameters [OK]
Common Mistakes:
  • Using arrow (->) on non-pointer parameter
  • Accessing wrong member name
  • Confusing pointer and value parameter syntax
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