《C++程序设计教程》-杨国兴-电子教案及例题 第5章 数组与指针

上传人:E**** 文档编号:89399748 上传时间:2019-05-24 格式:PPT 页数:53 大小:375KB
返回 下载 相关 举报
《C++程序设计教程》-杨国兴-电子教案及例题 第5章  数组与指针_第1页
第1页 / 共53页
《C++程序设计教程》-杨国兴-电子教案及例题 第5章  数组与指针_第2页
第2页 / 共53页
《C++程序设计教程》-杨国兴-电子教案及例题 第5章  数组与指针_第3页
第3页 / 共53页
《C++程序设计教程》-杨国兴-电子教案及例题 第5章  数组与指针_第4页
第4页 / 共53页
《C++程序设计教程》-杨国兴-电子教案及例题 第5章  数组与指针_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《《C++程序设计教程》-杨国兴-电子教案及例题 第5章 数组与指针》由会员分享,可在线阅读,更多相关《《C++程序设计教程》-杨国兴-电子教案及例题 第5章 数组与指针(53页珍藏版)》请在金锄头文库上搜索。

1、第5章 数组与指针,5.1 数组 5.2 指针 5.3 动态内存分配 5.4 指针作为函数的参数 5.5 指针数组与多级指针,5.1 数组,数组:具有相同数据类型的若干变量按序进行存储的变量集合 。 数组有一维、二维和多维数组。 5.1.1 一维数组 1. 一维数组的定义 数据类型 数组名常量表达式; 如: int a10; 说明: (1) 数组名与变量名一样都是标识符,必须遵循标识符的命名规则。 (2) “数据类型”是指数组元素的数据类型,可以是任一基本类型或构造类型,同一个数组的每个元素都具有相同的数据类型。,第5章 数组与指针,5.1 数组,5.1.1 一维数组(续一) (3) “常量表

2、达式”必须用方括号括起来,指的是数组的元素个数(又称数组长度),它是一个整型值,其中可以包含常数和符号常量,但不能包含变量。 (4) 数组元素的下标从0开始,即数组中第一个元素的下标为0。如上面定义的数组a的第一个元素是a0。 (5) 一个数组中的所有元素在内存中是连续存放的。 2. 一维数组的引用 引用格式: 数组名下标 其中下标可以为整型常量或表达式 注意:引用数组元素时,不要使下标越界! 如上面的数组a,其下标应为09!,第5章 数组与指针,例5.1 一维数组的引用,#include void main() int i,a10; for(i=0; i10; i+) ai = i*10;

3、for(i=0; i10; i+) cout ai “ “; cout endl; ,程序运行结果为: 0 10 20 30 40 50 60 70 80 90,第5章 数组与指针,5.1 数组,5.1.1 一维数组(续一) 3. 一维数组的初始化 在定义数组的同时为数组元素提供初始值,称为数组的初始化。一维数组初始化的一般格式为: 数据类型 数组名常量表达式 = 值1, 值2, , 值n; 例如: (1) int a5 = 1,2,3,4,5; (2) int a = 1,2,3,4,5; 不指定数组长度,根据初值个数自动确定长度 (3) int a5 = 1,2,3; 初值个数小于数组长度

4、,后面元素值自动赋为0 (4) int a5 = 0; 初值只写出一个0,则将所有元素都初始化为0,第5章 数组与指针,例5.2 用一维数组处理Fibonacci数列的前40项,#include #include void main() int i; int f40=1,1; for(i=2; i40; i+) fi = fi-1 + fi-2; for(i=0; i40; i+) cout setw(12) fi; if( (i+1)%5 = 0) cout endl; cout endl; ,第5章 数组与指针,例5.2(续),程序运行结果:,第5章 数组与指针,例5.3 用冒泡法对10个

5、整数按从小到大的顺序排序,分析:冒泡法的基本思想是通过相邻两个数之间的比较和交换,使较小的数逐渐从底部移向顶部,较大的数逐渐从顶部移向底部。以5个整数排序为例,过程如图所示。 整个排序过程由两层循环完成,第一次外层循环通过相邻两个数的比较交换,将待排序数据中的最大数8移到最后,此时最后一个数8已经排好序。第二次外层循环再把剩下的4个数两俩比较交换,将其中最大的数5移到a3的位置,此时最后两个数5,8已经排好序。一直到最后将所有数据都排好序。,第5章 数组与指针,例5.3(续一),#include #include void main() int i,j,t,a10; cout ai; for(

6、i=0; i10-1; i+) for(j=0; j 10-1-i; j+) ,第5章 数组与指针,例5.3(续二),if(aj aj+1) t = aj; aj = aj+1; aj+1=t; cout “排序后的数据:“; for(i=0; i10; i+) cout setw(5) ai; ,第5章 数组与指针,程序运行结果为: 请输入10个整数,用空格分隔:8 3 9 18 32 42 17 24 25 13 排序后的数据:3 8 9 13 17 18 24 25 32 42,5.1 数组,5.1.2 二维数组 1. 二维数组的定义 数据类型 数组名常量表达式1常量表达式2; 如: i

