C大学基础教程第七章.ppt
《C大学基础教程第七章.ppt》由会员分享,可在线阅读,更多相关《C大学基础教程第七章.ppt(67页珍藏版)》请在三一办公上搜索。
1、C+大学基础教程,第7章 其它自定义数据类型 北京邮电大学电信工程学院 计算机技术中心,2023/11/7,北京邮电大学电信工程学院计算机技术中心,-2-,第7章 其它自定义数据类型,C+语言不仅有丰富的基本数据类型,而且允许用户自己定义数据类型。,7.1 枚举型数据类型7.2 结构型数据类型7.3 联合型数据类型,第7章 C+其他自定义数据类型,7.1 枚举类型,2023/11/7,北京邮电大学电信工程学院计算机技术中心,-5-,7.1 枚举类型,枚举型数据类型(简称枚举类型)有些问题中所处理数据的取值可以一一列举出来例:一周七天:星期日、星期1、星期2、星期3、星期4、星期5、星期6用户可
2、以自己定义一种数据类型,把这种数据类型的变量的可能值一一列举出来。然后就可以使用这种数据类型来定义变量了。这种新的数据类型称为枚举类型,声明形式为:enum 枚举类型名枚举元素列表;,2023/11/7,北京邮电大学电信工程学院计算机技术中心,-6-,例如:enum weekdaysun,mon,tue,wed,thu,fri,sat;新的数据类型 枚举元素或枚举常量,7.1 枚举类型,2023/11/7,北京邮电大学电信工程学院计算机技术中心,-7-,enum weekdaysun,mon,tue,wed,thu,fri,sat;定义一个weekday类型的变量:weekday day;变量
3、day的取值范围:类型定义时,表里列举出来的七种标识符,把这些标识符看作符号常量。例如:day=sat;,7.1 枚举类型,2023/11/7,北京邮电大学电信工程学院计算机技术中心,-8-,在类型定义之后,对枚举元素按常量处理,不能对它们赋值。sat=6;枚举元素具有默认值,它们依次为:0,1,2,。enum weekdaysun,mon,tue,wed,thu,fri,sat;也可以在类型声明时另行指定枚举元素的值。enum weekdaysun=7,mon=1,tue,wed,thu,fri,sat,使用枚举类型时要注意:,2023/11/7,北京邮电大学电信工程学院计算机技术中心,-9
4、-,枚举值可以进行关系运算。整数值不能直接赋给枚举变量;如需要将整数值赋给枚举变量,应进行强制类型转换.例:int x=2;weekday day;day=x;?day=(weekday)x;?,使用枚举类型时要注意:,2023/11/7,北京邮电大学电信工程学院计算机技术中心,-10-,枚举常量在机器内部仍然是用整型数来存取定义某个枚举类型的变量时,分配几个字节的内存空间呢?(前面我们看到,枚举元素的默认值都是整数,可以给枚举元素指定值,也用整数,所以说,在计算机内部处理时,是把枚举类型按整型(int)对待的。),7.1 枚举类型,2023/11/7,北京邮电大学电信工程学院计算机技术中心,
5、-11-,例7.1,读入1-7之间的一个数代表今天,输出明天是星期几。,#include using namespace std;enum weekday sun=7,mon=1,tue,wed,thu,fri,sat;void main()coutn;weekday today=(weekday)n;weekday tomorrow=(weekday)(today+1);if(today=sun)tomorrow=mon;,if(today=0)tomorrow=(weekday)-1;switch(tomorrow)case sun:coutTomorrow is Sunday.endl;
6、break;case mon:coutTomorrow is Monday.endl;break;case tue:coutTomorrow is Tuesday.endl;break;case wed:coutTomorrow is Wednesday.endl;break;,case thu:coutTomorrow is Thursday.endl;break;case fri:coutTomorrow is Friday.endl;break;case sat:coutTomorrow is Saturday.endl;break;default:coutinput error!end
7、l;,2023/11/7,北京邮电大学电信工程学院计算机技术中心,-15-,例:,口袋中有红、黄、蓝、白、黑五种颜色的球若干个。每次从口袋中取出3个不同颜色的球,问有多少种取法。分析:由于球只能是五种颜色之一,故可用枚举类型表示球的颜色。设取出的球为i、j、k,根据题意,i、j、k分别可以有五种取值,且ijk。可以用穷举法,逐个检验每一种可能的组合,从中找出符合要求的组合并输出。,#includevoid main()enum colorred,yellow,blue,white,black;enum color print;int n,loop,i,j,k;char c;n=0;for(i=
8、red;i=black;i+)for(j=red;j=black;j+)if(i!=j)/前两个球不同 for(k=red;k=black;k+),if(k!=i),switch(print)case red:coutred;break;case yellow:coutyellow;break;case blue:coutblue;break;case white:coutwhite;break;case black:coutblack;break;default:break;/end of for loop coutendl;/end of if/end of if couttotal:ne
9、ndl;,7.2 结构类型,2023/11/7,北京邮电大学电信工程学院计算机技术中心,-20-,结构型数据类型(简称结构类型)把现实生活中意义密切相关的一组数据组合成一个整体,即由各种数据类型(可以是基本数据类型或已声明的自定义数据类型)的数据组成一个集合,称为结构类型。,结构类型的定义,2023/11/7,北京邮电大学电信工程学院计算机技术中心,-21-,结构的声明形式如下:struct 结构类型名 数据类型标识符1 成员名1;数据类型标识符2 成员名2;数据类型标识符n 成员名n;;,结构类型的定义,2023/11/7,北京邮电大学电信工程学院计算机技术中心,-22-,例如:struct
10、 studentlong num;/学号char name20;/姓名 int age;/年龄 float score;/成绩;,结构类型的定义,2023/11/7,北京邮电大学电信工程学院计算机技术中心,-23-,定义结构类型的变量:结构类型名 结构变量名;例:定义student类型的变量:student stu1;,结构类型的定义,2023/11/7,北京邮电大学电信工程学院计算机技术中心,-24-,结构类型的变量所占的存储空间是结构中所有成员所占空间的总和 例 sizeof(student)=sizeof(long)+20*sizeof(char)+sizeof(int)+sizeof(
11、float)sizeof(s1)=sizeof(student),结构类型的定义,struct studentlong num;char name20;int age;float score;,2023/11/7,北京邮电大学电信工程学院计算机技术中心,-25-,结构成员的访问格式:结构变量名.成员名例:student s1;s1.num=1;couts1.numendl;couts1.nameendl;,结构类型的定义,如同使用一个变量,如同使用一个数组,2023/11/7,北京邮电大学电信工程学院计算机技术中心,-26-,给结构变量赋初值,可以在变量定义时同时设置初始值:student s
12、2=20041118,”Li Li”,18,90;给结构变量赋值,也可以单独给各个成员赋值。例如:s1.num=20041118;strcpy(s1.name,”Li Li”);,结构类型的定义,2023/11/7,北京邮电大学电信工程学院计算机技术中心,-27-,例7.2 结构类型的声明,变量的定义和初始化。,2023/11/7,北京邮电大学电信工程学院计算机技术中心,-28-,/例7.2 结构类型的声明,变量的定义和初始化#include#include using namespace std;struct student/声明新的数据类型 long num;/学号 char name20
13、;/姓名 char sex;/性别 int age;/年龄stu=20041118,Li Li,F,18;,2023/11/7,北京邮电大学电信工程学院计算机技术中心,-29-,void main()coutsetw(8)stu.numsetw(10)stu.name setw(3)stu.sexsetw(3)stu.ageendl;运行结果:20041118 Li Li F 18,2023/11/7,北京邮电大学电信工程学院计算机技术中心,-30-,结构体可以由不同数据类型的成员构成,这些成员可能是基本数据类型,也可能是自定义的数据类型,比如已声明的另一个结构类型。例7.3 访问带有结构体类
14、型成员的结构体变量。,2023/11/7,北京邮电大学电信工程学院计算机技术中心,-31-,/例7.3 结构体定义的嵌套#include using namespace std;struct dateint year;int month;int day;,struct Weather date today;double temp;/温度 double wind;/风力;,2023/11/7,北京邮电大学电信工程学院计算机技术中心,-32-,void main()Weather today_weather=2004,11,30,10.0,3.1;couttoday_weather.today.y
15、ear年 today_weather.today.month月 today_weather.today.day日的天气是:;cout 温度:today_weather.temp;cout 度,风力:today_weather.wind级 endl;运行结果:2004年11月30日的天气是:温度:10度,风力:3.1级,2023/11/7,北京邮电大学电信工程学院计算机技术中心,-33-,属于同一结构类型的各个变量之间可以相互赋值,这一点和数组不同,C+规定,不能直接进行数组名的赋值,因为数组名是一个常量,而结构类型的变量可以赋值。不同结构的变量不允许相互赋值,即使这两个变量可能具有同样的成员。
16、,结构类型的定义,2023/11/7,北京邮电大学电信工程学院计算机技术中心,-34-,例:struct student int num;char name20;s1,s2;s1=1,”zhang”;s2=2.”zhao”;student si;si=s1;,例:struct person int ID;char name20;p1,p2;p1=1,”zhang”;p2=2.”zhao”;person pi;pi=p1;,pi=s1;/error!si=p1;/error!,2023/11/7,北京邮电大学电信工程学院计算机技术中心,-35-,结构指针定义变量时,我们可以定义指向int型的指针
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学 基础教程 第七
链接地址:https://www.31ppt.com/p-6503562.html