第10章_结构体与共用体课件.ppt

上传人:春哥&#****71; 文档编号:15240367 上传时间:2022-05-11 格式:PPT 页数:30 大小:259KB
返回 下载 相关 举报
第10章_结构体与共用体课件.ppt_第1页
第1页 / 共30页
第10章_结构体与共用体课件.ppt_第2页
第2页 / 共30页
点击查看更多>>
资源描述

《第10章_结构体与共用体课件.ppt》由会员分享,可在线阅读,更多相关《第10章_结构体与共用体课件.ppt(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第10章_结构体与共用体ppt课件(全)第第10章章 结构体与共用体结构体与共用体第10章_结构体与共用体ppt课件(全)第第10章章 结构体与共用体结构体与共用体10.1 结构体类型的定义结构体类型的定义10.2 结构体类型变量结构体类型变量10.3 结构体数组结构体数组10.4 结构体和指针结构体和指针10.5 结构体和函数结构体和函数10.6 链链 表表10.7 共用体共用体10.8 枚枚 举举10.9 用用typedef定义类型定义类型第10章_结构体与共用体ppt课件(全)numnamesexageScoreadrr041000Li PingM1878Beijing041001Liu

2、 YiF2088Jilin041002Yao LiM1990Beijing第10章_结构体与共用体ppt课件(全)10.1结构体类型的定义结构体类型的定义一般形式:一般形式: struct 结构体名结构体名 结构体成员表结构体成员表 ; struct student int number; char name20; char sex; int age; float score; char addr30; ;注意:注意:(1) 定义了一种类型,不是变量。定义了一种类型,不是变量。(2) 成员可以是任意类型,成员可以是任意类型,(3) 最后的分号最后的分号“;”不能省略。不能省略。(4) 可以嵌套

3、定义,如:可以嵌套定义,如:numnamesexageScoreadrr041000Li PingM1878Beijing041001Liu YiF2088Jilin041002Yao LiM1990Beijing第10章_结构体与共用体ppt课件(全)struct date int year; int month; int day; ;struct stu long int number; char name20; char sex; struct date birthday; float score3; char address30; ;第10章_结构体与共用体ppt课件(全)10.2 结

4、构体类型变量结构体类型变量10.2.1 结构体类型变量的定义结构体类型变量的定义1 先定义类型,再定义变量。先定义类型,再定义变量。 struct 结构体名结构体名 变量名等;变量名等;2在定义结构体类型的同时定在定义结构体类型的同时定义变量义变量 struct 结构体名结构体名 成员表成员表变量名表列;变量名表列;3直接定义结构体类型变量直接定义结构体类型变量 struct 成员表成员表变量名表列;变量名表列;score3numname20sexbirthdayaddr30s1 地址地址如:如: struct stu s1,s2;例如:例如:struct st int num; char n

5、ame20; float score;s1,s2;例如:例如:struct int num; char name20; float score;s1,s2;第10章_结构体与共用体ppt课件(全)10.2.2 结构体变量的引用结构体变量的引用结构体变量名结构体变量名.成员名成员名例如:例如:struct date int year; int month; int day; struct example int num; char name20; struct date bir;s1,s2;各成员的引用形式如下:各成员的引用形式如下:s1.num=101;s2.num=s1.num+1;strc

6、py(s1.name,”wang”);s1.bir.year=1985;注意:注意:结构体变量的初始化结构体变量的初始化结构体类型结构体类型 结构体变量名结构体变量名=初初始值表始值表;例如:例如:struct studentchar name10; float score3;stu=“wang_li”, 81,77,96;第10章_结构体与共用体ppt课件(全)【例【例10.1】输入某学生的姓名、年龄和】输入某学生的姓名、年龄和5门功课成绩,门功课成绩,计算平均成绩并输出。计算平均成绩并输出。程序运行情况:程序运行情况:wang_li 21 82 77 91 68 85 wang_li 21

7、82.0 77.0 91.0 68.0 85.0 average= 80.6#include #include void main()void main()struct studentstruct student char name10; char name10; int age; int age; float score5,ave; float score5,ave; stu; stu; int i; int i; stu.ave=0; stu.ave=0; scanf(%s%d,stu.name,&stu.age); scanf(%s%d,stu.name,&stu.age); for(i

8、=0;i5;i+) for(i=0;i5;i+) scanf(%f,&stu.scorei); scanf(%f,&stu.scorei); stu.ave+=stu.scorei/5.0; stu.ave+=stu.scorei/5.0; printf(%s%4dprintf(%s%4dn,stu.name,stu.age);n,stu.name,stu.age); for(i=0;i5;i+) for(i=0;i5;i+)第10章_结构体与共用体ppt课件(全)10.3 结构体数组结构体数组10.3.1 结构体数组的定义与初结构体数组的定义与初始化始化1结构体数组的定义结构体数组的定义例如

