当前位置: 首页 > ai >正文

【C语言练习】019. 使用结构体数组存储复杂数据

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

通过上述示例,你可以看到如何使用结构体数组来存储和处理复杂的数据:

  1. 定义结构体:使用struct关键字定义结构体,并在花括号内声明成员变量。
  2. 初始化结构体数组:可以在声明时直接初始化,也可以在声明后单独赋值。
  3. 动态输入数据:可以使用循环从用户那里动态输入数据,并存储到结构体数组中。
  4. 处理复杂数据:可以通过遍历结构体数组来处理和分析数据,例如计算平均值等。
http://www.xdnf.cn/news/3662.html

相关文章:

  • 【unity游戏开发入门到精通——UGUI】整体控制一个UGUI面板的淡入淡出——CanvasGroup画布组组件的使用
  • 基于D-Mixer与TransXNet的YOLOv8改进—融合全局-局部特征与空间降维注意力机制的CNN-ViT混合架构
  • 三、shell脚本--运算符与表达式:让脚本学会“思考”
  • 高中数学联赛模拟试题精选学数学系列第4套几何题
  • 数据的存储
  • Python表达式全解析:从基础到高级
  • 开源项目实战学习之YOLO11:ultralytics-cfg-models-nas(十)
  • C++的内存
  • 深入探索 AAC 编码原理与 ADTS 格式:音频世界的智慧结晶
  • PCIe | TLP 报头 / 包格式 / 地址转换 / 配置空间 / 寄存器 / 配置类型
  • 第二章:一致性基础 A Primer on Memory Consistency and Cache Coherence - 2nd Edition
  • 线程互斥与同步(上)
  • 2025年渗透测试面试题总结-拷打题库36(题目+回答)
  • Python Cookbook-6.18 用__init__参数自动初始化实例变量
  • 多端定制系统开发:打造高效全平台覆盖的APP解决方案
  • Python爬虫(16)Python爬虫数据存储新维度:Redis Edge近端计算赋能实时数据处理革命
  • phpyun人才系统v7.0升级v7.1 开源vip版,php云专业人才招聘系统小程序零工市场源码支持v4.6的更新步骤流程详解
  • 工作记录 2015-07-15
  • 数据结构的基本概念以及算法的基本内容
  • python:如何获取股票 周K线数据、月K线数据
  • Go语言入门基础:协程
  • 【信息系统项目管理师-论文真题】2012上半年论文详解(包括解题思路和写作要点)
  • 装饰器@wraps(func)详解
  • 伊甸园之东: 农业革命与暴力的复杂性
  • Learning vtkjs之Cutter
  • 有向图强连通分量好题分享(一)
  • 【深度学习的灵魂】图片布局生成模型LayoutPrompt(2)·布局序列化模块
  • 如何通过文理工三类AI助理赋能HI,从而,颠覆“隔行如隔山”的旧观念和“十万小时定律”的成长限制
  • 快速掌握--cursor
  • 深入解析 Stacking:集成学习的“超级英雄联盟