C程序设计与实践第5章(课件).ppt
《C程序设计与实践第5章(课件).ppt》由会员分享,可在线阅读,更多相关《C程序设计与实践第5章(课件).ppt(34页珍藏版)》请在三一文库上搜索。
1、程序设计与实践,目录 第5章 结构体 5.1 概述 5.2 结构体应用实例 5.3 结构体类型的定义 5.4 结构体变量和结构体数组的定义 5.5 结构体变量的使用方法 5.6 结构体应用 5.7 本章小结,第5章 结构体 5.1 概述 数组只能保存一批类型相同的数据,但在很多场合下,会有一组类型不同的信息,例如:关于学生的一组信息,包括学生姓名(字符串)、学号(字符串)、课程成绩(实数)等,无法用数组来表示。这里可以使用C语言提供的另外一种构造数据类型来实现,就是结构体类型,也称之为结构数据类型。,5.2 结构体应用实例 例5.1 图书销售清单打印,其中图书信息包括:书名、价格、册数等。 #
2、include void main() struct booktype /说明结构类型struct booktype,包含三个成员 char name100;/书名,字符串型 float price;/价格,实型 int number;/册数,整型 ;,/分别定义结构体变量book1、book2、book3,并赋初值 struct booktype book1 ”Learn C Programming”, 40.4, 20; struct booktype book2 ”c programming language”, 43.1, 15; struct booktype book3 ”Hist
3、ory of C Programming Language ”, 37.8, 28; /定义中间变量用于计算部分金额和总金额 float part1, part2, part3, total; printf(” 书名 单价 数量 金额nn”); part1 book1.price * book1.number;/结构变量字段值的应用,计算第一类书book1的金额,printf(”%35s%6.2f%4d%7.2fn”, book1.name, book1.price, book1.number, part1); part2 book2.price * book2.number; /计算第一类书
4、book2的金额 printf(”%35s%6.2f%4d%7.2fn”, book2.name, book2.price, book2.number, part2); part3 book3.price * book3.number; /计算第一类书book3的金额 printf(”%35s%6.2f%4d%7.2fn”, book3.name, book3.price, book3.number, part3); total part1 part2 part3; /计算三类书的总金额 printf(”ntotal %53.2fn”, total);, 程序输出结果: 图51 例5.1程序运
5、行结果 程序中定义了图书的信息,包括:字符数组类型的书名name、实数类型的价格price、整数类型的册数number等三个字段,涉及三种数据类型。在这个程序中,我们看到了结构类型booktype的定义(struct booktype ;部分),结构类型booktype的结构体变量book1.book2、book3的定义并赋初值,如:(struct booktype book1”Learn C Programming”,40.4,20;),结构体变量字段的引用如:(part1book1.price*book1.number;)。 本程序中共有三类书的信息,制表输出每一类书的书名、单价、数量、金
6、额,最后输出所有书的总价格。,5.3 结构体类型的定义 结构体类型是一种新的数据类型,与基本类型不同的是,结构体类型本身需要定义,而基本类型是C语言已经定义过的,不需要程序设计人员来定义。结构体类型的定义包含如下信息:结构体类型名字(可以没有)、结构体全部成员的名字及其类型,结构体的成员有时也称之为字段,它们的类型可以相同也可以不同。结构体类型定义以后,就可以使用结构体类型名字来定义该结构体类型的变量了。 结构体类型定义的一般形式: struct 结构体类型名 成员列表;,; 例如结构体“图书”类型的定义如下: struct booktype char name100;/书名,字符数组类型 f
7、loat price;/单价,实数类型 int number;/数量,整数类型 ; 结构体成员的类型可以是简单类型,可以是数组类型,还可以是其他的结构体类型,也就是说,结构体类型的定义可以嵌套。例如: struct date int year, month, day;,; struct booktype char name100; /书名,字符数组类型 float price; /单价,实数类型 int number; /数量,整数类型 struct date delivery;/交付时间 ; 在结构体中,各成员都占有自己的内存空间,一个结构体变量的长度等于所有成员长度之和。 例5.2 检测结
8、构体类型占用的内存空间大小。,解题思路:直接使用sizeof运算符,对于结构体类型struct booktype求值。 #include void main() struct booktype char name100; float price; int number; ;,printf(”%d”, sizeof(struct booktype); 输出结果是108。 说明:某些编译程序(如:VC6.0),为结构体类型分配空间时,可能会比其所有成员所占空间之和略长,例如:如果把“char name100;”改为“char name97;”、“char name98;”、“char name99
9、;”程序结果都是108。占用空间值为4的倍数,并大于或等于各字段字节数之和。,5.4 结构体变量和结构体数组的定义 结构体类型变量可以是普通变量或者是数组元素,结构体类型的数组元素是指其元素的数据类型是结构体类型的数组,简称为结构体数组。 结构体变量、结构体数组定义有三种形式: struct 结构体类型名 变量、数组列表; struct 结构体类型名 成员列表 变量、数组列表; struct 成员列表 变量、数组列表; 上述三种形式中,我们推荐使用第一种形式,它的特点是类型定义和变量定义分离,也便于对变量赋初值,结构清晰。下面分别介绍三种形式的写法和实例。,1.先定义结构体类型,再定义结构体变
10、量或结构体数组,必要时还可以进行初始化 例5.3 对于例5.1程序的改进,注意结构体类型定义、结构体数组定义、结构体数组初始化、输出格式控制等用法。 #include void main() struct booktype /说明结构体类型 char name100; float price;,int number; ; struct booktype books3 /定义结构体类型数组,并赋初值 ”Learn C Programming”, 40.4, 20, ”c programming language”, 43.1, 15, ”History of C Programming Lang
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 实践 课件
链接地址:https://www.31doc.com/p-2142359.html