收藏 分销(赏)

C++课件第6章-数组.ppt

上传人:天**** 文档编号:2053519 上传时间:2024-05-14 格式:PPT 页数:36 大小:264KB
下载 相关 举报
C++课件第6章-数组.ppt_第1页
第1页 / 共36页
C++课件第6章-数组.ppt_第2页
第2页 / 共36页
C++课件第6章-数组.ppt_第3页
第3页 / 共36页
C++课件第6章-数组.ppt_第4页
第4页 / 共36页
C++课件第6章-数组.ppt_第5页
第5页 / 共36页
点击查看更多>>
资源描述

1、第第6章章数组数组本本章章主主要要介介绍绍数数组组的的定定义义及及应应用用,包包括括一一维维数数组组、多多维维数数组组和和字字符符数数组组以及字符串处理函数等。以及字符串处理函数等。VisualC+程程序序设设计计基基础础5/12/20241精选课件数 组C+C+除提供基本数据类型外,还提供了除提供基本数据类型外,还提供了除提供基本数据类型外,还提供了除提供基本数据类型外,还提供了构造数构造数构造数构造数据类型据类型据类型据类型,如数组、结构体、共同体和类。,如数组、结构体、共同体和类。,如数组、结构体、共同体和类。,如数组、结构体、共同体和类。具有相同类型的若干个元素组成的有序集合称具有相同

2、类型的若干个元素组成的有序集合称具有相同类型的若干个元素组成的有序集合称具有相同类型的若干个元素组成的有序集合称为为为为数组。数组。数组。数组。如:如:如:如:intscore30;intscore30;数组拥有一个公共的名字,称之为数组拥有一个公共的名字,称之为数组拥有一个公共的名字,称之为数组拥有一个公共的名字,称之为数组名数组名数组名数组名。一。一。一。一个数组由若干个元素组成,数组内的每个元素的个数组由若干个元素组成,数组内的每个元素的个数组由若干个元素组成,数组内的每个元素的个数组由若干个元素组成,数组内的每个元素的类型必须相同,它们在内存中占据的地址空间也类型必须相同,它们在内存中

3、占据的地址空间也类型必须相同,它们在内存中占据的地址空间也类型必须相同,它们在内存中占据的地址空间也是是是是连续连续连续连续的。的。的。的。VisualC+程程序序设设计计基基础础5/12/20242精选课件一维数组的定义一维数组定义的一般形式为:一维数组定义的一般形式为:一维数组定义的一般形式为:一维数组定义的一般形式为:存储类别存储类别存储类别存储类别数据类型数据类型数据类型数据类型 数组名数组名数组名数组名 常量表达式常量表达式常量表达式常量表达式 如:如:如:如:autointa10;autointa10;或或或或staticinta10;staticinta10;则定义了一个包含十个

4、元素的数组,分别为则定义了一个包含十个元素的数组,分别为则定义了一个包含十个元素的数组,分别为则定义了一个包含十个元素的数组,分别为a0a0,a1a1,a2a2,a9a9。C+C+语言中语言中语言中语言中数组的下标数组的下标数组的下标数组的下标从从从从0 0开始开始开始开始;为下标运算符为下标运算符为下标运算符为下标运算符;“常量表达式常量表达式常量表达式常量表达式”中不中不中不中不能包含变量;数组名的命名必须符合标识符的命能包含变量;数组名的命名必须符合标识符的命能包含变量;数组名的命名必须符合标识符的命能包含变量;数组名的命名必须符合标识符的命名规则。名规则。名规则。名规则。VisualC

5、+程程序序设设计计基基础础5/12/20243精选课件一维数组的定义对于数组定义应注意以下几点:对于数组定义应注意以下几点:对于数组定义应注意以下几点:对于数组定义应注意以下几点:qq相同作用域内,数组名不能与其它变量名相同,相同作用域内,数组名不能与其它变量名相同,相同作用域内,数组名不能与其它变量名相同,相同作用域内,数组名不能与其它变量名相同,例如:例如:例如:例如:voidmain()voidmain()intint a a;float;floata10a10;/是错误的。是错误的。是错误的。是错误的。qq方方方方括括括括号号号号中中中中的的的的常常常常量量量量表表表表达达达达式式式式

