Bird
Raised Fist0
Cprogramming~20 mins

Defining structures - Practice Problems & Coding Challenges

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

struct Point {
    int x;
    int y;
};

int main() {
    struct Point p1;
    p1.x = 5;
    p1.y = 10;
    printf("%d %d\n", p1.x, p1.y);
    return 0;
}
ACompilation error
B10 5
C5 10
D0 0
Attempts:
2 left
💡 Hint
Remember how structure members are assigned and accessed.
❓ Predict Output
intermediate
2:00remaining
Size of structure with padding
What is the output of this program printing the size of the structure?
C
#include <stdio.h>

struct Data {
    char a;
    int b;
};

int main() {
    printf("%zu\n", sizeof(struct Data));
    return 0;
}
A4
B5
C6
D8
Attempts:
2 left
💡 Hint
Think about how the compiler aligns data in memory.
🔧 Debug
advanced
2:00remaining
Identify the error in structure initialization
What error will this code produce when compiled?
C
#include <stdio.h>

struct Person {
    char name[10];
    int age;
};

int main() {
    struct Person p = {"Alice", 30, 100};
    printf("%s %d\n", p.name, p.age);
    return 0;
}
ACompilation error: too many initializers
BRuns and prints: Alice 30
CRuntime error: segmentation fault
DCompilation error: missing semicolon
Attempts:
2 left
💡 Hint
Check how many values are given for initialization compared to members.
❓ Predict Output
advanced
2:00remaining
Output of nested structures
What is the output of this program?
C
#include <stdio.h>

struct Date {
    int day;
    int month;
    int year;
};

struct Event {
    char name[20];
    struct Date date;
};

int main() {
    struct Event e = {"Meeting", {15, 8, 2024}};
    printf("%s on %d/%d/%d\n", e.name, e.date.day, e.date.month, e.date.year);
    return 0;
}
AMeeting on 8/15/2024
BMeeting on 15/8/2024
CCompilation error
DMeeting on 0/0/0
Attempts:
2 left
💡 Hint
Look at how nested structures are initialized and accessed.
🧠 Conceptual
expert
2:00remaining
Number of items in an array of structures
Given this code, how many elements does the array 'books' contain?
C
struct Book {
    char title[50];
    int pages;
};

struct Book books[] = {
    {"Book A", 100},
    {"Book B", 150},
    {"Book C", 200}
};
A3
B2
C0
D50
Attempts:
2 left
💡 Hint
Count the number of initializers in the array.

Practice

(1/5)
1. What is the purpose of using struct in C programming?
easy
A. To allocate memory dynamically
B. To create a loop structure
C. To group different data types under one name
D. To define a function

Solution

  1. Step 1: Understand the role of struct

    The struct keyword is used to group variables of different types into a single unit.
  2. Step 2: Compare with other options

    Options A, B, and C relate to memory allocation, loops, and functions, which are unrelated to struct.
  3. Final Answer:

    To group different data types under one name -> Option C
  4. Quick Check:

    struct groups data types = D [OK]
Hint: Remember: struct bundles variables like a box [OK]
Common Mistakes:
  • Confusing struct with loops or functions
  • Thinking struct allocates memory dynamically
  • Assuming struct defines a single data type only
2. Which of the following is the correct syntax to define a structure named Person with members int age and char name[20]?
easy
A. struct Person { int age; char name[20]; };
B. struct Person ( int age; char name[20]; );
C. struct Person = { int age; char name[20]; };
D. struct Person: int age; char name[20];

Solution

  1. Step 1: Recall correct struct syntax

    Structures are defined using curly braces { } with semicolons after each member.
  2. Step 2: Check each option

    struct Person { int age; char name[20]; }; uses correct braces and semicolons. Options B, C, and D use incorrect symbols or missing braces.
  3. Final Answer:

    struct Person { int age; char name[20]; }; -> Option A
  4. Quick Check:

    Correct struct syntax uses braces and semicolons = A [OK]
Hint: Use braces { } and semicolons ; inside struct [OK]
Common Mistakes:
  • Using parentheses instead of braces
  • Missing semicolons after members
  • Using equal sign or colon incorrectly
3. What will be the output of the following code?
struct Point { int x; int y; } p = {3, 4};
printf("%d %d", p.x, p.y);
medium
A. 0 0
B. 3 4
C. 4 3
D. Compilation error

Solution

  1. Step 1: Understand struct initialization

    The struct Point is initialized with p = {3, 4}, so p.x = 3 and p.y = 4.
  2. Step 2: Analyze printf output

    The printf prints p.x and p.y in order, so output is "3 4".
  3. Final Answer:

    3 4 -> Option B
  4. Quick Check:

    p.x=3 and p.y=4 prints as "3 4" [OK]
Hint: Struct members print in order of initialization [OK]
Common Mistakes:
  • Mixing order of members in output
  • Assuming default zero values
  • Thinking code causes compilation error
4. Identify the error in the following code snippet:
struct Car {
  int speed;
  char model[10];
};

struct Car c;
c.speed = 100;
c.model = "Sedan";
medium
A. Cannot assign string directly to array member
B. Missing semicolon after struct definition
C. Incorrect struct keyword usage
D. Variable c not declared

Solution

  1. Step 1: Check struct definition and declaration

    The struct is correctly defined and variable c declared.
  2. Step 2: Analyze assignment to c.model

    Arrays cannot be assigned directly with = operator; string copy functions like strcpy are needed.
  3. Final Answer:

    Cannot assign string directly to array member -> Option A
  4. Quick Check:

    Array assignment needs strcpy, not = [OK]
Hint: Use strcpy to assign strings to char arrays [OK]
Common Mistakes:
  • Assigning string literals directly to char arrays
  • Forgetting to include string.h for strcpy
  • Assuming semicolon or declaration errors
5. Given the structure definition:
struct Employee {
  int id;
  char name[30];
  float salary;
};

Which of the following code snippets correctly creates an Employee variable and initializes all members in one statement?
hard
A. struct Employee e; e.id = 101; e.name = "Alice"; e.salary = 75000.0;
B. struct Employee e = {id:101, name:"Alice", salary:75000.0};
C. struct Employee e = (101, "Alice", 75000.0);
D. struct Employee e = {101, "Alice", 75000.0};

Solution

  1. Step 1: Check initialization syntax for struct

    Structs can be initialized with braces { } listing values in order of members.
  2. Step 2: Evaluate each option

    struct Employee e = {101, "Alice", 75000.0}; uses correct brace initialization. struct Employee e; e.id = 101; e.name = "Alice"; e.salary = 75000.0; tries to assign string directly to array (invalid). struct Employee e = (101, "Alice", 75000.0); uses parentheses incorrectly. struct Employee e = {id:101, name:"Alice", salary:75000.0}; uses named initialization which is not standard in C.
  3. Final Answer:

    struct Employee e = {101, "Alice", 75000.0}; -> Option D
  4. Quick Check:

    Brace list initialization is correct for structs [OK]
Hint: Use braces with values in order to initialize structs [OK]
Common Mistakes:
  • Assigning strings directly to arrays after declaration
  • Using parentheses instead of braces
  • Trying named member initialization (not standard C)
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