7、nt a23; 二维数组在内存中按行存放。 2. 二维数组的引用 引用格式: 数组名下标1下标2 其中下标可以为整型常量或表达式,第5章 数组与指针,a00 a01 a02 a10 a11 a12,例5.4 二维数组的引用,#include void main() int i,j, a34; for(i=0; i3; i+) for(j=0; j4; j+) aij = (i+1)*10+j; for(i=0; i3; i+) for(j=0; j4; j+) cout aij “ “; cout endl; ,程序运行结果为: 10 11 12 13 20 21 22 23 30 31 32

8、 33,第5章 数组与指针,5.1 数组,5.1.2 二维数组(续) 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 ; (3)对部分数组元素初始化 如: int a34 = 1,2,3,4,5,6,7,8 ; int a34 = 1,2,3,4,5,6,7;,第5章 数组与指针,例5.5 将两个2*3的二维数组中的对应元素的值相加后存入第3个数组中,并输出到屏幕。,#include #i

9、nclude void main() int i,j,c23; int a23=1,2,3,4,5,6; int b23=7,8,9,10,11,12; for(i=0; i2; i+) for(j=0; j3; j+) cij=aij+bij; for(i=0; i2; i+) for(j=0; j3; j+) cout setw(4) cij; cout endl; ,程序运行结果为: 8 10 12 14 16 18,第5章 数组与指针,例5.6 找出4*4二维数组中对角线上元素的最大值。,#include #include void main() int a44 = 11,24,53,

10、14,51,36,27,18,29,15,41,62,23,84,75,26; int i,j,max; for(i=0; i max) max = aii; cout “对角线的最大值是:“ max; ,程序运行结果为: 11 24 53 14 51 36 27 18 29 15 41 62 23 84 75 26 对角线的最大值是:41,第5章 数组与指针,5.1 数组,5.1.3 字符数组 1. 字符数组的定义 char 数组名常量表达式; char 数组名常量表达式1常量表达式2; 如: char a10, b34; 2. 字符数组的初始化 char 数组名常量表达式 = 字符1, 字

11、符2, , 字符n; 如:char s10=c, , p, r, o, g, r, a, m; 注意:初值个数如大于数组长度会发生编译错误 若初值个数小于数组长度,后面多余元素赋为0 若初值个数与数组长度相同,定义数组时长度可以省略,第5章 数组与指针,5.1 数组,5.1.3 字符数组(续一) 用字符串常量初始化字符数组: 如: char s10=“c program”; 或 char s10= “c program”; 注意这种方式要保证字符数组长度字符串的字符个数+1 3. 字符数组的引用 (1)单个数组元素的引用 如输出上面的字符数组s,可用以下语句: for(int i = 0; i

12、10; i+ ) cout si; (2)字符数组的整体引用 也可用以下方式输出字符数组s: cout s;,第5章 数组与指针,5.1 数组,5.1.3 字符数组(续二) 4. 字符串与字符串结束标志 C+使用字符数组存放字符串,为了测试字符串的实际长度,在字符串结尾定义了一个结束标志 0( ASCII码值为0的字符 ) 例5.9 求一个字符串的实际长度 #include void main() char s20 = “C Program”; /后面的11个元素都初始化为 0 int i, len=0; for(i=0; si!=0; i+) len+; cout len endl; ,第5

13、章 数组与指针,5.1 数组,5.1.3 字符数组(续三) 5. 常用的字符串处理函数 对字符串进行比较、复制等操作的系统函数,使用前需包含头文件string.h。 (1)strcmp() 函数比较两个字符串的大小 strcmp(字符串1,字符串2) 函数返回值: a字符串1与字符串2相等,函数返回值等于0; b字符串1大于字符串2,函数返回值等于1; c字符串1小于字符串2,函数返回值等于-1。 字符串比较规则:从两个字符串的第一个字符开始,每对相应字符按ASCII码大小进行比较,直到对应字符不相同或达到串尾为止。,第5章 数组与指针,例5.10 strcmp()函数的应用,#include

14、 #include void main() char a10 = “Program“; char b10 = “Programer“; char c10 = “Problem“; int i,j,k,l; i = strcmp(a,b); j = strcmp(a,c); k = strcmp(a,“Program“); l = strcmp(c,a); cout i “ “ j “ “ k “ “ l endl; ,程序运行结果为: -1 1 0 -1,第5章 数组与指针,5.1 数组,5.1.3 字符数组(续四) (2)strcpy() 函数复制字符串 strcpy(字符数组,字符串) 函数执行后将字符串复制到字符数组中。 注意: 字符数组必须定义得足够大,以便容纳复制过来的字符串。复制时,连同结束标志0一起复制。 不能用赋值运算符“=”将一个字符串直接赋值给一个字符数组,必须用函数strcpy()复制。,第5章 数组与指针,例5.11 strcpy()函数的应用,#include #include void main() char a20; char b20 = “C+ Program“; strcpy(a, b); strcpy(b, “C+“); cout a endl; cout b endl; ,程序运行结果为: C+ Program C+,第5章 数组与

展开阅读全文
相关资源
相关搜索

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

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