6、必必必必须须须须有有有有确确确确定定定定的的的的正正正正整整整整数数数数值值值值(不不不不能能能能为为为为变变变变量或实数量或实数量或实数量或实数),可以是符号常量。,可以是符号常量。,可以是符号常量。,可以是符号常量。例如:例如:例如:例如:#defineFD5#defineFD5voidmain()voidmain()intinta3+2,b7+FD;a3+2,b7+FD;/是合法的。是合法的。是合法的。是合法的。但是下述说明方式是错误的:但是下述说明方式是错误的:但是下述说明方式是错误的:但是下述说明方式是错误的:voidmain()voidmain()intintn=5;n=5;int

7、intan,b5.5an,b5.5;/;/是错误的。是错误的。是错误的。是错误的。qq允许在同一个类型说明中,说明多个数组和多个变量。允许在同一个类型说明中,说明多个数组和多个变量。允许在同一个类型说明中,说明多个数组和多个变量。允许在同一个类型说明中,说明多个数组和多个变量。例如:例如:例如:例如:intinta,b,c,d,k110,k220;a,b,c,d,k110,k220;VisualC+程程序序设设计计基基础础5/12/20244精选课件一维数组的初始化1 1、一维数组的初始化:指在定义数组的同时,给数组元、一维数组的初始化:指在定义数组的同时,给数组元、一维数组的初始化:指在定义

8、数组的同时,给数组元、一维数组的初始化:指在定义数组的同时,给数组元素赋值。素赋值。素赋值。素赋值。如:如:如:如:inta5=1,2,3,4,5;inta5=1,2,3,4,5;2 2、如果对全部数组元素赋初值,可以不指定数组长度。、如果对全部数组元素赋初值,可以不指定数组长度。、如果对全部数组元素赋初值,可以不指定数组长度。、如果对全部数组元素赋初值,可以不指定数组长度。例如:例如:例如:例如:inta=1,2,3,4,5;inta=1,2,3,4,5;和和和和inta5=1,2,3,4,5;inta5=1,2,3,4,5;相同相同相同相同3 3、可以只给部分数组元素赋初值。、可以只给部分

9、数组元素赋初值。、可以只给部分数组元素赋初值。、可以只给部分数组元素赋初值。例如:例如:例如:例如:inta10=0,1,2,3,4;inta10=0,1,2,3,4;表示只给表示只给表示只给表示只给a0a0a45a45个元素个元素个元素个元素赋值,赋值,赋值,赋值,而后而后而后而后5 5个元素自动赋个元素自动赋个元素自动赋个元素自动赋0 0值值值值。4 4、当当当当将将将将数数数数组组组组定定定定义义义义为为为为全全全全局局局局数数数数组组组组或或或或静静静静态态态态数数数数组组组组时时时时,如如如如不不不不给给给给数数数数组组组组赋初值,则元素的值全部为赋初值,则元素的值全部为赋初值,则元

10、素的值全部为赋初值,则元素的值全部为0 0。5 5、只能给元素逐个赋值,不能给数组整体赋值。、只能给元素逐个赋值,不能给数组整体赋值。、只能给元素逐个赋值,不能给数组整体赋值。、只能给元素逐个赋值,不能给数组整体赋值。例如:给数组元素全部赋例如:给数组元素全部赋例如:给数组元素全部赋例如:给数组元素全部赋1,1,只能写为只能写为只能写为只能写为:inta5=1,1,1,1,1;inta5=1,1,1,1,1;而不能写为:而不能写为:而不能写为:而不能写为:inta5=1;inta5=1;VisualC+程程序序设设计计基基础础5/12/20245精选课件一维数组的使用qq只能逐个使用数组元素,

11、只能逐个使用数组元素,只能逐个使用数组元素,只能逐个使用数组元素,而不能一次使用整个数组。而不能一次使用整个数组。而不能一次使用整个数组。而不能一次使用整个数组。例如:输出有例如:输出有例如:输出有例如:输出有1010个元素的数组必须使用循环语句个元素的数组必须使用循环语句个元素的数组必须使用循环语句个元素的数组必须使用循环语句 for(i=0;i10;i+)for(i=0;i10;i+)coutcoutai;ai;而不能用一个语句输出整个数组,下面的写法是错误的;而不能用一个语句输出整个数组,下面的写法是错误的;而不能用一个语句输出整个数组,下面的写法是错误的;而不能用一个语句输出整个数组,

