C语言程序设计PPT第8章结构体程序设计.ppt
《C语言程序设计PPT第8章结构体程序设计.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计PPT第8章结构体程序设计.ppt(54页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 C语言程序设计(第3版)张磊编著,2012年10月清华大学出版社出版。该教材面向程序设计初学者编写,适合将C语言作为第一门程序设计语言的高校学生。该教材理论教学和实验教学合二为一,在每章之后均设有实验指导。实验指导分为基础实验和综合实验两部分。基础实验紧密结合教材中的例题程序设置,以“理解验证完善扩充提高”为实验教学线索,重在巩固课堂教学知识,提高调试程序及完善程序的能力;综合实验以算法设计和程序实现为重点,训练运用所学知识解决实际问题的能力。该教材同时配有程序资源和试题库。C C语言程序设计语言程序设计(第第3 3版版)课件课件语言程序设计(第语言程序设计(第语言程序设计(第语言程序设计(
2、第3 3 3 3版)张磊编著版)张磊编著版)张磊编著版)张磊编著 清华大学出版社清华大学出版社清华大学出版社清华大学出版社C C语言程序设计语言程序设计第第8 8章章 结构体程序设计结构体程序设计 C语言程序设计(第语言程序设计(第3版)版)张张 磊磊 编著编著 21世纪高等学校规划教材世纪高等学校规划教材 清华大学出版社清华大学出版社语言程序设计(第语言程序设计(第语言程序设计(第语言程序设计(第3 3 3 3版)张磊编著版)张磊编著版)张磊编著版)张磊编著 清华大学出版社清华大学出版社清华大学出版社清华大学出版社第第8 8章章 结构体程序设计结构体程序设计u8.1 结构体数据概述 u8.2
3、 结构体类型和结构体变量u8.3 结构体数组 u8.4 结构体指针变量u8.5 使用动态链表存储数据u8.6 链表的基本操作u8.7 结构体应用举例语言程序设计(第语言程序设计(第语言程序设计(第语言程序设计(第3 3 3 3版)张磊编著版)张磊编著版)张磊编著版)张磊编著 清华大学出版社清华大学出版社清华大学出版社清华大学出版社8.1 8.1 结构体数据概述结构体数据概述结构体数据概述结构体数据概述结构体数据是由多个数据项组合而成的数据,如表8-1所示的学生信息表,当把每一行视为一个完整数据时,该数据就是一个结构体数据。为了有效地处理这样一类组合数据,C语言提供了“结构体”技术,它可以把多个
4、数据项组合起来,作为一个数据整体进行处理。学号姓名性别成绩9901liujiaM879902wangkaiM899903xiaohuaF819904zhangliF829905wangfengM88语言程序设计(第语言程序设计(第语言程序设计(第语言程序设计(第3 3 3 3版)张磊编著版)张磊编著版)张磊编著版)张磊编著 清华大学出版社清华大学出版社清华大学出版社清华大学出版社8.1 8.1 结构体数据概述结构体数据概述结构体数据概述结构体数据概述语言程序设计(第语言程序设计(第语言程序设计(第语言程序设计(第3 3 3 3版)张磊编著版)张磊编著版)张磊编著版)张磊编著 清华大学出版社清华
5、大学出版社清华大学出版社清华大学出版社8.2 8.2 结构体类型和结构体变量结构体类型和结构体变量结构体类型和结构体变量结构体类型和结构体变量u8.2.1 使用结构体变量存储学生信息 u8.2.2 定义结构体数据类型 u8.2.3 结构体变量的定义及使用语言程序设计(第语言程序设计(第语言程序设计(第语言程序设计(第3 3 3 3版)张磊编著版)张磊编著版)张磊编著版)张磊编著 清华大学出版社清华大学出版社清华大学出版社清华大学出版社8.2.18.2.1使用结构体变量存储学生信息使用结构体变量存储学生信息使用结构体变量存储学生信息使用结构体变量存储学生信息例例例例8-1 利用结构体变量存储表8
6、-1中第1行的学生信息,并输出其姓名和成绩。#includestruct student struct student /*/*定义结构体数据类型定义结构体数据类型定义结构体数据类型定义结构体数据类型*/*/int num;int num;char name20;char name20;char sex;char sex;int score;int score;void main()struct student stu=9011,liujia,M,87;struct student stu=9011,liujia,M,87;printf(Name:%sn,stu.name);printf(Sc
7、ore:%dn,stu.score);语言程序设计(第语言程序设计(第语言程序设计(第语言程序设计(第3 3 3 3版)张磊编著版)张磊编著版)张磊编著版)张磊编著 清华大学出版社清华大学出版社清华大学出版社清华大学出版社8.2.2 8.2.2 定义结构体数据类型定义结构体数据类型定义结构体数据类型定义结构体数据类型l定义结构体类型的一般格式struct struct 结构体名结构体名结构体名结构体名 成员表成员表成员表成员表;说明:“结构体名”是用户定义的结构体的名字,在以后定义结构体变量时,使用该名字进行类型标识。“成员表”是对结构体数据中每一个数据项的变量说明,其格式与说明一个变量的一般
8、格式相同:数据类型名数据类型名数据类型名数据类型名 成员名成员名成员名成员名;“struct”是关键字,“struct struct 结构体名结构体名结构体名结构体名”是结构体类型标识符,在类型定义和类型使用时“struct”都不能省略。结构体名称可以省略,此时定义的结构体称为无名结构体。语言程序设计(第语言程序设计(第语言程序设计(第语言程序设计(第3 3 3 3版)张磊编著版)张磊编著版)张磊编著版)张磊编著 清华大学出版社清华大学出版社清华大学出版社清华大学出版社9.1.2结构体类型定义结构体类型定义l学生组合数据的结构体类型定义:学生组合数据的结构体类型定义:struct studen
9、tint num;char name20;char sex;int score;学号学号姓名姓名性别性别成绩成绩9901liujiaM879902wangkaiM899903xiaohuaF819904zhangliF829905wangfengM88语言程序设计(第语言程序设计(第语言程序设计(第语言程序设计(第3 3 3 3版)张磊编著版)张磊编著版)张磊编著版)张磊编著 清华大学出版社清华大学出版社清华大学出版社清华大学出版社8.2.3结构体变量的定义及使用结构体变量的定义及使用1.1.定义结构体变量定义结构体变量定义结构体变量定义结构体变量 先定义结构体类型,再定义结构体变量。l一般格
10、式struct struct 结构体类型名称结构体类型名称结构体类型名称结构体类型名称 结构体变量名;结构体变量名;结构体变量名;结构体变量名;如:struct studentstruct student student1,student2;语言程序设计(第语言程序设计(第语言程序设计(第语言程序设计(第3 3 3 3版)张磊编著版)张磊编著版)张磊编著版)张磊编著 清华大学出版社清华大学出版社清华大学出版社清华大学出版社8.2.3结构体变量的定义及使用结构体变量的定义及使用 在定义结构体类型的同时定义结构体变量。l一般格式struct struct 结构体名结构体名结构体名结构体名 成员表成
11、员表成员表成员表 结构体变量结构体变量结构体变量结构体变量1,1,结构体变量结构体变量结构体变量结构体变量2 2,结构体变量,结构体变量,结构体变量,结构体变量n;n;例如:struct student int num;char name20;char sex;int score;student1,student2;语言程序设计(第语言程序设计(第语言程序设计(第语言程序设计(第3 3 3 3版)张磊编著版)张磊编著版)张磊编著版)张磊编著 清华大学出版社清华大学出版社清华大学出版社清华大学出版社8.2.3 8.2.3 结构体变量的定义及使用结构体变量的定义及使用结构体变量的定义及使用结构体变
12、量的定义及使用 不定义结构体类型名,直接定义结构体类型变量。l一般格式structstruct 成员表成员表成员表成员表;结构体变量结构体变量结构体变量结构体变量1,1,结构体变量结构体变量结构体变量结构体变量2,2,结构体变量结构体变量结构体变量结构体变量n n;例如:struct int num;char name20;char sex;int score;student1,student2;语言程序设计(第语言程序设计(第语言程序设计(第语言程序设计(第3 3 3 3版)张磊编著版)张磊编著版)张磊编著版)张磊编著 清华大学出版社清华大学出版社清华大学出版社清华大学出版社8.2.3 8.
13、2.3 结构体变量的定义及使用结构体变量的定义及使用结构体变量的定义及使用结构体变量的定义及使用2.2.引用结构体成员引用结构体成员引用结构体成员引用结构体成员l引用结构体成员的一般格式结构体变量名结构体变量名结构体变量名结构体变量名.成员名称成员名称成员名称成员名称例如:student1.age例例例例8-28-2 输入两个学生的信息,然后输出学习成绩高的学生的姓名和成绩信息。若成绩相同时,只输出第1个学生的信息。#includestruct studentstruct student int num;int num;char name20;char name20;char sex;char
14、 sex;int score;int score;stu1,stu2;stu1,stu2;void main()printf(Data1:);scanf(%d%s%c%d,&stu1.num,stu1.name,&stu1.sex,&stu1.score);printf(Data2:);scanf(%d%s%c%d,&stu2.num,stu2.name,&stu2.sex,&stu2.score);if(stu1.score=stu2.score)printf(%s,%dn,stu1.name,stu1.score);elseprintf(%s,%dn,stu2.name,stu2.scor
15、e);语言程序设计(第语言程序设计(第语言程序设计(第语言程序设计(第3 3 3 3版)张磊编著版)张磊编著版)张磊编著版)张磊编著 清华大学出版社清华大学出版社清华大学出版社清华大学出版社8.2.3 8.2.3 结构体变量的定义及使用结构体变量的定义及使用结构体变量的定义及使用结构体变量的定义及使用3.3.3.3.结构体变量的初始化结构体变量的初始化结构体变量的初始化结构体变量的初始化:定义结构体变量时对其成员赋初值。:定义结构体变量时对其成员赋初值。n n初始化的一般形式初始化的一般形式structstruct 结构体名结构体名 结构体变量结构体变量=初始化数据初始化数据;例如:例如:例如
16、:例如:说明:说明:说明:说明:“”“”“”“”中的初始化数中的初始化数中的初始化数中的初始化数据用逗号据用逗号据用逗号据用逗号“,”“,”“,”“,”分隔。分隔。分隔。分隔。初始化数据的个数与结初始化数据的个数与结初始化数据的个数与结初始化数据的个数与结构体成员的个数应相同,构体成员的个数应相同,构体成员的个数应相同,构体成员的个数应相同,它们是按成员的先后顺序它们是按成员的先后顺序它们是按成员的先后顺序它们是按成员的先后顺序一一对应赋值的。一一对应赋值的。一一对应赋值的。一一对应赋值的。每个初始化数据必须符每个初始化数据必须符每个初始化数据必须符每个初始化数据必须符合与其对应的成员的数据合
17、与其对应的成员的数据合与其对应的成员的数据合与其对应的成员的数据类型。类型。类型。类型。struct studentstruct student int num;int num;char name20;char name20;char sex;char sex;int score;int score;stu=9901,liujia,M,87;stu=9901,liujia,M,87;成成成成员员员员初始化数据初始化数据初始化数据初始化数据数据数据数据数据类类类类型型型型stu.num9901intstu.nameliujiacharstu.sexMcharstu.score87int语言程序设
18、计(第语言程序设计(第语言程序设计(第语言程序设计(第3 3 3 3版)张磊编著版)张磊编著版)张磊编著版)张磊编著 清华大学出版社清华大学出版社清华大学出版社清华大学出版社8.3 8.3 结构体数组结构体数组结构体数组结构体数组l8.3.1 结构体数组概述l8.3.2 结构体数组的初始化l8.3.3 利用结构体数组管理学生信息语言程序设计(第语言程序设计(第语言程序设计(第语言程序设计(第3 3 3 3版)张磊编著版)张磊编著版)张磊编著版)张磊编著 清华大学出版社清华大学出版社清华大学出版社清华大学出版社8.3.1 8.3.1 结构体数组概述结构体数组概述结构体数组概述结构体数组概述数组元
19、素是结构体类型的数组,称为结构体数组。l定义方法与其他结构体变量的定义方法相同。先定义结构体类型,然后用结构体类型定义数组变量。例如:struct student information100;定义结构体类型的同时,定义数组变量。定义无类型名的结构体数组变量。例如:structstruct intint year;year;intint month;month;intint day;day;date110,date210;date110,date210;l引用结构体数组成员的一般格式结构体数组名下标.成员名information20.score=91;例如:struct struct stud
20、ent int year;int year;int month;int month;int day;int day;date110,date210;date110,date210;语言程序设计(第语言程序设计(第语言程序设计(第语言程序设计(第3 3 3 3版)张磊编著版)张磊编著版)张磊编著版)张磊编著 清华大学出版社清华大学出版社清华大学出版社清华大学出版社8.3.28.3.2结构体数组的初始化结构体数组的初始化结构体数组的初始化结构体数组的初始化 l结构体数组的初始化例如:struct student info3=9901,liujia,M,87,9902,wangkai,M,89,99
21、03,xiaohua,F,81;数组元素数组元素成员成员numnum成员成员namename成员成员sexsex成员成员scorescoreinfo0info099019901liujialiujiaM M8787info1info199029902wangkaiwangkaiM M8989info2info299039903xiaohuaxiaohuaF F8181语言程序设计(第语言程序设计(第语言程序设计(第语言程序设计(第3 3 3 3版)张磊编著版)张磊编著版)张磊编著版)张磊编著 清华大学出版社清华大学出版社清华大学出版社清华大学出版社8.3.3 8.3.3 利用结构体数组管理学生
22、信息利用结构体数组管理学生信息利用结构体数组管理学生信息利用结构体数组管理学生信息例例例例8-38-3 按照表8-1的数据,输入一个班级的学生信息,并进行如下处理:把学习成绩在85以上的学生找出来,并输出这部分学生的姓名和成绩。分别统计男生和女生人数。l分析 定义一个结构体类型,并用它定义一个存储学生信息的结构体数组;向结构体数组中输入学生数据;统计,并输出结果。语言程序设计(第语言程序设计(第语言程序设计(第语言程序设计(第3 3 3 3版)张磊编著版)张磊编著版)张磊编著版)张磊编著 清华大学出版社清华大学出版社清华大学出版社清华大学出版社8.3.3 8.3.3 利用结构体数组管理学生信息
23、利用结构体数组管理学生信息利用结构体数组管理学生信息利用结构体数组管理学生信息/*program e8-3.c*/#include#define N 5 struct studentint num;char name20;char sex;int score;void main()struct student stuN;int i,count_m=0,count_f=0;printf(Input Data:n);for(i=0;iN;i+)scanf(%d%s%c%d,&stui.num,stui.name,&stui.sex,&stui.score);printf(Result:n);for
24、(i=0;i85)printf(%s,%dn,stui.name,stui.score);if(stui.sex=M|stui.sex=m)count_m+;else count_f+;printf(Boys=%d,Girls=%dn,count_m,count_f);语言程序设计(第语言程序设计(第语言程序设计(第语言程序设计(第3 3 3 3版)张磊编著版)张磊编著版)张磊编著版)张磊编著 清华大学出版社清华大学出版社清华大学出版社清华大学出版社8.4 8.4 结构体指针变量结构体指针变量结构体指针变量结构体指针变量l指向结构体变量的指针变量,简称为结构体指针变量。与其他类型的指针一样,结
25、构体指针变量既可以指向单一的结构体变量,也可以指向结构体数组变量,结构体指针还可以作函数的参数。语言程序设计(第语言程序设计(第语言程序设计(第语言程序设计(第3 3 3 3版)张磊编著版)张磊编著版)张磊编著版)张磊编著 清华大学出版社清华大学出版社清华大学出版社清华大学出版社8.4 8.4 结构体指针变量结构体指针变量结构体指针变量结构体指针变量l8.4.1 结构体指针变量的定义及使用l8.4.2 结构体指针作函数的参数语言程序设计(第语言程序设计(第语言程序设计(第语言程序设计(第3 3 3 3版)张磊编著版)张磊编著版)张磊编著版)张磊编著 清华大学出版社清华大学出版社清华大学出版社清
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 PPT 结构 程序设计
限制150内