📖 Scenario: You are managing a small library system. You want to store information about books including their title and number of pages.
🎯 Goal: Create an array of structures to hold book information, then print the details of each book.
📋 What You'll Learn
Define a structure named Book with two members: title (string) and pages (integer).
Create an array named library of 3 Book structures with exact titles and page counts.
Use a loop to print each book's title and page count.
💡 Why This Matters
🌍 Real World
Storing and managing collections of related data like books, students, or products is common in software applications.
💼 Career
Understanding arrays of structures is essential for working with complex data in C programming jobs, especially in systems programming and embedded development.
Progress0 / 4 steps
1
Define the Book structure and create the library array
Define a structure called Book with a char array title[50] and an intpages. Then create an array called library of 3 Book elements with these exact entries: {"C Programming", 250}, {"Data Structures", 300}, {"Algorithms", 400}.
C
Hint
Use struct keyword to define the structure. Use curly braces to initialize the array with exact titles and pages.
2
Create a variable to hold the number of books
Create an int variable called num_books and set it to 3 to represent the number of books in the library array.
C
Hint
Just create a simple integer variable and assign the value 3.
3
Use a for loop to print each book's details
Write a for loop using int i from 0 to less than num_books. Inside the loop, print the book's title and pages using library[i].title and library[i].pages.
C
Hint
Use a for loop with i from 0 to num_books - 1. Use printf to show the title and pages.
4
Print the final output
Run the program to print the details of all books in the library array.
C
Hint
Make sure your program prints each book's title and pages on a new line exactly as shown.
Practice
(1/5)
1. What is the correct way to declare an array of 5 structures named Student in C?
easy
A. Student arr[5];
B. struct Student arr;
C. Student arr;
D. struct arr[5];
Solution
Step 1: Understand structure array declaration
To declare an array of structures, use the structure type followed by the array name and size in square brackets.
Step 2: Apply correct syntax for array of structures
Since Student is the structure type, Student arr[5]; declares an array of 5 Student structures.
Final Answer:
Student arr[5]; -> Option A
Quick Check:
Array of structures = type name[size] [OK]
Hint: Use type name[size] to declare structure arrays [OK]
Common Mistakes:
Forgetting 'struct' keyword if not typedefed
Declaring single structure instead of array
Using wrong syntax like struct arr[5];
2. Which of the following is the correct syntax to access the age member of the 3rd element in an array students of structures?
easy
A. students->age[3];
B. students.age[3];
C. students[3].age;
D. students[2].age;
Solution
Step 1: Understand zero-based indexing in arrays
Arrays in C start at index 0, so the 3rd element is at index 2.
Step 2: Access structure member using dot operator
Use students[2].age to access the age member of the 3rd element.
Final Answer:
students[2].age; -> Option D
Quick Check:
3rd element = index 2, use dot for member [OK]
Hint: Remember arrays start at 0; 3rd element is index 2 [OK]
The array items has two elements: first with id=1, name="Pen"; second with id=2, name="Book".
Step 2: Understand printf access
items[1].name accesses the second element's name, which is "Book".
Final Answer:
Book -> Option B
Quick Check:
items[1].name = "Book" [OK]
Hint: Index 1 accesses second element's name [OK]
Common Mistakes:
Confusing index 0 and 1
Expecting id to print instead of name
Syntax errors in initialization
4. What is wrong with this code snippet?
struct Point {
int x, y;
};
struct Point points[3];
points[0].x = 10;
points[0].y = 20;
points[1].x = 30;
points[1].y = 40;
points[2].x = 50;
points[2].y = 60;
printf("%d", points[3].x);
medium
A. Array size should be 4 instead of 3
B. Missing semicolon after struct definition
C. Accessing points[3] is out of bounds
D. Incorrect struct member access syntax
Solution
Step 1: Check array size and indexing
The array points has size 3, valid indices are 0, 1, 2.
Step 2: Identify invalid access
Accessing points[3] is out of bounds and causes undefined behavior.
Final Answer:
Accessing points[3] is out of bounds -> Option C
Quick Check:
Array index must be less than size [OK]
Hint: Array indices go from 0 to size-1 only [OK]
Common Mistakes:
Using index equal to array size
Ignoring array bounds errors
Assuming array auto-expands
5. You have a structure Employee with members int id; and float salary;. How do you write a function in C that takes an array of Employee and its size, then returns the average salary?
hard
A. float averageSalary(Employee emp[], int n) { float sum=0; for(int i=0;i
B. float averageSalary(Employee *emp, int n) { float sum=0; for(int i=0;isalary; return sum/n; }
C. float averageSalary(Employee emp[], int n) { float sum=0; for(int i=0;i
D. float averageSalary(Employee emp[], int n) { float sum=0; for(int i=0;i
Solution
Step 1: Loop through array elements correctly
Use a for loop from 0 to n-1 and access each element with emp[i].
Step 2: Sum the salary member of each element
Access salary as emp[i].salary and add to sum, then divide by n.
Final Answer:
float averageSalary(Employee emp[], int n) { float sum=0; for(int i=0;i -> Option A
Quick Check:
Loop + emp[i].salary sum / n = average [OK]
Hint: Use emp[i].member to access array struct members [OK]
Common Mistakes:
Using emp->salary inside loop instead of emp[i].salary
Accessing emp.salary instead of emp[i].salary
Adding whole struct instead of member
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.