第7章 用户自定义数据类型
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第7章用户自定义数据类型7.1结构体类型
7.1.1为什么需要用结构体类型
图7.1
7.1.2结构体类型变量的定义方法及其初始化
1. 定义结构体类型变量的方法
图7.2
图7.3
2. 结构体变量的初始化
7.1.3引用结构体变量
7.1.4结构体数组
1. 定义结构体数组
C++程序设计(第2版)
图7.4
图7.5
2. 结构体数组的初始化
3. 结构体数组应用举例
图7.6
7.1.5指向结构体变量的指针
1. 通过指向结构体变量的指针引用结构体变量中的成员
C++程序设计(第2版)
图7.7
图7.8
图7.9
7.1.6结构体类型数据作为函数参数
图7.10
7.1.7用new和delete运算符进行动态分配和撤销存储空间
图7.11
C++程序设计(第2版)
7.2共用体类型
图7.12
7.3枚举类型
7.4用typedef声明新的类型名
习题
1. 定义一个结构体变量(包括年、月、日),编写程序,要求输入年、月、日,程序能计算并输出该日在本年中是第几天。注意闰年问题。
2. 编写一个函数days,实现上面的计算。由主函数将年、月、日传递给函数days,计算出该日在本年中是第几天并将结果传回主函数输出。
3. 编写一个函数print,打印一个学生的成绩数组,该数组中有5个学生的数据,每个学生的数据包括num(学号)、name(姓名)、score\[3\](3门课的成绩)。用主函数输入这些数据,用print函数输出这些数据。
4. 在第3题的基础上,编写一个函数input,用来输入5个学生的数据。
5. 有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,要求打印出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩、平均分数)。
6. 编写一个函数creat,用来建立一个动态链表。所谓建立动态链表是指在程序执行过程中从无到有地建立起一个链表,即一个一个地开辟结点和输入各结点数据,并建立起前后相连的关系。各结点的数据由键盘输入。
7. 编写一个函数print,将第6题建立的链表中各结点的数据依次输出。
8. 编写一个函数del,用来删除动态链表中一个指定的结点(由实参指定某一学号,表示要删除该学生结点)。
C++程序设计(第2版)
9. 编写一个函数insert,用来向动态链表插入一个结点。
10. 将以上4个函数组成一个程序,由主程序先后调用这些函数,实现链表的建立、输出、删除和插入,在主程序中指定需要删除和插入的结点。
11. 医院内科有A,B,C,D,E,F,G共7位医生,每人在一周内要值一次夜班,排班的要求是:
(1) A医生值班日比C医生晚1天;
(2) D医生值班日比E医生晚两天;
(3) B医生值班日比G医生早3天;
(4) F医生值班日在B医生和C医生值班日之间,且在星期四。
请编写程序,输出每位医生的值班日。值班日以Sunday, Monday, Tuesday, Wednesday, Thurday,Friday, Saturday分别表示星期日到星期六(提示: 用枚举变量)。