9、:例如:struct student int num; char name20; char sex; int age; float score3;;struct student stu10;2结构体数组的初始化结构体数组的初始化struct student int num; char name20; char sex; int age; float score3; stu2= 1101,”wang li”,M”,21,75,82,94, 1102,”li ping”,F,20,82,79,90 ;注意:定义数组注意:定义数组stu时,数组长时,数组长度可以不指定,如:度可以不指定,如:stu

10、=. ., . .;第10章_结构体与共用体ppt课件(全) 10.3.2 结构体数组的引用结构体数组的引用下面通过一个例子来说明结构体数组的引用。下面通过一个例子来说明结构体数组的引用。【例【例10.2】输入】输入3个复数的实部和虚部放在一个结构体个复数的实部和虚部放在一个结构体数组中,根据复数模数组中,根据复数模由大到小由大到小顺序对数组进行排序顺序对数组进行排序并输出。(注:复数的模并输出。(注:复数的模=sqrt(实部(实部*实部实部+虚部虚部*虚部)虚部)第10章_结构体与共用体ppt课件(全)运行结果:运行结果:3 2 1 1 5 4 5.00+4.00i3.00+2.00i1.0

11、0+1.00i#define N 3#define N 3#include #include #include #include void main()void main() struct complex struct complex float x,y; float x,y; float m; float m; aN,temp; aN,temp; int i,j,k; int i,j,k; for(i=0;iN;i+) for(i=0;iN;i+) scanf(%f%f,&ai.x,&ai.y); scanf(%f%f,&ai.x,&ai.y); ai.m=sqrt(ai.x*ai.x ai

12、.m=sqrt(ai.x*ai.x +ai.y*ai.y); +ai.y*ai.y); for(i=0;iN-1;i+)for(i=0;iN-1;i+) k=i; k=i; for(j=i+1;jN;j+) for(j=i+1;jN;j+) if(ak.maj.m) k=j; if(ak.m成员名成员名, 如:如:p-num第10章_结构体与共用体ppt课件(全)10.5 结构体和函数结构体和函数10.5.1 结构体作函数参数结构体作函数参数1结构体变量作函数参数结构体变量作函数参数【例【例10.4】输入两个复数,比较这两个复数模是否相等。】输入两个复数,比较这两个复数模是否相等。#inclu

13、de#includestruct comp float x,y; float m; ;float compare(struct comp a, struct comp b) a.m=sqrt(a.x*a.x+a.y*a.y); b.m=sqrt(b.x*b.x+b.y*b.y); return (a.m-b.m);void main() struct comp a,b; scanf(%f%f,&a.x,&a.y); scanf(%f%f,&b.x,&b.y); if(compare(a,b)=0) printf(Equaln); else printf(Unequaln);程序运行:程序运行:

14、1 2 2 1 Equal第10章_结构体与共用体ppt课件(全)#define N 5#define N 5#include#include#include#includestruct compstruct comp float x,y; float x,y; float m; float m; ; ;void sort(struct comp *p, int n) void sort(struct comp *p, int n) int i,j,k; int i,j,k; struct comp t; struct comp t; for(i=0;in-1;i+) for(i=0;in-1

15、;i+) k=i; k=i; for(j=i+1;jn;j+) for(j=i+1;jm(p+j)-m) k=j; if(p+k)-m(p+j)-m) k=j; t=*(p+i); t=*(p+i); *(p+i)=*(p+k); *(p+i)=*(p+k); *(p+k)=t; *(p+k)=t; 第10章_结构体与共用体ppt课件(全)10.5.2 返回结构体的函数返回结构体的函数1返回结构体数据的函数返回结构体数据的函数 函数可以带回一个结构体类型的数据给主调函数。函数可以带回一个结构体类型的数据给主调函数。【例【例10.6】输入一批复数,查找并输出模最大的复数。】输入一批复数,查找并输

16、出模最大的复数。编写函数完成查找功能。编写函数完成查找功能。第10章_结构体与共用体ppt课件(全)#define N 5#include#includestruct comp float x,y; float m;struct comp find(struct comp p, int n) int i,k=0; float t=p0.m; for(i=1;in;i+) if(tpi.m) t=pi.m; k=i; return pk;void main() struct comp aN,max; int i; for(i=0;iN;i+)scanf(%f%f,&ai.x,&ai.y);ai.

17、m=sqrt(ai.x*ai.x+ai.y*ai.y); max=find(a,N);printf(max=%.1f%+.1fin,max.x,max.y);程序运行:程序运行:1 1 1 3 3 -2 5 -3 7 9 max=7.0+9.0i第10章_结构体与共用体ppt课件(全)2返回结构体指针的函数返回结构体指针的函数#define N 5#include#includestruct comp float x,y; float m;struct comp *find(struct comp *p, int n) int i,k=0; float t=p0.m; for(i=1;in;i

18、+) if(tm) t=(p+i)-m; k=i; return (p+k);void main() struct comp aN,*max; int i; for(i=0;ix,max-y);程序运行:程序运行:1 1 1 3 3 -2 5 -3 7 9 max=7.0+9.0i第10章_结构体与共用体ppt课件(全)10.6 链表(简介)链表(简介) 10.6.1 简单链表简单链表 head张三张三李四李四王五王五孙六孙六NULLstruct studentstruct student char name10; char name10; float score; float score;

