Bird
Raised Fist0
C++programming~20 mins

Defining structures in C++ - 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 access
What is the output of this C++ code?
C++
struct Point {
    int x;
    int y;
};

int main() {
    Point p = {3, 4};
    std::cout << p.x + p.y << std::endl;
    return 0;
}
A7
B34
C0
DCompilation error
Attempts:
2 left
💡 Hint
Add the values of x and y members of the structure.
❓ Predict Output
intermediate
2:00remaining
Size of structure with padding
What is the size of this structure on a typical 64-bit system?
C++
struct Data {
    char a;
    int b;
    char c;
};

int main() {
    std::cout << sizeof(Data) << std::endl;
    return 0;
}
A8
B6
C12
D16
Attempts:
2 left
💡 Hint
Consider padding added for alignment between members.
🔧 Debug
advanced
2:00remaining
Identify the error in structure initialization
What error will this code produce?
C++
#include <iostream>
#include <string>

struct Person {
    std::string name;
    int age;
};

int main() {
    Person p = {"Alice"};
    std::cout << p.name << " " << p.age << std::endl;
    return 0;
}
ACompilation error: missing initializer for 'age'
BRuntime error: uninitialized age
COutput: Alice 0
DOutput: Alice garbage_value
Attempts:
2 left
💡 Hint
All members must be initialized or have default values.
🧠 Conceptual
advanced
2:00remaining
Effect of 'typedef' with structures
What does the following code do?
C++
#include <iostream>

typedef struct {
    int id;
    float score;
} Record;

int main() {
    Record r = {101, 95.5};
    std::cout << r.id << " " << r.score << std::endl;
    return 0;
}
ADefines a structure named 'Record' and a variable of that type
BDefines a structure and creates an alias 'Record' for it
CCauses a syntax error due to missing structure name
DDefines a class named 'Record' instead of a structure
Attempts:
2 left
💡 Hint
typedef creates a new name for the unnamed structure.
❓ Predict Output
expert
2:00remaining
Output of nested structure member access
What is the output of this code?
C++
struct Engine {
    int horsepower;
};

struct Car {
    Engine engine;
    int year;
};

int main() {
    Car c = {{250}, 2020};
    std::cout << c.engine.horsepower << " " << c.year << std::endl;
    return 0;
}
A250 0
BCompilation error
C0 2020
D250 2020
Attempts:
2 left
💡 Hint
Nested structures can be initialized with nested braces.

Practice

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

Solution

  1. Step 1: Understand the role of struct

    A struct is used to group different variables together under one name, making it easier to manage related data.
  2. Step 2: Compare with other options

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

    To group related variables under one name -> Option A
  4. Quick Check:

    Struct groups data = B [OK]
Hint: Remember: struct bundles variables like a box [OK]
Common Mistakes:
  • Confusing struct with functions
  • Thinking struct creates loops
  • Mixing struct with dynamic memory
2. Which of the following is the correct way to define a structure named Person with members name (string) and age (int)?
easy
A. struct Person = { string name; int age; };
B. struct Person ( string name; int age; );
C. struct Person { string name; int age; };
D. struct Person: string name; int age;

Solution

  1. Step 1: Recall correct struct syntax

    In C++, a struct is defined using curly braces { } with members inside, ending with a semicolon.
  2. Step 2: Check each option

    struct Person { string name; int age; }; uses correct syntax with braces and semicolon. Options B, C, and D use incorrect symbols or missing braces.
  3. Final Answer:

    struct Person { string name; int age; }; -> Option C
  4. Quick Check:

    Struct uses braces and semicolon = A [OK]
Hint: Use braces { } and end with semicolon ; [OK]
Common Mistakes:
  • Using parentheses instead of braces
  • Omitting the semicolon after struct
  • Using equal sign or colon wrongly
3. What will be the output of this code?
struct Point { int x; int y; };
int main() {
  Point p = {3, 4};
  std::cout << p.x << "," << p.y << std::endl;
  return 0;
}
medium
A. 3,4
B. 4,3
C. x,y
D. Compilation error

Solution

  1. Step 1: Understand struct initialization

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

    The code prints p.x then a comma, then p.y, so output is "3,4".
  3. Final Answer:

    3,4 -> Option A
  4. Quick Check:

    p.x=3 and p.y=4 prints 3,4 [OK]
Hint: Struct members print in order assigned [OK]
Common Mistakes:
  • Swapping member values
  • Expecting member names to print
  • Thinking initialization causes error
4. Identify the error in this structure definition:
struct Car {
  string model
  int year;
};
medium
A. Cannot have string type in struct
B. Missing semicolon after Car struct
C. Wrong keyword used instead of struct
D. Missing semicolon after model member

Solution

  1. Step 1: Check member declarations

    Each member must end with a semicolon. The model member is missing a semicolon.
  2. Step 2: Verify struct ending

    The struct ends with a semicolon, which is correct. The keyword struct is correct. String type is allowed.
  3. Final Answer:

    Missing semicolon after model member -> Option D
  4. Quick Check:

    Each member needs ; = A [OK]
Hint: Check each member line ends with ; [OK]
Common Mistakes:
  • Forgetting semicolon after members
  • Confusing struct end semicolon with member semicolon
  • Thinking string is invalid type
5. Given the structure:
struct Employee {
  string name;
  int id;
  double salary;
};

Which code correctly creates an Employee variable and sets the salary to 50000.0?
hard
A. Employee e; e.salary = 50000.0;
B. All of the above
C. Employee e = {"John", 101, 50000.0};
D. Employee e = {"John", 101}; e.salary = 50000.0;

Solution

  1. Step 1: Check each option for valid struct usage

    Employee e; e.salary = 50000.0; creates an Employee and sets salary directly, which is valid.
  2. Step 2: Analyze options B and C

    Employee e = {"John", 101}; e.salary = 50000.0; initializes name and id, then sets salary separately, valid. Employee e = {"John", 101, 50000.0}; initializes all members at once, also valid.
  3. Step 3: Confirm all options are correct

    All three ways correctly create and set salary.
  4. Final Answer:

    All of the above -> Option B
  5. Quick Check:

    Multiple valid ways to set struct members = D [OK]
Hint: Struct members can be set during or after creation [OK]
Common Mistakes:
  • Thinking partial initialization is invalid
  • Assuming only one correct way to assign members
  • Forgetting to set salary after partial init
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