12、下面的写法是错误的;coutcouta;a;下面的程序也是错误的:下面的程序也是错误的:下面的程序也是错误的:下面的程序也是错误的:intinta5,b5=1,2,3,4,5;a=b;a5,b5=1,2,3,4,5;a=b;同样,数组元素的赋值也只能逐个赋值。同样,数组元素的赋值也只能逐个赋值。同样,数组元素的赋值也只能逐个赋值。同样,数组元素的赋值也只能逐个赋值。intinta3;a3;a0=1;a1=2;a2=3;a0=1;a1=2;a2=3;或或或或for(intfor(inti=0;i3;i+)ai=i+1;i=0;ia1,交换a0a2,交换第3次4 415158 813136 61

13、1a0a3,不交换第4次4 415158 813136 61 1a0a5,交换5/12/20247精选课件一维数组应用实例(选择法排序)VisualC+程程序序设设计计基基础础经过第1轮循环后,找到了最小的数1,并将其放到了a0中,下面将找次小的数,并将其放到a1中。a0a1a2a3a4a5第1轮后1 115158 813136 64 4第1次1 18 8151513136 64 4第2次1 18 8151513136 64 4a1a2,交换a1a4,交换第4次1 14 4151513138 86 6a1a5,交换第1轮比较结束后的状态:第2轮开始:5/12/20248精选课件一维数组应用实例

14、(选择法排序)VisualC+程程序序设设计计基基础础经过第经过第2轮循环后,找到了次小的数轮循环后,找到了次小的数4,并将其放到了,并将其放到了a1中,依此类推,经过中,依此类推,经过5轮后即可完成排序工作。轮后即可完成排序工作。a0a1a2a3a4a51 14 46 68 813131515第5轮后最终结果为:for(i=0;i5;i+)for(j=i+1;jaj)temp=ai;ai=aj;aj=temp;完成该选择法排序的程序段为:5/12/20249精选课件一维数组应用实例(选择法排序)VisualC+程程序序设设计计基基础础另一种快速的选择法排序算法为:另一种快速的选择法排序算法为

15、:a0a1a2a3a4a5初始状态15158 84 413136 61 1第1轮循环1 18 84 413136 615151 14 48 813136 615151 14 46 613138 815151 14 46 68 8131315151 14 46 68 813131515第2轮循环第3轮循环第4轮循环第5轮循环将a0和最小的数a5交换将a1和次小的数a2交换下一步a2和a4交换下一步a3和a4交换5/12/202410精选课件一维数组应用实例(选择法排序)qq在在在在a0a0至至至至 an-1an-1中找出一中找出一中找出一中找出一个最小值,假定是个最小值,假定是个最小值,假定是个

16、最小值,假定是 atat,把把把把atat与与与与a0a0交换,使得交换,使得交换,使得交换,使得 a0a0最小;最小;最小;最小;qq再在再在再在再在 a1a1至至至至 an-1an-1中找出中找出中找出中找出一个最小值一个最小值一个最小值一个最小值 atat,把,把,把,把atat与与与与a1a1交换,使得交换,使得交换,使得交换,使得 a1a1最小最小最小最小qq依次类推,直到从依次类推,直到从依次类推,直到从依次类推,直到从 an-2an-2和和和和 an-1an-1中找出最小值。中找出最小值。中找出最小值。中找出最小值。VisualC+程程序序设设计计基基础础一般情况下,对于一般情况

17、下,对于N个数据的排序问题,该算法可描述为:个数据的排序问题,该算法可描述为:for(i=0;iN-1;i+)t=i;for(j=i+1;jaj)t=j;if(t!=i)temp=ai;ai=at;at=temp;5/12/202411精选课件例:把一列无序数据例:把一列无序数据(如如15841361)放在数组放在数组a0a5中,要求按升序排列。中,要求按升序排列。一维数组应用实例(冒泡法排序)VisualC+程程序序设设计计基基础础a0a0a1a1a2a2a3a3a4a4a5a515158 84 413136 61 1初始状态第第1次:次:a0a1,交换,交换a0和和a18 815154 4

18、13136 61 1第第2次:次:a1a2,交换,交换a1和和a28 84 4151513136 61 1第第3次:次:a2a3,交换,交换a2和和a38 84 4131315156 61 1第第4次:次:a3a4,交换,交换a3和和a48 84 413136 615151 1第第5次:次:a4a5,交换,交换a4和和a58 84 413136 61 11515这是第1轮排序后的结果,最大的数沉到了最下面,小数则向上移动5/12/202412精选课件经过第经过第1轮轮5次次比较,找出了最大的数比较,找出了最大的数15并将其保存到并将其保存到a5中,其它数上浮。在第中,其它数上浮。在第2轮比较中

19、,将轮比较中,将a0a4按前述按前述方法进行方法进行4次次交换后,可得到第交换后,可得到第2个比较大的数个比较大的数13,存放于,存放于a4中。依此类推,可得到排序结果。中。依此类推,可得到排序结果。一维数组应用实例(冒泡法排序)VisualC+程程序序设设计计基基础础a0a0a1a1a2a2a3a3a4a4a5a58 84 413136 61 11515第1轮第2轮4 48 86 61 113131515第3轮4 46 61 18 813131515第4轮4 41 16 68 8131315151 14 46 68 813131515第5轮5/12/202413精选课件一般的,对于一般的,对

20、于N个数据的冒泡法排序,该算法可描述为:个数据的冒泡法排序,该算法可描述为:一维数组应用实例(冒泡法排序)VisualC+程程序序设设计计基基础础qa0与与a1比较比较,若若a0a1,两数交换;然后两数交换;然后a1与与a2比较,重复上述步骤。结果比较,重复上述步骤。结果大数沉底,小数上升,大数沉底,小数上升,an-1中为最大的数。中为最大的数。qa0到到an-2,两两比较。两两比较。q依次类推,直到从依次类推,直到从a0和和a1中找出最大值沉底。中找出最大值沉底。for(i=0;iN-1;i+)for(j=0;jaj+1)t=aj;aj=aj+1;aj+1=t;5/12/202414精选课件

21、二维数组的定义格式:格式:格式:格式:类型说明类型说明类型说明类型说明 数组名数组名数组名数组名 常量表达式常量表达式常量表达式常量表达式11常量表达式常量表达式常量表达式常量表达式11例如:例如:例如:例如:inta23;inta23;说明:说明:说明:说明:定义了一个定义了一个定义了一个定义了一个2 2行行行行3 3列的二维数组,数组元素个数为列的二维数组,数组元素个数为列的二维数组,数组元素个数为列的二维数组,数组元素个数为(常量表达式常量表达式常量表达式常量表达式1)*(1)*(常量表达式常量表达式常量表达式常量表达式2)2)的值,即共有的值,即共有的值,即共有的值,即共有6 6个整型

