Chap9结构 9.1职工发工资 9.2结构变量 9.3结构数组 9.4结构指针
Chap 9 结构 9.1 职工发工资 9.2 结构变量 9.3 结构数组 9.4 结构指针
本章要点 ■什么是结构?结构与数组有什么差别? ■ 有几种结构的定义形式,它们之间有什么不同? 什么是结构的嵌套? 熊育暴續村变益和结村成员变过,如何引用结构 结构变量如何作为函数参数使用? 什么是结构数组,如何定义和使用结构数组? ■ 什么是结构指针,它如何实现对结构分量的操作? ■结构指针是如何作为函数的参数的?
本章要点 ◼ 什么是结构?结构与数组有什么差别? ◼ 有几种结构的定义形式,它们之间有什么不同? ◼ 什么是结构的嵌套? ◼ 什么是结构变量和结构成员变量,如何引用结构 成员变量? ◼ 结构变量如何作为函数参数使用? ◼ 什么是结构数组,如何定义和使用结构数组? ◼ 什么是结构指针,它如何实现对结构分量的操作? ◼ 结构指针是如何作为函数的参数的?
9.1职工发工资 9.1.1程序解析 9.1.2结构的概念与定义 9.1.3结构的嵌套定义
9.1 职工发工资 9.1.1 程序解析 9.1.2 结构的概念与定义 9.1.3 结构的嵌套定义
9.1.1程序解析 在一个职工工资管理系统中,工资项目包括编号、姓 名、基本工资、奖金、保险、实发工资。 输入一个正整数n,再输入n个职工的前5项信息,计 算并输出每位职工的实发工资。 实发工资=基本工资+奖金-保险
9.1.1 程序解析 在一个职工工资管理系统中,工资项目包括编号、姓 名、基本工资、奖金、保险、实发工资。 输入一个正整数n,再输入n个职工的前5项信息,计 算并输出每位职工的实发工资。 实发工资 = 基本工资+奖金–保险
#include 源程序 struct employeef intnum; char name[20]; floatjbgz,jj,bx, 请输入职工人数n:1 ; 请输入第1个职工的信息:102 Zhong2200.580085.2 int main(void) 编号:102姓名:Zhong实发工资:2915.30 inti,n; struct employee e; printf("请输入职工人数n:"); scanf("%d",&n); for(i=1;i<=n;i++){ printf("请输入第%d个职工的信息:",i); scanf("%d%s",&e.num,e.name); scanf("%f%f%f",&e.jbgz,&e.jj,&e.bx); e.sfgz=e.jbgz+e.jj-e.bx; printf("编号:%d姓名:%s实发工资:%.2fn",e.num,e.name,e.sfgz; return 0;
#include 源程序 struct employee{ int num; char name[20]; float jbgz, jj, bx, sfgz; }; int main(void) { int i, n; struct employee e; printf("请输入职工人数n: "); scanf("%d", &n); for(i = 1; i <= n; i++){ printf("请输入第%d个职工的信息: ", i); scanf("%d%s", &e.num, e.name); scanf("%f%f%f", &e.jbgz, &e.jj, &e.bx); e.sfgz = e.jbgz + e.jj - e.bx; printf("编号:%d 姓名:%s实发工资:%.2f\n", e.num, e.name, e.sfgz); } return 0; } 请输入职工人数n: 1 请输入第1个职工的信息:102 Zhong 2200.5 800 85.2 编号:102 姓名:Zhong 实发工资:2915.30
9.1.2 结构的概念与定义 ■使用结构来表示通讯录信息: struct friends_list{ char name[10];*姓名*M int age; *年龄*/ char telephone[13];*联系电话*/ }; 结构:构造数据类型,把有内在联系的不同类型 的数据统一成一个整体,使它们相互关联 ■结构又是变量的集合,可以单独使用其成员
9.1.2 结构的概念与定义 ◼ 使用结构来表示通讯录信息: struct friends_list{ char name[10]; /*姓名*/ int age; /*年龄*/ char telephone[13]; /*联系电话*/ }; ◼ 结构:构造数据类型,把有内在联系的不同类型 的数据统一成一个整体,使它们相互关联 ◼ 结构又是变量的集合,可以单独使用其成员
结构的定义 ■结构类型定义的一般形式为: struct结构名{ 关键字struct和它后面 的结构名一起组成一个 类型名结构成员名1; 新的数据类型名 类型名结构成员名2; ●● 类型名结构成员名n; 结构的定义以分号结束, 被看作一条语句
结构的定义 ◼ 结构类型定义的一般形式为: struct 结构名 { 类型名 结构成员名1; 类型名 结构成员名2; • • • 类型名 结构成员名n; }; 结构的定义以分号结束, 被看作一条语句 关键字struct和它后面 的结构名一起组成一个 新的数据类型名
结构定义示例 定义平面坐标结构: struct point double x; double y; }; 虽然x、y的类型相同,也可以用数组的方式 表示,但采用结构体描述整体性更强,增加 了程序的可读性,使程序更清晰
结构定义示例 定义平面坐标结构: struct point { double x; double y; }; 虽然x、y的类型相同,也可以用数组的方式 表示,但采用结构体描述整体性更强,增加 了程序的可读性,使程序更清晰
9.1.3结构的嵌套定义 ■ 在实际生活中,一个较大的实体可能由多个成员 构成,而这些成员中有些又有可能是由一些更小 的成员构成的实体。 ■在手机通讯录中,增加“通信地址” 姓名 性别 年龄 通信地址 联系 电子 城市 街道 门牌号 邮编 电话 邮箱
9.1.3 结构的嵌套定义 ◼ 在实际生活中,一个较大的实体可能由多个成员 构成,而这些成员中有些又有可能是由一些更小 的成员构成的实体。 ◼ 在手机通讯录中,增加“通信地址” 姓名 性别 年龄 通信地址 联系 电话 电子 城市 街道 门牌号 邮编 邮箱
结构的嵌套定义 姓名 性别 年龄 通信地址 联系 电子 城市 街道门牌号 邮编 电话 邮箱 struct addressf struct nest_friendslist char city[10]; char name[10]; char street[20]; char sex[2] int code; int age; int zip; struct address addr; char telephone[13]; }; char email[13]; nest_friend; 在定义嵌套的结构类型时,必须先定义 成员的结构类型,再定义主结构类型
结构的嵌套定义 struct address{ char city[10]; char street[20]; int code; int zip; }; struct nest_friendslist { char name[10]; char sex[2] int age; struct address addr; char telephone[13]; char email[13]; } nest_friend; 在定义嵌套的结构类型时,必须先定义 成员的结构类型,再定义主结构类型。 姓名 性别 年龄 通信地址 联系 电话 电子 城市 街道 门牌号 邮编 邮箱