019. 使用結構體數組存儲復雜數據
- 019. 使用結構體數組存儲復雜數據
- 示例1:定義一個結構體并創建結構體數組
- 定義結構體
- 創建并初始化結構體數組
- 輸出結果
- 示例2:動態輸入數據到結構體數組
- 定義結構體
- 動態輸入數據
- 示例輸入和輸出
- 示例3:使用結構體數組處理復雜數據
- 定義結構體
- 創建并初始化結構體數組
- 輸出結果
019. 使用結構體數組存儲復雜數據
在C語言中,結構體數組是一種非常強大的工具,用于存儲和管理復雜的數據集合。通過定義一個結構體,并創建該結構體的數組,可以方便地存儲和操作多個相關數據項。以下將通過具體示例展示如何使用結構體數組來存儲復雜數據。
示例1:定義一個結構體并創建結構體數組
假設我們需要存儲一個班級學生的詳細信息,包括姓名、年齡、成績等。
定義結構體
#include <stdio.h>
#include <string.h>// 定義一個結構體來存儲學生信息
struct Student {char name[50]; // 學生姓名int age; // 學生年齡float score; // 學生成績
};
創建并初始化結構體數組
int main() {// 定義一個結構體數組,存儲3個學生的數據struct Student students[3] = {{"Alice", 20, 85.5},{"Bob", 22, 90.0},{"Charlie", 21, 78.5}};// 遍歷結構體數組并打印每個學生的信息for (int i = 0; i < 3; i++) {printf("Student %d:\n", i + 1);printf(" Name: %s\n", students[i].name);printf(" Age: %d\n", students[i].age);printf(" Score: %.2f\n", students[i].score);printf("\n");}return 0;
}
輸出結果
Student 1:Name: AliceAge: 20Score: 85.50Student 2:Name: BobAge: 22Score: 90.00Student 3:Name: CharlieAge: 21Score: 78.50
示例2:動態輸入數據到結構體數組
假設我們需要從用戶那里動態輸入學生的信息,并存儲到結構體數組中。
定義結構體
#include <stdio.h>
#include <string.h>// 定義一個結構體來存儲學生信息
struct Student {char name[50]; // 學生姓名int age; // 學生年齡float score; // 學生成績
};
動態輸入數據
int main() {int n;printf("Enter the number of students: ");scanf("%d", &n);// 創建一個結構體數組struct Student students[n];// 動態輸入學生信息for (int i = 0; i < n; i++) {printf("Enter details for student %d:\n", i + 1);printf(" Name: ");scanf("%s", students[i].name);printf(" Age: ");scanf("%d", &students[i].age);printf(" Score: ");scanf("%f", &students[i].score);}// 打印所有學生的信息printf("\nStudent Details:\n");for (int i = 0; i < n; i++) {printf("Student %d:\n", i + 1);printf(" Name: %s\n", students[i].name);printf(" Age: %d\n", students[i].age);printf(" Score: %.2f\n", students[i].score);printf("\n");}return 0;
}
示例輸入和輸出
假設用戶輸入:
Enter the number of students: 2
Enter details for student 1:Name: AliceAge: 20Score: 85.5
Enter details for student 2:Name: BobAge: 22Score: 90.0
輸出結果:
Student Details:
Student 1:Name: AliceAge: 20Score: 85.50Student 2:Name: BobAge: 22Score: 90.00
示例3:使用結構體數組處理復雜數據
假設我們需要存儲一個公司員工的信息,包括姓名、職位、工資等,并計算平均工資。
定義結構體
#include <stdio.h>
#include <string.h>// 定義一個結構體來存儲員工信息
struct Employee {char name[50]; // 員工姓名char position[50]; // 員工職位float salary; // 員工工資
};
創建并初始化結構體數組
int main() {// 定義一個結構體數組,存儲3個員工的數據struct Employee employees[3] = {{"Alice", "Manager", 75000.0},{"Bob", "Developer", 60000.0},{"Charlie", "Intern", 30000.0}};float totalSalary = 0.0;// 遍歷結構體數組并打印每個員工的信息for (int i = 0; i < 3; i++) {printf("Employee %d:\n", i + 1);printf(" Name: %s\n", employees[i].name);printf(" Position: %s\n", employees[i].position);printf(" Salary: %.2f\n", employees[i].salary);printf("\n");totalSalary += employees[i].salary; // 累加工資}// 計算平均工資float averageSalary = totalSalary / 3.0;printf("Average Salary: %.2f\n", averageSalary);return 0;
}
輸出結果
Employee 1:Name: AlicePosition: ManagerSalary: 75000.00Employee 2:Name: BobPosition: DeveloperSalary: 60000.00Employee 3:Name: CharliePosition: InternSalary: 30000.00Average Salary: 55000.00
通過上述示例,你可以看到如何使用結構體數組來存儲和處理復雜的數據:
- 定義結構體:使用
struct
關鍵字定義結構體,并在花括號內聲明成員變量。 - 初始化結構體數組:可以在聲明時直接初始化,也可以在聲明后單獨賦值。
- 動態輸入數據:可以使用循環從用戶那里動態輸入數據,并存儲到結構體數組中。
- 處理復雜數據:可以通過遍歷結構體數組來處理和分析數據,例如計算平均值等。