22、数据,个整型数据,个整型数据,个整型数据,在内存开辟了连续在内存开辟了连续在内存开辟了连续在内存开辟了连续2424个字节存储单元。数组每一维的下个字节存储单元。数组每一维的下个字节存储单元。数组每一维的下个字节存储单元。数组每一维的下标都从标都从标都从标都从0 0开始。开始。开始。开始。对于二维数组,逻辑上可以把它看成是一个表格结构,对于二维数组,逻辑上可以把它看成是一个表格结构,对于二维数组,逻辑上可以把它看成是一个表格结构,对于二维数组,逻辑上可以把它看成是一个表格结构,第一个下标代表第一个下标代表第一个下标代表第一个下标代表“行号行号行号行号”,第二个下标代表列号。,第二个下标代表列号。

23、,第二个下标代表列号。,第二个下标代表列号。VisualC+程程序序设设计计基基础础5/12/202415精选课件二维数组的定义在在在在C+C+中,二维数组元素在内存中的存放方式为按行存中,二维数组元素在内存中的存放方式为按行存中,二维数组元素在内存中的存放方式为按行存中,二维数组元素在内存中的存放方式为按行存放,称为放,称为放,称为放,称为行主顺序行主顺序行主顺序行主顺序。C+C+语言把二维数组看成是一种特殊语言把二维数组看成是一种特殊语言把二维数组看成是一种特殊语言把二维数组看成是一种特殊的一维数组,即由的一维数组,即由的一维数组,即由的一维数组,即由a0a0,a1a1两个元素组成,而两个

24、元素组成,而两个元素组成,而两个元素组成,而a0a0、a1a1又是由一维数组组成。又是由一维数组组成。又是由一维数组组成。又是由一维数组组成。例如上例中数据在内存中的存放顺序为:例如上例中数据在内存中的存放顺序为:例如上例中数据在内存中的存放顺序为:例如上例中数据在内存中的存放顺序为:aa:a0a0:a1a1:必必必必须须须须强强强强调调调调的的的的是是是是,a0,a0,a1a1不不不不能能能能当当当当作作作作下下下下标标标标变变变变量量量量使使使使用用用用,它它它它们们们们是是是是数组名,不是一个单纯的下标变量。数组名,不是一个单纯的下标变量。数组名,不是一个单纯的下标变量。数组名,不是一个

