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
关键字定义结构体,并在花括号内声明成员变量。 - 初始化结构体数组:可以在声明时直接初始化,也可以在声明后单独赋值。
- 动态输入数据:可以使用循环从用户那里动态输入数据,并存储到结构体数组中。
- 处理复杂数据:可以通过遍历结构体数组来处理和分析数据,例如计算平均值等。