最新C++课件第5章 构造数据类型(共96张PPT课件).pptx
《最新C++课件第5章 构造数据类型(共96张PPT课件).pptx》由会员分享,可在线阅读,更多相关《最新C++课件第5章 构造数据类型(共96张PPT课件).pptx(96页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第5章章 构造构造(guzo)数据类型数据类型C+语语言言(yyn)程程序序设设计计教教程程 第第5章章构构造造数数据据类类型型第一页,共九十六页。第第5章构造章构造(guzo)数据类型数据类型1. 掌握枚举类型的使用;2. 深入理解数组的概念, 掌握数组应用的一般方法;3. 深入理解指针的概念,掌握指针的使用;4. 注意(zh y)指针与数组的区别,会使用多重指针以及指针与数组的多种混合体,会分配动态数组;5. 理解字符串的概念,会使用字符串;6. 理解引用的概念,掌握引用型函数参数的用法;7. 掌握结构类型的使用。学习(xux)目标C+语语言言程程序序设设计计教教程程 第第5章章构构造造
2、数数据据类类型型第二页,共九十六页。5.1 枚举枚举(mi j)类型类型 1. 枚举类型的定义:枚举类型的定义: “枚举枚举”是指将变量所有可能的取值一一列举出来,变量的取值只限于列举出来的常量。 枚举类型的声明的一般形式如下 :枚举类型名以及枚举常量为标识符,遵循(zn xn)标识符的取名规则。在定义一个枚举类型时,定义了多个常量,供枚举类型变量取值,称此常量为枚举常量。当没给各枚举常量指定值时,其值依次默认为0、1、2、;在定义枚举类型时,也可使用赋值号另行指定枚举常量的值。 enum 枚举类型(lixng)名 枚举常量1, 枚举常量2, 枚举常量n;枚举!枚举!C+语语言言程程序序设设计
3、计教教程程 第第5章章构构造造数数据据类类型型第三页,共九十六页。枚举类型的定义:枚举类型的定义:例1: enum weekday SUN, MON, TUE, WED, THU, FRI, SAT ; 定义了7个枚举常量以及(yj)枚举类型weekday。枚举常量具有默认的整数与之对应:SUN的值为0、MON的值为1、TUE为2、SAT为6。例2: enum city Beijing,Shanghai,Tianjin=5,Chongqing; 枚举常量Beijing的值为0,Shanghai的值为1,Tianjin的值指定为5。对于指定值后面的没有指定值的枚举常量,编译器会将前一个常量值加1
4、(下一个整数)赋给它,所以Chongqing的值为6。C+语语言言(yyn)程程序序设设计计教教程程 第第5章章构构造造数数据据类类型型第四页,共九十六页。枚举类型的定义说明枚举类型的定义说明:枚举类型定义了以后就可以使用枚举常量、枚举类型来定义变量,定义枚举变量的方法(fngf)与定义其它变量的方法一样。 enum city city1, city2; city city1, city2; 用两种方法定义了city1、city2两个枚举类型的变量名。枚举类型变量也可以在定义枚举类型的同时定义 enum city Beijing,Shanghai,Tianjin=5,Chongqing cit
5、y1, city2; 在定义枚举类型的同时定义枚举类型变量可以省略枚举类型名 enum Beijing,Shanghai,Tianjin=5,Chongqing city1, city2; 在定义变量时,可以顺便给出初值,若不给初值,默认初值为随机的无意义的数。 C+语语言言程程序序设设计计(chn x sh j)教教程程 第第5章章构构造造数数据据类类型型第五页,共九十六页。枚举类型的使用:枚举类型的使用:用枚举类型建立枚举变量后就可以对枚举变量实施赋值以及进行其它运算了,对枚举变量进行赋值,其值要求为同一枚举类型要求为同一枚举类型。否则,在编译时出错。 weekday d1,d2,d3,d
6、4; d1=SUN; d2=6; /错误 d3=Shanghai; /错误 其中(qzhng)对d2所赋之值是整数6,不是枚举常量;可以采用将一个整型值强制转换成同类型的枚举常量赋给枚举变量: d2=(weekday)6;枚举常量、枚举类型的变量可进行算术运算、关系运算可进行算术运算、关系运算。 对枚举类型实施算术、关系运算时,枚举值转换成整型值参加运算,结果为整型值。所以,如果要将结果赋给枚举变量,还要将结果转换成枚举值。 d1=d1+2; /是错误的,因为结果为int型。 需要将它强制转换成枚举型: d1=(weekday)(d1+2);C+语语言言(yyn)程程序序设设计计教教程程 第第
7、5章章构构造造数数据据类类型型第六页,共九十六页。/* 程序名:p5_1.cpp * 功能: 枚举类型的使用,输入城市代号,输出城市名称 */#includeusing namespace std;enum city Beijing,Shanghai,Tianjin=6,Chongqing;void main() int n; coutInput a city number (Beijing-1 to exit):n;123456789101112C+语语言言(yyn)程程序序设设计计教教程程 第第5章章构构造造数数据据类类型型【例例5-1】输入城市代号(diho),输出城市名称。 第七页,共
8、九十六页。 while(n=Beijing) switch(n) case Beijing: coutBeijingendl; break; case Shanghai: coutShanghaiendl;break; case Tianjin: coutTianjinendl; break; case Chongqing: coutChongqingendl; break; default: coutInvalid city number! n; 1314151617181920212223Input a city number (-1 to exit):1Shanghai8Invalid
9、city number!-1 C+语语言言(yyn)程程序序设设计计教教程程 第第5章章构构造造数数据据类类型型第八页,共九十六页。5.2 数组数组 数组:数组: 数组是一组在内存中依次连续存放依次连续存放的、具有同一类型同一类型的数据变量所组成的集合体。其中的每个变量称为数组元素,它们属于同一种(y zhn)数据类型,数组元素用数组名与带方括号的数组下标下标一起标识。数组可以是一维的,也可以是多维的。特点:特点: 若干个同类型若干个同类型的数据元素,并且各个数据元素之间存在某种次序关系次序关系。C+语语言言程程序序设设计计教教程程(jiochng) 第第5章章构构造造数数据据类类型型第九页,
10、共九十六页。5.2.1 一维数组定义一维数组定义(dngy)与使用与使用 一维数组定义的一般形式为:一维数组定义的一般形式为: 说明:说明: 数组元素(yun s)的类型可以是void型以外的任何一种基本数据类型,也可以是已经定义过的构造数据类型;数组名是用户自定义的标识符,用来表示数组的名称,代表数组元素在内存中的起始地址,是一个地址常量。常量表达式必须是unsigned int类型的正整数。表示数组的大小或长度,也就是数组所包含数据元素的个数。 是数组下标运算符,在数组定义时用来限定数组元素的个数。数据类型 数组名常量(chngling)表达式;C+语语言言程程序序设设计计教教程程 第第5
11、章章构构造造数数据据类类型型F注意注意: : 数组属于构造数据类型,在使用之前必须先进行类型定义。第十页,共九十六页。5.2.1 一维数组定义一维数组定义(dngy)与使用与使用下面定义了2个不同类型的数组: int a5; /定义了一个5个元素的整型数组a weekday b10; /定义了一个10个元素的枚举数组b,weekday 为已定义的枚举型。数据类型相同(xin tn)的多个数组可以在同一条语句中予以定义。例如: int a110, a220; /同时定义了两个整型数组 数据类型相同的的简单变量和数组也可以在一个语句中定义。例如: int x, a20; /同时定义了一个整型变量和
12、一个整型数组 C+语语言言程程序序设设计计教教程程(jiochng) 第第5章章构构造造数数据据类类型型第十一页,共九十六页。5.2.1 一维数组定义一维数组定义(dngy)与使用与使用 数组定义之后(zhhu),系统会将从内存中为其分配一块连续一块连续的存储空间的存储空间,从第1个数据元素开始依次存放依次存放各个数组元素。 例如: int a5; /定义了一个5个元素的整型数组a C+语语言言(yyn)程程序序设设计计教教程程 第第5章章构构造造数数据据类类型型 假设地址 内容 符号地址 103410A0 103410A4 103410A8 103410AC 103410B0 a a+1 a
13、+2 a+3 a+4 5*sizeof(int) a0 a1 a2 a3 a4 第十二页,共九十六页。一维数组初始化:一维数组初始化: 是指在定义数组的同时给数组中的元素赋值。其一般语法形式为:其一般语法形式为: 初值1,初值2, 初值n称为(chn wi)初值表,初值之间用逗号,分隔, 所有初值用 括起来。初值可以是一个变量表达式变量表达式,初值与数组元素的对应关系是:初值i给数组第i个元素;所以,初值个数n不能超过数组的大小。若初值表中初值个数(项数)小于数组的大小,则未指定值的数组元素被赋值为0;但初值表中项数不能为0。例如: weekday b10=MON,WED,FRI;当对全部数组
14、元素赋初值时,可以省略数组的大小可以省略数组的大小,此时数组的实际大小就是初值列表中初值的个数。例如: char str = a, b, c, d, e ; /数组str的实际大小为5。数据类型 数组名 常量(chngling)表达式 =初值1, 初值2, 初值n;C+语语言言(yyn)程程序序设设计计教教程程 第第5章章构构造造数数据据类类型型第十三页,共九十六页。 对一维数组实施的存取操作有两类:存取数组元素存取数组元素与读取数组读取数组元素的地址元素的地址。数组元素是通过数组名及下标来标识(biozh)的,这种带下标的数组元素也称为下标变量下标变量,下标变量可以象简单变量一样参与各种运算
15、。 存取一维数组元素的一般语法形式为: 说明:说明: 下标表达式可以是变量表达式变量表达式,用来标识数组元素。当定义了一个长度为n的一维数组a,C+规定数组的下标从从0开始开始,依次为0、1、2、3、n-1。对应的数组元素分别是a0、a1、an-1,因此下标表达式的值要在0,n-1范围内。 a1+2=100; / 将数组a的第4个元素赋值100。 数组名 下标(xi bio)表达式; C+语语言言(yyn)程程序序设设计计教教程程 第第5章章构构造造数数据据类类型型第十四页,共九十六页。【例例5-2】学生成绩排序。分析分析:学生成绩由键盘输入,当输入一个负数时,输入完毕。 采用直观的“选择排序
16、法选择排序法”进行排序,基本(jbn)步骤如下: 将a0依次与a1an-1比较,选出大者与a0交换;最后a0为a0an-1中最大者; 将a1依次与a2an-1比较,选出大者与a1交换;最后a1为a1an-1中最大者; 同理,从i=2到i=n-1, 将ai依次与ai+1an-1比较,选出较大者存于ai中。C+语语言言程程序序设设计计教教程程(jiochng) 第第5章章构构造造数数据据类类型型第十五页,共九十六页。#includeusing namespace std;void main() const int MaxN=5; int n,aMaxN,i,j; for (n=0;nan; /输入
17、数组元素 if (an0) break; for (i=0;in;i+) coutai,t; coutnnendl;1234567891011121314C+语语言言(yyn)程程序序设设计计教教程程 第第5章章构构造造数数据据类类型型第十六页,共九十六页。 /对数组元素逐趟进行选择排序 for (i=0;in-1;i+) for (j=i+1;jn;j+) /从待排序序列待排序序列中选择一个最大的数组元素 if (aiaj) int t; t=ai; /交换交换数组元素 ai=aj; aj=t; for (i=0;in;i+)coutai,t; /显示排序结果 192021222324252
18、6272829303180 90 95 70 -195 90 80 70 C+语语言言程程序序设设计计(chn x sh j)教教程程 第第5章章构构造造数数据据类类型型第十七页,共九十六页。 4. 数组的地址数组的地址 数组元素的地址通过数组名通过数组名来读取,其格式(g shi)如下: 由于其地址不是实际的地址值不是实际的地址值,称这个地址表达式为符号地址符号地址表达式表达式。例如: 一维数组元素a5的符号地址表达式为a+5。 若a是一个int型数组,数组的符号地址表达式a+n所表达的地址是第n+1个元素an的地址,代表的实际地址值为:a+n*sizeof(int) 而不是:a+n。 C+
19、语语言言(yyn)程程序序设设计计教教程程 第第5章章构构造造数数据据类类型型数组名+整型表达式;第十八页,共九十六页。C+语语言言程程序序设设计计(chn x sh j)教教程程 第第5章章构构造造数数据据类类型型F使用数组要注意使用数组要注意: : 在使用数组时最常犯的错误是下标越界(yu ji),所谓的下标越界就是下标表达式的值超出了数组定义时给定的元素个数,对于这种错误,编译器无法知道,往往在运行时出错。因此在程序设计时应格外注意。 数组名是一个地址常量,不能作为左值(赋值的目标)。因此,不能将一个数组整体拷贝给另外一个数组。 例如: int a5,c5,i; a=c;/错误! 正确的
20、方法是将对应的元素进行拷贝,见下列程序段: for(i=0;i5;i+) ai=ci; /将数组c中元素的值拷贝到数组c的对应元素中 在函数中,可以将一个一维数组作为函数的形式参数,用来接受一个一维数组传递过来的地址。 第十九页,共九十六页。5.2.2 二维数组的定义二维数组的定义(dngy)与使用与使用 二维数组的定义的一般(ybn)形式为: 常量表达式1为第1维的元素的个数,常量表达式2为第2维元素的个数。二维数组amn是以长度为n的一维数组为元素的数组,因此,等价于如下定义方式:例如: int M23; 定义了一个整型二维数组M,数组M也可以用下列方式定义: typedef int M1
21、3; / 定义了一个一维整型数组M1; M1 M2; / 以M1为类型定义数组M数据类型 数组名常量(chngling)表达式2常量表达式1; C+语语言言程程序序设设计计教教程程 第第5章章构构造造数数据据类类型型typedef 数据类型 一维数组名常量表达式1;一维数组名 二维数组名常量表达式2;第二十页,共九十六页。如果一维数组描述排列成一行一行的数据,那么,二维数组则描述若干行这样的数据。因此(ync),二维数组可以看作是数学上的一个矩阵。第1维元素个数为矩阵的列数,第2维元素个数为矩阵的行数。 二维数组的定义格式可以写成: 定义一个二维数组后,系统为它分配一块连续连续的内存空间。 二
22、维数组amn占内存空间的计算公式为: 数据类型 数组名行数列数; C+语语言言程程序序设设计计(chn x sh j)教教程程 第第5章章构构造造数数据据类类型型sizeof(数组名);或 m*sizeof(a0); 或 m*n*sizeof(数据类型)第二十一页,共九十六页。 int M23的排列顺序为:先先将3个int元素(yun s)排列组成2个一维数组M0, M1。 M0:M00,M01,M02 M1:M10,M11,M12 再再将2个一维数组排成一个二维数组。 M: M0, M1 C+语语言言(yyn)程程序序设设计计教教程程 第第5章章构构造造数数据据类类型型 实际地址 内容 符号
23、地址 103B2000 M00 M, M0 103B2004 M01 M0+1 103B2008 M02 M0+2 103B200C M10 M1 103B2010 M11 M1+1 103B2014 M12 M1+2 第二十二页,共九十六页。二维数组的初始化二维数组的初始化 :其中初值表具有两种形式:嵌套的初值表,线性初值表。 (1) 嵌套初值表嵌套初值表以二维数组Mmn为例,嵌套初值表的格式为: 嵌套初值表由一维初值表嵌套构成,各层构成规则与一维数组的初值表相同。 int M34=1,2,3,4,3,4,5,6,5,6,7,8; /M数组元素(yun s)被全部初始化 int a23=1,
24、0,0,1; /初始化了部分数组元素 int b3=1,2,3,; /初始化了全部数组元素 int d3=1,3,5,5,7,9; /初始化了全部数组元素,省略了高维元素个数 数据类型 数组名 常量(chngling)表达式2常量表达式1=初值表; C+语语言言程程序序设设计计教教程程(jiochng) 第第5章章构构造造数数据据类类型型M的初值表=M0初值表,M1初值表,Mm-1初值表Mi初值表=Mi0初值表, Mi1初值表,Min-1初值表;i从0到m-1;第二十三页,共九十六页。(2)线形初值表)线形初值表 线形初值表与一维数组的初值表相同,初值表的项数不超过(chogu)各维元素个数的
25、乘积(总元素个数)。 数组元素按内存排列顺序依次从初值表中取值,下列各数组使用了线形初值表,结果与使用嵌套初值表相同。 例如: int M34=1,2,3,4,3,4,5,6,5,6,7,8; /M数组元素被全部初始化 int a23=1,0,0,0,1,1; /初始化了全部数组元素 int b 3=1,0,0,0,0,0; /初始化了全部数组元素, 省略了高维元素个数 当使用线形初值表而省略高维元素个数时,高维元素个数为: 例如: int b 3=1,0,0,0;高维元素个数为2C+语语言言程程序序设设计计(chn x sh j)教教程程 第第5章章构构造造数数据据类类型型 向上取整数(线形
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新C+课件第5章 构造数据类型共96张PPT课件 最新 C+ 课件 构造 数据类型 96 PPT
限制150内