第9章 结构体.ppt
《第9章 结构体.ppt》由会员分享,可在线阅读,更多相关《第9章 结构体.ppt(33页珍藏版)》请在麦多课文档分享上搜索。
1、第9章 结构体,第9章 结构体,本章主要内容,结构体类型的概念与定义。 结构体变量的定义、初始化及结构成员的引用。 结构体数组的定义及其使用。 结构体类型指针的定义及其使用。 结构体变量作为函数的参数。 返回结构体类型值的函数。 单链表及其应用。,本章学习目标,理解结构体类型的概念及其定义方法。 掌握结构体变量的定义和初始化。 掌握结构体成员的引用方法。 掌握结构体数组的定义和使用。 掌握结构体在函数中的应用。 理解链表的概念及其基本操作。,目录,9.1 引例 9.2 结构体的概念与定义 9.3 结构体变量的定义和引用 9.4 结构体数组 9.5 结构体变量与指针 9.6 结构体与函数 9.7
2、 单链表及其应用 9.8 实例,9.1 引例,引例:假设学生的基本信息包括学号、姓名、三门课程成绩以及个人平均成绩。要求输入个学生信息,计算并输出平均分最高的学生信息。,问题1:不能用二维数组,因为每个成员的类型不一致。,问题2:如果定义多个相互独立的一维数组,则难以反映出同一名学生各成员数据之间的内在联系。,内存分布图,解决方案:引入结构体数据类型,9.2 结构体的概念与定义,结构体是一种允许程序员把一些数据分量(结构成员)聚合成一个整体的数据类型。,数组的所有元素的数据类型必须相同,而结构体类型所包含的成员数据类型可以互不相同。,结构体类型的概念,结构体与数组的区别,结构体类型的定义,st
3、ruct 结构体类型名 类型名 成员名1; 类型名 成员名2;类型名 成员名n; ;,struct student char name20;int num;int age; char sex;char addr30; ;,练习9.1,9.2 结构体的概念与定义-嵌套定义,增加一个结构体生日类型,结构体类型嵌套定义,struct date int month;int day;int year; ;,struct student char name20;int num;int age;char sex;struct date birthday;char addr30; ;,练习9.2,9.3 结构
4、体变量的定义和引用-定义,struct student int num;char name10; int computer,english,math; double average; ; struct student s,sa10,*sp;,先定义结构体类型,然后定义结构体变量,struct student int num;char name10;int computer,english,math;double average; s,sa10,*sp;,结构体变量定义,同时定义结构体类型和结构体变量,直接定义结构体变量,struct int num;char name10;int comput
5、er, english, math;double average; s,sa10,*sp;,推荐使用这种形式的定义,9.3 结构体变量的定义和引用-初始化,结构体变量初始化,struct student int num;char name10;int computer, english, math;double average; s=801,“Zhang“,80,89,92;,struct student int num;char name10;int computer,english,math;double average; ; struct student s=801,“Zhang“,80
6、,89,92;,s.num=801; strcpy(s.name,“Zhang“); s.name=“Zhang“ puter=80; s.english=89; s.math=92;,9.3 结构体变量的定义和引用-引用,struct student int num;char name10;int computer,english,math;double average; ; struct student s,t;,结构体变量成员引用,成员如何表示?,结构体变量名.成员名,举例说明,结构体成员赋值,结构体变量赋值,t = s;,9.3 结构体变量的定义和引用-例9.1,例9.1 阅读程序,理
7、解结构体变量的定义和引用,给出运行结果,#include #include struct personchar name12; int age; char sex; float height; float weight;,int main(void) struct person p1=“ZhangSan“,18,M,1.75,70.5,p2,p3; scanf(“%s %d %c %f %f“,p2.name, ,9.3 结构体变量的定义和引用-输入输出,scanf(“%d%s%d%d%d“,结构体变量数据输入,struct student int num;char name10;int co
8、mputer,english,math;double average; ; struct student s;,数据如何输入输出?,结构体变量数据输出,printf(“%d %s %d %d %d“,s.num,s.name, puter,s.english,s.math);,注意:没有&符号,9.3 结构体变量的定义和引用-例9.3分析,例9.3 假设学生的基本信息包括学号、姓名、三门课程成绩以及个人平均成绩。输入个学生的成绩信息,计算并输出平均分最高的学生信息。,存储分析,算法设计,定义结构体类型和变量,循环输入每一个学生的信息,计算平均成绩,判断是否是最高分,输出最高分的学生信息,9.3
9、 结构体变量的定义和引用-例9.3程序,例9.3 假设学生的基本信息包括学号、姓名、三门课程成绩以及个人平均成绩。输入个学生的成绩信息,计算并输出平均分最高的学生信息。,#include struct studentint num;char name10;int computer,english,math;double average;,int main(void) int i,n;struct student s, max;scanf(“%d“, ,for(i=1;i=n;i+) ,if(i=1) max=s; else if(max.averages.average) max=s;,sca
10、nf(“%d%s%d%d%d“,s.average=(s.math+s.english+puter)/3.0;,练习9.3,9.4 结构体数组,结构体数组定义,结构体类型名 数组名数组长度;,struct student char name20; int age; char sex; float height; float weight; ;,struct student students5;,结构体数组初始化,struct student students5=“Zhao Xiaoli“, 20, M, 1.69, 60.5,“Wang Zhizhi“, 21, M, 1.79, 77.5,“
11、Dong Dapeng“, 20, M, 1.69, 70.0,“Sun Xiaomei“, 19, F, 1.70, 50.5,“Zhang Aiyue“, 18, F, 1.68, 56.6 ;,9.4 结构体数组-例9.4分析,例9.4 编写一个可以统计候选人得票数的程序。设有3个候选人,10人投票,每次输入一个得票的候选人的名字,要求最后输出各人得票结果。,存储分析,算法设计,定义结构体类型、结构体数组并初始化,循环输入每个人投票的候选人姓名,根据姓名增加对应的选票数,循环输出每个候选人的得姓名及其选票数,9.4 结构体数组-例9.4程序,#include #include struc
12、t personchar name20;int count;leader3=“Li“,0,“Zhang“,0,“Wang“,0;,int main(void) int i,j; char name20;return 0; ,for(i=1;i=10;i+) ,for(i=0;i3;i+)printf(“%5s:%dn“,leaderi.name,leaderi.count);,scanf(“%s“,name);,for(j=0;j3;j+)if(strcmp(name,leaderj.name)=0)leaderj.count+;,例9.4 编写一个可以统计候选人得票数的程序。设有3个候选人,
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 结构 PPT
