C++程序设计大学教程 教学课件 ppt 王春玲 第5章 构造数据类型

上传人:E**** 文档编号:89348157 上传时间:2019-05-23 格式:PPT 页数:54 大小:1.85MB
返回 下载 相关 举报
C++程序设计大学教程 教学课件 ppt 王春玲 第5章 构造数据类型_第1页
第1页 / 共54页
C++程序设计大学教程 教学课件 ppt 王春玲 第5章 构造数据类型_第2页
第2页 / 共54页
C++程序设计大学教程 教学课件 ppt 王春玲 第5章 构造数据类型_第3页
第3页 / 共54页
C++程序设计大学教程 教学课件 ppt 王春玲 第5章 构造数据类型_第4页
第4页 / 共54页
C++程序设计大学教程 教学课件 ppt 王春玲 第5章 构造数据类型_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《C++程序设计大学教程 教学课件 ppt 王春玲 第5章 构造数据类型》由会员分享,可在线阅读,更多相关《C++程序设计大学教程 教学课件 ppt 王春玲 第5章 构造数据类型(54页珍藏版)》请在金锄头文库上搜索。

1、构造数据类型,第4章,2,5.1 数组,数组是由若干相同数据类型的数据组成的有序集合。 数组中每一个数据又称为数组元素,它们之间具有固定的先后顺序。 用一个统一的数组名和下标来惟一地确定数组中的元素。 数组中所包含的数组元素的个数称为数组的长度。 数组是有类型属性的,每个数组中的所有元素都必须是同一数据类型的,可以是除void类型之外的任何一种数据类型。 一个数组在内存中占据一组连续的存储单元。,3,具有一个下标的数组称为一维数组; 具有两个或两个以上下标的数组称为二维或多维数组。 不管是几维的数组,在使用之前首先要定义,然后在程序中才可以使用。 定义一个数组,应该包括以下几个方面: (1)确

2、定数组的名称; (2)确定数组的数据类型,即数组中所有元素的类型; (3)确定数组的结构。,4,5.1.1 一维数组,1一维数组的定义 类型说明标识符 数组名常量表达式; 如: int b5; 2一维数组的引用 数组名下标 【例5-1】定义一个一维数组,把各元素值赋为其下标值,并反向输出各元素值。,5,3一维数组的初始化 (1)在定义数组时对所有的数组元素赋以初值,如: int a5=0,1,2,3,4; (2)在定义数组时只给一部分元素赋值,如: int a5=0,1,2; (3)如果想使一个数组中全部元素值为1,可以写成: int a5=1,1,1,1,1; 但不能写成:int a5=1*

3、5; (4)在对数组的全部元素赋初值时,可以不指定数组的长度。如: int a5=0,1,2,3,4; 可以写成:int a =0,1,2,3,4;,6,4一维数组程序举例 【例5-2】编写程序,输入10个数,从小到大排序,并输出排好序的10个数 。 冒泡排序,7,1二维数组的定义 类型说明符号 数组名常量表达式1常量表达式2 ; 如: int a34 ;,5.1.2 二维数组,8,2二维数组的使用 二维数组元素的表示方式为: 数组名下标下标 注意下标不要超过各维的大小。,9,3二维数组的初始化 (1)分行给二维数组赋初值 。 如: int a34=1,2,3,4,5,6,7,8,9,10,1

4、1,12 (2)可以将所有数据写在一个大括号内 。 如:int a34=1,2,3,4,5,6,7,8,9,10,11,12,10,(3)可以只对数组中部分元素初始化 。 如: int a34=1,3,5 (4)如果对二维数组的全部元素初始化,则定义数组时第一维长度可以省略,但第二维长度不能省 。 如: int a 4=1,2,3,4,5,6,7,8,9,10,11,12 , int a 4=0,0,7,0,18,11,4. 二维数组程序举例 【例5-3】将一个二维数组行和列元素互换,存到另一个二维数组中。例如:,【例5-4】编写程序,输入M个学生的N门课程的成绩,并分别求出每个学生的平均成绩

5、和每门课程的平均成绩。,12,1字符数组的定义 用来存放字符型数据的数组; 数组中的一个元素只能存放一个字符。 如:char c5,m34 2字符数组的初始化 如:char c5=a,b,c,d,e char c =a,b,c,d,e,5.1.3 字符数组,13,3字符串结束标志 在C+中,字符串是以0代表结束标志(字符串是以“”括起来的一串字符)。例如: char c5=a,b,c,d,0; “abcd”是包含4个字符的字符串,但在内存中占5个字节,最后一个字节存放字符串结束标志0。,14,4字符串的输出 (1)用cout输出。 cout字符串或字符数组名; 如: char s20=“Thi

6、s is a string.“; couts; 也可直接输出字符串,如: cout“This is a string.“;,15,(2)用cout流对象的put方法 。 cout.put(字符或字符变量); 利用这种方法,每次只能输出一个字符;要输出整个字符串,应采用循环的方法。如: #include using namespace std; int main() char s20=“This is a string.“; int i=0; while (si!=0) /用循环输出整个字符串 cout.put(si); i+; return 0; ,16,(3)用cout流对象的write方法

7、。 cout.write(字符串或字符数组名,个数n); 其作用是输出字符串中的前n个字符。如: #include using namespace std; int main() char s20=“This is a string.“; cout.write(s,4); return 0; ,17,5字符串的输入 (1)利用cin直接输入。 cin字符数组名; 如: #include using namespace std; int main() char s20; cins; couts; return 0; 当字符串中有空格符时,用这种方法无法接收全部的字符串。,18,(2)利用cin流