25、单纯的下标变量。VisualC+程程序序设设计计基基础础a0a000 a0a011 a0a022a1a100 a1a111 a1a1225/12/202416精选课件多维数组的定义对于三维数组来说,可以依据二维数组的定义方法来对于三维数组来说,可以依据二维数组的定义方法来对于三维数组来说,可以依据二维数组的定义方法来对于三维数组来说,可以依据二维数组的定义方法来定义:如定义:如定义:如定义:如inta234;inta234;其中第一个下标称为其中第一个下标称为其中第一个下标称为其中第一个下标称为“页下标页下标页下标页下标”,第二个下标称为,第二个下标称为,第二个下标称为,第二个下标称为“行下标

26、行下标行下标行下标”,第三个下标称为,第三个下标称为,第三个下标称为,第三个下标称为“列下标列下标列下标列下标”。这个三维数组在内存中同。这个三维数组在内存中同。这个三维数组在内存中同。这个三维数组在内存中同样要占据连续的内存空间。上面定义的三维数组在内存样要占据连续的内存空间。上面定义的三维数组在内存样要占据连续的内存空间。上面定义的三维数组在内存样要占据连续的内存空间。上面定义的三维数组在内存中将先放第中将先放第中将先放第中将先放第0 0页中的数组元素,然后放第一页中的数组元页中的数组元素,然后放第一页中的数组元页中的数组元素,然后放第一页中的数组元页中的数组元素,然后放第一页中的数组元素