19、struct student struct student * *next;next;第10章_结构体与共用体ppt课件(全)10.6.2 动态链表分配库函数动态链表分配库函数1.malloc函数函数函数原型:函数原型:void *malloc(unsigned int size);使用方法:使用方法:例如:例如:char *x;x=(char*)malloc(10);第10章_结构体与共用体ppt课件(全)2.calloc函数函数函数原型函数原型:void *calloc(unsigned int n,unsigned int size);使用方法:使用方法:例如:例如:float *x;x

20、=(float*)calloc(10,4);第10章_结构体与共用体ppt课件(全)3.free函数函数函数原型函数原型:void free(void *p);使用方式:使用方式:例如:例如:float *x;x=(float*)calloc(10,4); free(x);第10章_结构体与共用体ppt课件(全)9.6.3 单向链表的基本操作单向链表的基本操作 v建立链表建立链表v遍历链表遍历链表v将节点插入到链表将节点插入到链表v删除链表删除链表 第10章_结构体与共用体ppt课件(全)例:有以下结构体说明和变量定义例:有以下结构体说明和变量定义,如图所示如图所示, struct node

21、int data; struct node *next; *p,*q,*r; 指针指针p、q、r分别指向此链表中的三个连续结点。分别指向此链表中的三个连续结点。现要将现要将q所指结点从链表中删除,所指结点从链表中删除,同时要保持链表的连续,同时要保持链表的连续, 以下不能完成指定操作的语句是以下不能完成指定操作的语句是 A)p-next=q-next; B)p-next=p-next-next; C)p-next=r; D)p=q-next; 第10章_结构体与共用体ppt课件(全)10.7 共用体共用体1共用体变量的定义共用体变量的定义union 共用体名共用体名 共用体成员表共用体成员表

22、;(1) 先定义共用体类型,再定义共用体变量先定义共用体类型,再定义共用体变量例如:例如:union data int i; char ch; float f;union data a,b,c;第10章_结构体与共用体ppt课件(全)(2) 在定义公用体类型的同时定义变量在定义公用体类型的同时定义变量例如:例如:union data int i; char ch; float f; a,b,c;(3) 不定义共用体类型名,直接定义变量不定义共用体类型名,直接定义变量例如:例如:union int i; char ch; float f; a,b,c;第10章_结构体与共用体ppt课件(全)2共

23、用体变量的引用共用体变量的引用 共用体变量的引用方式与结构体变量相同,可以使共用体变量的引用方式与结构体变量相同,可以使 用以下用以下3种形式之一:种形式之一: (1)共用体变量名共用体变量名.成员名。成员名。 (2) 指针变量名指针变量名-成员名。成员名。 (3) (*指针变量名指针变量名).成员名。成员名。第10章_结构体与共用体ppt课件(全)10.8 枚枚 举举 如果一个变量的值只有几种可能的值,可以定义为枚举如果一个变量的值只有几种可能的值,可以定义为枚举类型。所谓类型。所谓“枚举枚举(enumeration)”是指将变量的值一一列举是指将变量的值一一列举出来,变量的值只限于列举出来

24、的值的范围内。出来,变量的值只限于列举出来的值的范围内。 1枚举类型的定义枚举类型的定义枚举类型定义的一般形式为:枚举类型定义的一般形式为: enum 枚举名枚举名 元素名元素名1,元素名,元素名2,元素名,元素名n ;其中,其中,enum为关键字;枚举名是枚举类型的名字,用标识为关键字;枚举名是枚举类型的名字,用标识符表示;元素名符表示;元素名1,元素名,元素名n是枚举元素或枚举常量,是枚举元素或枚举常量,用标识符表示。用标识符表示。第10章_结构体与共用体ppt课件(全)10.8 枚枚 举举2枚举变量的定义及其引用枚举变量的定义及其引用枚举变量定义的一般形式为:枚举变量定义的一般形式为:e

25、num 枚举名枚举名 枚举变量表;枚举变量表;例如:例如:enum week workday, week_end;定义了两个枚举变量定义了两个枚举变量workday和和week_end。也可在定义类型的同时定义变量,如:也可在定义类型的同时定义变量,如:enum week sun, mon, tue, wed, thu, fri, sat workday, week_end; 第10章_结构体与共用体ppt课件(全)10.9 用用typedef定义类型定义类型格式:格式:typedef 已定义的类型名已定义的类型名 新的类型名新的类型名;其中其中typedef是关键字。是关键字。例如:例如:typedef int INTEGER;typedef float REAL;typedef char* PSTR;第10章_结构体与共用体ppt课件(全) 使用使用typedef可以将复杂类型定义成简单类型可以将复杂类型定义成简单类型 例如可以用下面的形式定义结构体类型:例如可以用下面的形式定义结构体类型:typedef structint year; int month; int day; DATE;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