chap09-结构.ppt
《chap09-结构.ppt》由会员分享,可在线阅读,更多相关《chap09-结构.ppt(48页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Chap 9 结构结构 9.1 结构变量结构变量9.2 结构数组结构数组9.3 结构指针结构指针9.4 构建手机通讯录构建手机通讯录9.5 链表链表本章要点本章要点n什么是结构?结构与数组有什么差别?什么是结构?结构与数组有什么差别?n有几种结构的定义形式,它们之间有什么不同?有几种结构的定义形式,它们之间有什么不同?n什么是结构的嵌套?什么是结构的嵌套?n什么是结构变量和结构成员变量,如何引用结构成什么是结构变量和结构成员变量,如何引用结构成员变量?员变量?n结构变量如何作为函数参数使用?结构变量如何作为函数参数使用?n什么是结构数组,如何定义和使用结构数组?什么是结构数组,如何定义和使用结
2、构数组?n什么是结构指针,它如何实现对结构分量的操作?什么是结构指针,它如何实现对结构分量的操作?n结构指针是如何作为函数的参数的?结构指针是如何作为函数的参数的?n单向链表的概念及其基本操作单向链表的概念及其基本操作9.1 结构的概念与定义结构的概念与定义n通讯录信息:通讯录信息:struct friends_list char name10;/*姓名姓名*/int age;/*年龄年龄*/char telephone13;/*联系电话联系电话*/;n结构:结构:构造数据类型构造数据类型,把有内在联系的,把有内在联系的不同类型不同类型的数据的数据统一成一个整体,使它们相互关联统一成一个整体,
3、使它们相互关联n结构又是变量的集合,可以单独使用其成员结构又是变量的集合,可以单独使用其成员关键字关键字struct和结构名和结构名一起组成一个新的数据一起组成一个新的数据类型名类型名 结构的定义以分号结束,结构的定义以分号结束,被看作一条语句被看作一条语句 结构定义示例结构定义示例struct point double x;double y;struct address char city10;char street20;int code;int zip;struct friendslist char name10;char sex2;int age;struct address addr;
4、char telephone13;char email30;姓名姓名性别性别年龄年龄 通信地址通信地址联系联系电话电话电子电子邮箱邮箱城市城市街道街道门牌号门牌号邮编邮编struct date int year;int month;int day;9.2 结构变量结构变量 9.2.1 结构变量的定义和初始化结构变量的定义和初始化9.2.2 结构变量的使用结构变量的使用9.2.1结构变量的定义和初始化结构变量的定义和初始化1单独定义单独定义struct friendslist char name10;int age;char telephone13;struct friendslist frie
5、nd1,friend2;2.混合定义混合定义struct friendslistchar name10;int age;char telephone13;friend1,friend23.无类型名定义无类型名定义struct char name10;int age;char telephone13;friend1,friend2;struct friendslist friend1=Zhang,26,0571-85171880 ;name age telephone Zhang260571-852718809.2.2 结构变量的使用结构变量的使用1.结构变量成员的引用结构变量成员的引用 结构变
6、量名结构变量名.结构成员名结构成员名 struct friends_list char name10;int age;char telephone13;struct friends_list friend1,friend2;friend1=Zhang,36,0571-85171884 ;strcpy(friend2.name,Zhang San);friend2.age=26;strcpy(friend2.telephone,0571-85171880);X例例9-1 计算实发工资计算实发工资在一个职工工资管理系统中工资项目包括在一个职工工资管理系统中工资项目包括:编号、姓编号、姓名、基本工资
7、、奖金、保险、实发工资名、基本工资、奖金、保险、实发工资。输入一个正整数输入一个正整数n,再输入,再输入n个职工的前个职工的前5项信息,项信息,计算并输出每位职工的实发工资。计算并输出每位职工的实发工资。实发工资实发工资=基本工资基本工资+奖金奖金保险。保险。struct employee int num;char name20;float jbgz,jj,bx,sfgz;#includestruct employee int num;char name20;float jbgz,jj,bx,sfgz;main(void)int i,n;struct employee e;scanf(%d,&
8、n);for(i=1;i=n;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);结构变量的使用整体赋值结构变量的使用整体赋值2.结构变量的整体赋值结构变量的整体赋值具有相同类型的结构变量可以直接赋值。具有相同类型的结构变量可以直接赋值。将赋值符号右边结构变量的每一个成员的值都赋给了左边将赋值符号右边结构变量的每一个成员的值都赋给了左边结构变量中相应的成员。结
9、构变量中相应的成员。struct friends_list char name10;int age;char telephone13;friend1=Zhang,26,“0571-85271880”,friend2;friend2=friend1;结构变量的使用函数参数结构变量的使用函数参数结构变量可以作为结构变量可以作为函数的参数函数的参数或或返回值返回值改写例改写例9-2,要求使用,要求使用结构变量结构变量作为函数参数。作为函数参数。n定义一个用于计算实发工资的函数:定义一个用于计算实发工资的函数:float count_sfgz(struct employee m)return m.jb
10、gz+m.jj-m.bx;n再将主函数再将主函数main中的语句:中的语句:e.sfgz=e.jbgz+e.jj-e.bx;改为:改为:e.sfgz=count_sfgz(e);n一个结构变量只能表示一个实体的信息,一个结构变量只能表示一个实体的信息,如果有许多相同类型的实体,就需要使用如果有许多相同类型的实体,就需要使用结构数组。结构数组。n结构数组是结构与数组的结合,与普通数结构数组是结构与数组的结合,与普通数组的不同之处在于每个数组元素都是一个组的不同之处在于每个数组元素都是一个结构类型的数据,包括各个成员项。结构类型的数据,包括各个成员项。9.3 结构数组结构数组 struct fri
11、endslist char name10;int age;char telephone13;friends10;9.3 结构数组结构数组 friends91360573243630Li Sifriends10571-8527188026Zhang Sanfriends0struct friendslist friends10=zhang san,26,0571-85271880,Li Si,30,13605732436;结构数组元素结构数组元素 n结构数组元素的成员引用结构数组元素的成员引用结构体数组名结构体数组名下标下标.结构体成员名结构体成员名 n使用方法与同类型的变量完全相同使用方法与同
12、类型的变量完全相同friends5.age=26;strcpy(friends5.name,Zhang San);friends4=friends1;friends91360573243630Li Sifriends10571-8527188026Zhang Sanfriends0例例9-2 结构数组排序结构数组排序 输入并保存输入并保存10个学生的信息,计算并输出平均个学生的信息,计算并输出平均分,再按照从高分到低分的顺序输出他们分,再按照从高分到低分的顺序输出他们的信息。的信息。#include struct student int num;char name20;int score;st
13、ruct student stud10;/*定义结构数组定义结构数组*/main(void)int i,j,index,sum=0;struct student temp;for(i=0;i 10;i+)scanf(%d%s%d,&studi.num,studi.name,&studi.score);sum=sum+studi.score;/*按照分数从低到高排序,使用选择排序法按照分数从低到高排序,使用选择排序法*/for(i=0;i 9;+i)index=i;for(j=i+1;j 10;j+)if(studj.score”访问指针指向的结构成员。访问指针指向的结构成员。p-age=36;
14、当当p=&friend1时,以下三条语句相同:时,以下三条语句相同:friend1.age=36;(*p).age=36;p-age=36;9.4.2 结构指针作为函数参数结构指针作为函数参数当当结结构构指指针针作作为为函函数数的的参参数数时时,执执行行效效率率高高,可以完成比基本类型指针更为复杂的操作。可以完成比基本类型指针更为复杂的操作。例例9-3 输输入入10个个学学生生的的学学号号、姓姓名名和和成成绩绩,输输出学生的成绩等级和不及格人数。出学生的成绩等级和不及格人数。每个学生的记录包括学号、姓名、成绩和等级每个学生的记录包括学号、姓名、成绩和等级要要求求定定义义和和调调用用函函数数se
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- chap09 结构
限制150内