27、,每页中的元素还是按素,每页中的元素还是按素,每页中的元素还是按素,每页中的元素还是按“行主顺序行主顺序行主顺序行主顺序”存放。存放。存放。存放。VisualC+程程序序设设计计基基础础5/12/202417精选课件二维(多维)数组的引用对二维数组的引用可通过双重循环来实现。对二维数组的引用可通过双重循环来实现。对二维数组的引用可通过双重循环来实现。对二维数组的引用可通过双重循环来实现。例如要引用例如要引用例如要引用例如要引用a34a34数组中的元素:数组中的元素:数组中的元素:数组中的元素:for(i=0;i3;i+)for(i=0;i3;i+)for(j=0;j4;j+)for(j=0;j

28、4;j+)aij=0;aij=0;使数组中的全部元素赋使数组中的全部元素赋使数组中的全部元素赋使数组中的全部元素赋0 0或:或:或:或:for(i=0;i3;i+)for(i=0;i3;i+)for(j=0;j4;j+)for(j=0;jaij;cinaij;从键盘输入数据给数组元素从键盘输入数据给数组元素从键盘输入数据给数组元素从键盘输入数据给数组元素VisualC+程程序序设设计计基基础础5/12/202418精选课件二维(多维)数组的初始化对二维数组进行初始化的方式有:对二维数组进行初始化的方式有:对二维数组进行初始化的方式有:对二维数组进行初始化的方式有:1 1、分行赋初值、分行赋初值

29、、分行赋初值、分行赋初值例如:例如:例如:例如:inta23=1,3,5,2,4,6;inta23=1,3,5,2,4,6;2 2、按数组在内存中的排列顺序赋初值、按数组在内存中的排列顺序赋初值、按数组在内存中的排列顺序赋初值、按数组在内存中的排列顺序赋初值例如:例如:例如:例如:inta23=1,2,5,2,4,6;inta23=1,2,5,2,4,6;在对二维数组赋初值时在对二维数组赋初值时在对二维数组赋初值时在对二维数组赋初值时(全部数据全部数据全部数据全部数据),可以省略对第一维,可以省略对第一维,可以省略对第一维,可以省略对第一维长度的说明,这时第一维的长度由所赋初值的行数所决定,长

30、度的说明,这时第一维的长度由所赋初值的行数所决定,长度的说明,这时第一维的长度由所赋初值的行数所决定,长度的说明,这时第一维的长度由所赋初值的行数所决定,但第二维不能省略。但第二维不能省略。但第二维不能省略。但第二维不能省略。例如:例如:例如:例如:inta23=1,3,5,2,4,6;inta23=1,3,5,2,4,6;可以表示为:可以表示为:可以表示为:可以表示为:inta3=1,3,5,2,4,6;inta3=1,3,5,2,4,6;和和和和inta3=1,3,5,2,4,6;inta3=1,3,5,2,4,6;3 3、可以对部分元素赋初值、可以对部分元素赋初值、可以对部分元素赋初值、

31、可以对部分元素赋初值例如:例如:例如:例如:inta23=1,2;inta23=1,2;或或或或inta23=1,0,4inta23=1,0,4则未赋初值的其余元素值自动为则未赋初值的其余元素值自动为则未赋初值的其余元素值自动为则未赋初值的其余元素值自动为0 0。VisualC+程程序序设设计计基基础础5/12/202419精选课件二维(多维)数组实例例:要求输出如下的杨辉三角例:要求输出如下的杨辉三角例:要求输出如下的杨辉三角例:要求输出如下的杨辉三角(要求输出要求输出要求输出要求输出1010行行行行)1 111111 1 2121133113311464114641151010511510

32、10511616152015611520156117213535217117213535217118285670562881182856705628811 1 9368412612684369193684126126843691VisualC+程程序序设设计计基基础础5/12/202420精选课件数组和函数数组可以作为函数的参数进行数据传送。数组数组可以作为函数的参数进行数据传送。数组数组可以作为函数的参数进行数据传送。数组数组可以作为函数的参数进行数据传送。数组用作函数参数有两种形式,用作函数参数有两种形式,用作函数参数有两种形式,用作函数参数有两种形式,一种是数组元素作函一种是数组元素作函

33、一种是数组元素作函一种是数组元素作函数参数;数参数;数参数;数参数;另一种是数组名作函数参数。另一种是数组名作函数参数。另一种是数组名作函数参数。另一种是数组名作函数参数。数组元素作函数实参数组元素作函数实参数组元素作函数实参数组元素作函数实参数组元素作为函数实参使用与普通变量作函数数组元素作为函数实参使用与普通变量作函数数组元素作为函数实参使用与普通变量作函数数组元素作为函数实参使用与普通变量作函数参数是完全相同的,在发生函数调用时,参数是完全相同的,在发生函数调用时,参数是完全相同的,在发生函数调用时,参数是完全相同的,在发生函数调用时,把作为把作为把作为把作为实参的数组元素的值传送给形参

34、,实现单向的值实参的数组元素的值传送给形参,实现单向的值实参的数组元素的值传送给形参,实现单向的值实参的数组元素的值传送给形参,实现单向的值传送。传送。传送。传送。VisualC+程程序序设设计计基基础础5/12/202421精选课件数组和函数数组名作为函数参数数组名作为函数参数数组名作为函数参数数组名作为函数参数1 1、数数数数组组组组名名名名作作作作函函函函数数数数参参参参数数数数时时时时,要要要要求求求求形形形形参参参参和和和和实实实实参参参参都都都都必必必必须须须须是是是是类类类类型型型型相相相相同的数组,当形参和实参不一致时,即会发生错误。同的数组,当形参和实参不一致时,即会发生错误

35、。同的数组,当形参和实参不一致时,即会发生错误。同的数组,当形参和实参不一致时,即会发生错误。2 2、数组名作函数参数时,不是进行值的传送,而是地址的数组名作函数参数时,不是进行值的传送,而是地址的数组名作函数参数时,不是进行值的传送,而是地址的数组名作函数参数时,不是进行值的传送,而是地址的传送,传送,传送,传送,也就是说把实参数组的首地址赋予形参数组名。也就是说把实参数组的首地址赋予形参数组名。也就是说把实参数组的首地址赋予形参数组名。也就是说把实参数组的首地址赋予形参数组名。形参数组名取得该首地址之后,也就等于有了实在的数形参数组名取得该首地址之后,也就等于有了实在的数形参数组名取得该首

36、地址之后,也就等于有了实在的数形参数组名取得该首地址之后,也就等于有了实在的数组。实际上是形参数组和实参数组为同一数组,共同拥组。实际上是形参数组和实参数组为同一数组,共同拥组。实际上是形参数组和实参数组为同一数组,共同拥组。实际上是形参数组和实参数组为同一数组,共同拥有一段内存空间。有一段内存空间。有一段内存空间。有一段内存空间。3 3、当用数组名作函数参数时,、当用数组名作函数参数时,、当用数组名作函数参数时,、当用数组名作函数参数时,由于形参和实参为同一数由于形参和实参为同一数由于形参和实参为同一数由于形参和实参为同一数组,组,组,组,因此当形参数组发生变化时,实参数组也随之变因此当形参

37、数组发生变化时,实参数组也随之变因此当形参数组发生变化时,实参数组也随之变因此当形参数组发生变化时,实参数组也随之变化。化。化。化。4 4、在函数形参表中,允许不给出形参数组最高维大小、在函数形参表中,允许不给出形参数组最高维大小、在函数形参表中,允许不给出形参数组最高维大小、在函数形参表中,允许不给出形参数组最高维大小。VisualC+程程序序设设计计基基础础5/12/202422精选课件VisualC+程程序序设设计计基基础础程序中的函数程序中的函数p()用于计算:用于计算:主函数利用函数完成计算主函数利用函数完成计算:intp(inta,intx,intb,inty,intn)inti,

38、s;for(_;in;i+)s+=_;returns;intd=2,3,5,4,9,10,8;intv=7,6,3,2,5,1,8,9,3,4;intw=1,2,3,4,5,6,7,8,9,10;voidmain(void)cout“ns1=“_;cout“ns2=“_;a*xi+b*yii=0,s=0p(1,d,2,v,8)p(3,v,4,w,10)5/12/202423精选课件字 符 数 组字符数组:字符数组:字符数组:字符数组:用于存放字符型数据的数组称为字符数组。用于存放字符型数据的数组称为字符数组。用于存放字符型数据的数组称为字符数组。用于存放字符型数据的数组称为字符数组。它的定义形

39、式和元素的引用方法与一般的数组相同。它的定义形式和元素的引用方法与一般的数组相同。它的定义形式和元素的引用方法与一般的数组相同。它的定义形式和元素的引用方法与一般的数组相同。例如:例如:例如:例如:charch10;charch10;字符数组初始化:字符数组初始化:字符数组初始化:字符数组初始化:1 1、将字符逐个赋给数组中的各元素。、将字符逐个赋给数组中的各元素。、将字符逐个赋给数组中的各元素。、将字符逐个赋给数组中的各元素。如:如:如:如:charc5=c,h,i,n,a;charc5=c,h,i,n,a;或:或:或:或:charc=c,h,i,n,a;charc=c,h,i,n,a;2

40、2、直接用字符串常量给数组赋值。如:、直接用字符串常量给数组赋值。如:、直接用字符串常量给数组赋值。如:、直接用字符串常量给数组赋值。如:charc6=“china”;charc6=“china”;或者或者或者或者 charc=“china”;charc=“china”;此时数组长度为此时数组长度为此时数组长度为此时数组长度为6 6,系统自动在,系统自动在,系统自动在,系统自动在chinachina的末尾加字符串的末尾加字符串的末尾加字符串的末尾加字符串结束标志结束标志结束标志结束标志00。字符串结束标志字符串结束标志字符串结束标志字符串结束标志(00):它占内存,但不计入串的长度。它占内存,

41、但不计入串的长度。它占内存,但不计入串的长度。它占内存,但不计入串的长度。例如:例如:例如:例如:cout“pleaseinput10number:”;coutc;coutc;coutc;注意:用注意:用注意:用注意:用cincin输入时,是以空格或回车作为字符串的结束的输入时,是以空格或回车作为字符串的结束的输入时,是以空格或回车作为字符串的结束的输入时,是以空格或回车作为字符串的结束的对二维对二维对二维对二维(多维多维多维多维)数组的初始化数组的初始化数组的初始化数组的初始化charc215=H,o,w,a,r,e,y,o,u,charc215=H,o,w,a,r,e,y,o,u,I,a,

42、m,a,s;I,a,m,a,s;或或或或charc15=“Howareyou”,”Iamas”;charc15=“Howareyou”,”Iamas”;或或或或charc15=“Howareyou”,”Iamas”;charc15=“Howareyou”,”Iamas”;VisualC+程程序序设设计计基基础础5/12/202425精选课件字符数组的输入输出VisualC+程程序序设设计计基基础础逐逐个个字字符符的的输输入入输输出出。这这种种输输入入输输出出的的方方法法,通通常常是是使使用用循环语句来实现的。如:循环语句来实现的。如:charstr10;cout“输入十个字符:输入十个字符:”

43、;for(inti=0;istri;/A.A行将输入的十个字符依次送给数组行将输入的十个字符依次送给数组str中的各个元素。中的各个元素。定义定义赋值赋值5/12/202426精选课件字符数组的输入输出VisualC+程程序序设设计计基基础础把把字字符符数数组组作作为为字字符符串串输输入入输输出出。对对于于一一维维字字符符数数组组的的输输入入,在在cin中中仅仅给给出出数数组组名名;输输出出时时,在在cout中中也也只只给给出出数数组名。组名。voidmain(void)chars150,s260;couts1;cins2;cout“ns1=“s1;cout“ns2=“s2“n”;输入:输入:

44、abcdstringcin只能输入一个单词,只能输入一个单词,不能输入一行单词。不能输入一行单词。数组名数组名数组名数组名输出到输出到0为止为止5/12/202427精选课件字符数组的输入输出VisualC+程程序序设设计计基基础础当要把输入的一行作为一个字符串送到字符数组中时,则当要把输入的一行作为一个字符串送到字符数组中时,则要使用函数要使用函数cin.getline()。这个函数的第一个参数为字符。这个函数的第一个参数为字符数组名,第二个参数为允许输入的最大字符个数。数组名,第二个参数为允许输入的最大字符个数。cin.getline(数组名数组名,数组空间数数组空间数);chars180

45、;.cin.getline(s1,80);首先开辟空间首先开辟空间5/12/202428精选课件字符数组的输入输出VisualC+程程序序设设计计基基础础voidmain(void)chars381;cout”输入一行字符串输入一行字符串:”;cin.getline(s3,80);cout”s3=”s31字符串字符串字符串字符串2 2,这个值为两个字,这个值为两个字,这个值为两个字,这个值为两个字符串不相同字符的符串不相同字符的符串不相同字符的符串不相同字符的ASCIIASCII码值的差码值的差码值的差码值的差qq 函数值为一负整数:表示字符串函数值为一负整数:表示字符串函数值为一负整数:表示

46、字符串函数值为一负整数:表示字符串11字符串字符串字符串字符串2 2。VisualC+程程序序设设计计基基础础而应为:而应为:if(strcmp(str1,str2)=0)如如果果str1、str2是是两两个个字字符符数数组组名名,而而且且都都赋赋了了值值,则则下下面面的的语语句都是合法的:句都是合法的:strcmp(str1,str2);strcmp(“Japan”,”China”);strcmp(str1,“China”);5/12/202432精选课件字符串处理函数4 4、字符串比较函数、字符串比较函数、字符串比较函数、字符串比较函数strncmpstrncmp格式:格式:格式:格式:s

47、trncmp(strncmp(字符数组名字符数组名字符数组名字符数组名1 1或字符串或字符串或字符串或字符串1,1,字符数组名字符数组名字符数组名字符数组名2 2或字符串或字符串或字符串或字符串2,n)2,n)功功功功能能能能:比比比比较较较较前前前前n n个个个个字字字字符符符符的的的的大大大大小小小小,若若若若字字字字符符符符串串串串长长长长度度度度小小小小于于于于n n,则则则则与与与与strcmpstrcmp函数相同。函数相同。函数相同。函数相同。charc=BASIC“;charc=BASIC“;cc10=“BASICCPP”;cc10=“BASICCPP”;strncmp(cc,c

48、,5);strncmp(cc,c,5);/结果为结果为结果为结果为0 05 5、求字符串长度函数、求字符串长度函数、求字符串长度函数、求字符串长度函数strlenstrlen格式:格式:格式:格式:strlen(strlen(字符数组名或字符串字符数组名或字符串字符数组名或字符串字符数组名或字符串)功功功功能能能能:求求求求出出出出字字字字符符符符数数数数组组组组或或或或字字字字符符符符串串串串的的的的长长长长度度度度并并并并返返返返回回回回其其其其值值值值。此此此此函函函函数数数数测出的长度不包括测出的长度不包括测出的长度不包括测出的长度不包括00字符。字符。字符。字符。例如:例如:例如:例

49、如:charstr10=“china”;charstr10=“china”;coutstrlen(str);coutstrlen(str);结果为结果为结果为结果为5 5VisualC+程程序序设设计计基基础础5/12/202433精选课件字符串处理函数6 6、字符串大小写转换函数、字符串大小写转换函数、字符串大小写转换函数、字符串大小写转换函数 注:注:注:注:lowercaselowercase和和和和uppercaseuppercase大写转换为小写:大写转换为小写:大写转换为小写:大写转换为小写:strlwr(strlwr(字符数组名字符数组名字符数组名字符数组名)小写转换为大写:小写

50、转换为大写:小写转换为大写:小写转换为大写:strupr(strupr(字符数组名字符数组名字符数组名字符数组名)功能:两个函数返回转换后的字符串。功能:两个函数返回转换后的字符串。功能:两个函数返回转换后的字符串。功能:两个函数返回转换后的字符串。例:例:例:例:#include#include#include#includevoidmain()voidmain()chars20;chars20;strcpy(s,THISISATEST);strlwr(s);strcpy(s,THISISATEST);strlwr(s);/strcpy(s,thisisatest);strupr(s);/s

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服