8、对象的getline方法。 cin.getline(字符数组名,输入字符串的最大长度n) ; 参数“字符数组名”是存放字符串的数组名称; 参数“输入字符串的最大长度n”包括了字符串结束标记0在内,所以其含义是从输入的字符串中的前面截取n-1个字符存放到字符数组中。如: #include using namespace std; int main() char s20; cin.getline(s,20); couts; return 0; 该种方法可以接收含有空格符的字符串。,19,(3)利用cin流对象的get方法。 格式1:cin.get(字符数组名, 输入字符串的最大长度n) ; 格式2

9、:字符变量名=cin.get( ) ; 格式1中的两参数的含义同getline方法中的类似。 格式2表示输入一个字符。如果要保存该字符,则在cin.get()的左边写上被赋值的变量名和赋值号;如果不保存该字符,则只写为cin.get();。 如: #include using namespace std; int main() char s20; char c; cin.get(s,10); couts; c=cin.get(); coutc; return 0; ,20,(1)字符串连接函数strcat strcat(char , const char ) ; 【例5-5】 使用字符串连接函

10、数strcat。 (2)字符串复制函数strcpy strcpy(char , const char ) ; 【例5-6】 使用字符串复制函数strcpy。,5.1.4 字符串函数,21,(3)字符串比较函数strcmp strcmp(const char , const char ) ; 【例5-7】 使用字符串比较函数strcmp。 (4)求字符串长度函数strlen strlen(const char ) ; 【例5-8】 使用求字符串长度函数strlen。,22,5.2 指针,一个变量在内存中所占存储单元的地址就称为该变量的指针。,23,1指针变量的定义 指针变量是一种特殊变量,它保存

11、的不是一般的数据,而是一个变量在内存中所占存储单元的地址。 定义的一般形式为: 数据类型标识符号 *指针变量名表; 如: int *p;,5.2.1 指针变量,24,2与指针运算有关系的两个运算符 (1) (2)*:取出指针变量所指向的变量的内容,后面跟指针变量。,25,3指针变量的引用 【例5-9】指针变量的定义及其使用。,26,1指向常量的指针变量 const 类型标识符 *指针变量名; #include using namespace std; int main() int i=10; const int j=20; const int *p; p= ,5.2.2 const指针,27,

12、2指针常量 类型标识符 * const 指针变量名=初始指针值; #include using namespace std; int main() int i=10,j=20; int * const p= ,28,3指向常量的指针常量 const 类型标识符 * const 指针变量名=初始指针值; #include using namespace std; int main() const int a=10; int b=20; const int * const p= ,29,5.2.3 用指针作为函数的参数,【例5-10】 定义交换两个变量的值的函数swap。 【例5-11】 定义交换

13、两个变量的值的函数swap(使用传地址方式)。,30,1指向数组元素的指针变量 int a10 ; int *p; p= 2通过指针变量使用数组元素 假设p为指向某数组元素的指针变量。 C+语言规定:p+1指向数组的下一个元素 (注意:并不只是单纯的p加1)。 【例5-12】 用指针法访问数组元素。,5.2.4 指针与数组,31,3. 数组名作为函数参数 (1)形参和实参都用数组名。 (2)实参用数组名,而形参用指针变量。 (3)实参和形参都用指针变量。 (4)实参用指针变量,而形参用数组名。 【例5-13】 编写程序,从数组中顺序查找出给定的值。若查找成功则返回该元素的下标位置,查找失败则返

14、回1。要求把顺序查找的功能单独用一个函数来实现。,32,1字符串的指针和指向字符串的指针变量 char *指针变量名; #include using namespace std; int main() char *str=“A string“; coutstr; return 0; ,5.2.5 指针与字符串,33,2字符串指针作函数参数 (1)形参和实参都用字符数组名。 (2)实参用字符数组名,而形参用字符指针变量。 (3)实参和形参都用字符指针变量。 (4)实参用字符指针变量,而形参用字符数组名。 【例5-14】将字符串b复制到字符串a中。,34,5.2.6 指针数组与多重指针,1指针数组

15、 数据类型标识符 * 数组名数组长度 这种指针数组比较适合于处理字符串。如: char *name3=“java“,“basic“,“c+“; 2指向指针的指针 数据类型标识符 *变量名 如:char *p;,35,引用就是某一目标(如,变量)的一个别名,这样,对引用的操作就是对目标的操作。 5.3.1 引用的定义 引用的声明方法: 数据类型标识符 /定义引用ra,它是变量a的引用,即别名,5.3 引用,36,5.3.2 引用的使用,一旦一个引用被声明,则该引用名就只能作为目标变量名的一个别名来使用,所以,不能再把该引用名作为其他变量名的别名,任何对该引用的赋值就是对该引用对应的目标变量名的赋值。 同样,对引用求地址就是对目标变量求地址。 【例5-15】 引用的定义及使用。,37,5.3.3 用引用作为函数的参数,void swap(int ,引用的主要目的!,指针作为函数的参数,38,引用与指针的区别,指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作,程序中使用指针使程序的可读性差; 而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。 在引用的使用中,单纯给某个变量取个别名是毫无意义

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

最新文档


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

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