面向对象的程序设计语言——C++ 第二版 教学课件 ppt 作者 陈志泊 第05章

上传人:E**** 文档编号:89494851 上传时间:2019-05-25 格式:PPT 页数:48 大小:323KB
返回 下载 相关 举报
面向对象的程序设计语言——C++ 第二版  教学课件 ppt 作者  陈志泊 第05章_第1页
第1页 / 共48页
面向对象的程序设计语言——C++ 第二版  教学课件 ppt 作者  陈志泊 第05章_第2页
第2页 / 共48页
面向对象的程序设计语言——C++ 第二版  教学课件 ppt 作者  陈志泊 第05章_第3页
第3页 / 共48页
面向对象的程序设计语言——C++ 第二版  教学课件 ppt 作者  陈志泊 第05章_第4页
第4页 / 共48页
面向对象的程序设计语言——C++ 第二版  教学课件 ppt 作者  陈志泊 第05章_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《面向对象的程序设计语言——C++ 第二版 教学课件 ppt 作者 陈志泊 第05章》由会员分享,可在线阅读,更多相关《面向对象的程序设计语言——C++ 第二版 教学课件 ppt 作者 陈志泊 第05章(48页珍藏版)》请在金锄头文库上搜索。

1、第5章,构造数据类型,北京林业大学 软件教研室,2,本章主要内容,(1)理解和掌握数组的定义和使用。 (2)理解和掌握指针的定义和使用。 (3)熟练掌握C+中结构体、共用体和枚举的定义和使用。,北京林业大学 软件教研室,3,5.1 数组,数组是由若干相同数据类型的数据组成的有序集合。 数组中每一个数据又称为数组元素,它们之间具有固定的先后顺序。 用一个统一的数组名和下标来惟一地确定数组中的元素。 数组中所包含的数组元素的个数称为数组的长度。 数组是有类型属性的,每个数组中的所有元素都必须是同一数据类型的,可以是除void类型之外的任何一种数据类型。 一个数组在内存中占据一组连续的存储单元。,北

2、京林业大学 软件教研室,4,具有一个下标的数组称为一维数组; 具有两个或两个以上下标的数组称为二维或多维数组。 不管是几维的数组,在使用之前首先要定义,然后在程序中才可以使用。 定义一个数组,应该包括以下几个方面: (1)确定数组的名称; (2)确定数组的数据类型,即数组中所有元素的类型; (3)确定数组的结构 5.1.1 一维数组的定义与引用 1一维数组的定义 类型说明标识符 数组名常量表达式; 如: int b5; 2一维数组的引用 数组名下标 【例5-1】定义一个一维数组,把各元素值清0,然后逆序输出各元素值。,北京林业大学 软件教研室,5,3一维数组的初始化 (1)在定义数组时对数组元

3、素赋以初值 。 如: int a5=0,1,2,3,4 (2)可以只给一部分元素赋值 。 如: int a5=0,1,2 (3)对全部元素赋初值时,可以不指定数组的长度。 如: int b =0,1,2,3,4 (4) C+不支持数组之间的直接赋值,只能一个一个元素地赋值。,北京林业大学 软件教研室,6,4一维数组的程序举例 【例5-2】求100以内的Fibonacci数列并显示。,北京林业大学 软件教研室,7,5.1.2 二维数组的定义与引用 1二维数组的定义 类型说明符号 数组名常量表达式1常量表达式2 ; 如: int a34 ;,北京林业大学 软件教研室,8,2二维数组的引用 二维数组

4、元素的表示方式为: 数组名下标下标 在引用二维数组中的元素时,只要指明该元素所在的数组名及两个下标的下标值即可,可以利用它来访问数组中的每个元素,注意下标不要超过各维的大小。,北京林业大学 软件教研室,9,3二维数组的初始化 (1)分行给二维数组赋初值 。 如: int a34=1,2,3,4,5,6,7,8,9,10,11,12 (2)可以将所有数据写在一个大括号内 。 如:int a34=1,2,3,4,5,6,7,8,9,10,11,12,北京林业大学 软件教研室,10,(3)可以只对数组中部分元素初始化 。 如: int a34=1,3,5 (4)如果对二维数组的全部元素初始化,则定义

5、数组时第一维长度可以省略,但第二维长度不能省 。 如: int a 4=1,2,3,4,5,6,7,8,9,10,11,12 , int a 4=0,0,7,0,18 【例5-3】输入一个32矩阵,求出矩阵中最小数,并显示其所在的行号和列号。 分析:可用变量min存储矩阵中的最小值,初始时将min的初值设为元素a00的值,然后依次利用矩阵中的其余元素与之比较,较小者存放在min中,并同时保存行号和列号,直到最后一个元素为止。,北京林业大学 软件教研室,11,5.1.3 字符数组与字符串 1字符数组的定义 用来存放字符型数据的数组为字符数组,数组中的一个元素只能存放一个字符。 如:char c5

6、,m34 2字符数组的初始化 如:char c5=a,b,c,d,e char c =a,b,c,d,e,北京林业大学 软件教研室,12,3字符串和字符串结束标志 字符串是用一对双引号“ ”括起来的一串字符,如,“program”、“abcdef”等都是字符串。 字符串“program”是包含7个字符的字符串,但在内存中占8个字节,最后一个字节存放0,字符串结束标志0是由系统自动添加的。 如: char c8=“ program” 等价于 char c8=p,r,o,g,r,a,m,0,北京林业大学 软件教研室,13,4字符串的输出 (1)用cout输出。 cout字符串或字符数组名; 如:

7、char s20=“This is a string.“; couts; 也可直接输出字符串,如: cout“This is a string.“; 注意: 结束符0不会被输出。 输出字符串时,cout流中采用的是字符数组名,而不是字符数组元素名。如: char s20=“This is a string.“; couts; /用字符数组名,输出整个字符串 couts3; /用字符数组元素名,只输出元素s3中存储的一个字符 若一个字符数组中包含多个结束符0,则遇到第一个0时就结束输出。,北京林业大学 软件教研室,14,(2)用cout流对象的put方法 。 cout.put(字符或字符变量);

8、 利用这种方法,每次只能输出一个字符;要输出整个字符串,应采用循环的方法。如: #include void main() char s20=“This is a string.“;/利用字符串为字符数组赋值 int i=0; while (si!=0) /判断是否为结束标志 cout.put (si); /输出当前字符 i+; ,北京林业大学 软件教研室,15,(3)用cout流对象的write方法。 cout.write(字符串或字符数组名,个数n); 其作用是输出字符串中的前n个字符。如: #include void main() char s20=“This is a string.“;

9、 cout.write(s,4); ,北京林业大学 软件教研室,16,5字符串的输入 (1)利用cin直接输入。 cin字符数组名; 如: #include void main() char s7; cins; couts; 当字符串中有空格符时,用这种方法无法接收全部的字符串。,北京林业大学 软件教研室,17,(2)利用cin流对象的getline方法。 cin.getline(字符数组名,输入字符串的最大长度n) ; 参数“字符数组名”是存放字符串的数组名称; 参数“输入字符串的最大长度n”包括了字符串结束标记0在内,所以其含义是从输入的字符串中的前面截取n-1个字符存放到字符数组中。如:

10、 #include void main() char s20; cin.getline (s,20); couts; 该种方法可以接收含有空格符的字符串。,北京林业大学 软件教研室,18,(3)利用cin流对象的get方法。 格式1:cin.get(字符数组名, 输入字符串的最大长度n) ; 格式2:字符变量名=cin.get( ) ; 格式1中的两参数的含义同getline方法中的类似。 格式2表示输入一个字符。如果要保存该字符,则在cin.get()的左边写上被赋值的变量名和赋值号;如果不保存该字符,则只写为cin.get();。 如: #include void main() char

11、s20; char c; cin.get(s,10); couts; c=cin.get(); coutc; ,北京林业大学 软件教研室,19,6常用字符串处理的库函数 (1)字符串连接函数strcat strcat(char , const char ) ; (2)字符串复制函数strcpy strcpy(char , const char ) ; (3)字符串比较函数strcmp strcmp(const char , const char ) ; (4)求字符串长度函数strlen strlen(const char ) ;,北京林业大学 软件教研室,20,5.2 指针,一个变量在内存中

12、所占存储单元的地址就称为该变量的指针。,北京林业大学 软件教研室,21,5.2.1 指针变量的定义与使用 1指针变量的定义 指针变量是一种特殊变量,它保存的不是一般的数据,而是一个变量在内存中所占存储单元的地址。 定义的一般形式为: 类型标识符号 *指针变量名表 如: int *p;,北京林业大学 软件教研室,22,2与指针运算有关系的两个运算符 (1) (2)*:取出指针变量所指向的变量的内容,后面跟指针变量。 3指针变量的引用 【例5-4】指针变量及其使用方法。,北京林业大学 软件教研室,23,5.2.2 const指针 1指向常量的指针变量 const 类型标识符 *指针变量名; inc

13、lude void main() const int i=20; /定义常量i int k=40; const int *p; /定义指向常量的指针变量p p= ,北京林业大学 软件教研室,24,2指针常量 类型标识符 * const 指针变量名=初始指针值 void main() char s=“askdfsljfl“; char * const p=s; /必须初始化 p=“xyz“; /该句错误,不可再使指针变量指向另外一个地址(指针) cout*p; *p=s; cout*p; p+; *p=q; cout*p; ,北京林业大学 软件教研室,25,3指向常量的指针常量 const 类型

14、标识符 * const 指针变量名=初始指针值; void main() int a=10; int c=30; const int b=20; /定义常量 const int * const p= /错误 ,北京林业大学 软件教研室,26,5.2.3 用指针作为函数的参数 作用: (1)是使实参与形参指针指向共同的内存空间,以达到参数双向传递的目的。 (2)减少函数调用时数据传递的开销。 (3)通过指向函数的指针传递函数代码的首地址。 【例5-5】编写一个函数,实现交换两个变量的值。,北京林业大学 软件教研室,27,5.2.4 数组的指针 1指向数组元素的指针变量的定义与赋值 int a10

15、 ; int *p; p= 2通过指针变量使用数组元素 假设p为指向某数组元素的指针变量。 C+语言规定:p+1指向数组的下一个元素 (注意:并不只是单纯的p加1)。 【例5-6】设计一个程序,定义一个一维数组并进行初始化,利用下标、数组名、指针变量三种方法输出数组中的所有元素的值。,北京林业大学 软件教研室,28,5.2.5 数组名作函数参数 1、数组元素名作为函数参数 【例5-7】用函数方式处理【例5-3】。,北京林业大学 软件教研室,29,2、数组名作为函数参数 (1)形参和实参都采用数组名 【例5-8】将一个数组的元素反向存储到另一个数组中。 分析:将长度为6的数组a的第一个元素a0的值存储到数组b的最后一个元素b5中,a1的值存储到b4中,a5的值存储到b0中,即ai=b6-1-i。 (2)实参用数组名,对应的形参为指针变量 【例5-9】重写【例5-8】中的程序代码,实参用数组名,exchange函数中对应的形参为指针变量。,北京林业大学 软件教研室,30,3、多维数组名作为函数参数 如 :int a

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号