C语言程序设计3第5章数组.ppt

上传人:wuy****n92 文档编号:70103705 上传时间:2023-01-16 格式:PPT 页数:54 大小:238.49KB
返回 下载 相关 举报
C语言程序设计3第5章数组.ppt_第1页
第1页 / 共54页
C语言程序设计3第5章数组.ppt_第2页
第2页 / 共54页
点击查看更多>>
资源描述

《C语言程序设计3第5章数组.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计3第5章数组.ppt(54页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、退出退出第第5章章 数数 组组 按序排列的相同类型数据元素的集合称为数组。按序排列的相同类型数据元素的集合称为数组。按序排列的相同类型数据元素的集合称为数组。按序排列的相同类型数据元素的集合称为数组。数组类型是一种常用的构造型数据类型,它有若干分数组类型是一种常用的构造型数据类型,它有若干分数组类型是一种常用的构造型数据类型,它有若干分数组类型是一种常用的构造型数据类型,它有若干分量。量。量。量。一般把这些分量称为数组元素。在一般把这些分量称为数组元素。在一般把这些分量称为数组元素。在一般把这些分量称为数组元素。在C C语言中,没有提语言中,没有提语言中,没有提语言中,没有提供动态数组的类型,

2、即:定义一个数组之后,就确定了它供动态数组的类型,即:定义一个数组之后,就确定了它供动态数组的类型,即:定义一个数组之后,就确定了它供动态数组的类型,即:定义一个数组之后,就确定了它所容纳的同类元素的个数所容纳的同类元素的个数所容纳的同类元素的个数所容纳的同类元素的个数(即数组大小即数组大小即数组大小即数组大小)。这就构成了数组。这就构成了数组。这就构成了数组。这就构成了数组类型的两个特点:一方面,其大小必须是确定的,不允许类型的两个特点:一方面,其大小必须是确定的,不允许类型的两个特点:一方面,其大小必须是确定的,不允许类型的两个特点:一方面,其大小必须是确定的,不允许随机变动;另一方面,其

3、元素必须是同质的,即类型相同,随机变动;另一方面,其元素必须是同质的,即类型相同,随机变动;另一方面,其元素必须是同质的,即类型相同,随机变动;另一方面,其元素必须是同质的,即类型相同,不允许出现混合类型。不允许出现混合类型。不允许出现混合类型。不允许出现混合类型。数组中各个元素的相对位置数组中各个元素的相对位置数组中各个元素的相对位置数组中各个元素的相对位置(即下标即下标即下标即下标)是确定的,分别是确定的,分别是确定的,分别是确定的,分别“按号就坐按号就坐按号就坐按号就坐”。通过数组名和下标可以惟一的确定数组中。通过数组名和下标可以惟一的确定数组中。通过数组名和下标可以惟一的确定数组中。通

4、过数组名和下标可以惟一的确定数组中的元素,不会发生混乱。的元素,不会发生混乱。的元素,不会发生混乱。的元素,不会发生混乱。5.1 5.1 一维数组的定义和引用一维数组的定义和引用一维数组的定义和引用一维数组的定义和引用5.2 字字 符符 数数 组组5.3 多多 维维 数数 组组5.4 应应 用用 举举 例例5.1 一维数组的定义和引用一维数组的定义和引用5.1.15.1.15.1.15.1.1一维数组的定义一维数组的定义一维数组的定义一维数组的定义 在使用一个数组之前,必须对它加以定义。它的任务是:在使用一个数组之前,必须对它加以定义。它的任务是:在使用一个数组之前,必须对它加以定义。它的任务

5、是:在使用一个数组之前,必须对它加以定义。它的任务是:标识数组的名称;标识数组的名称;标识数组的名称;标识数组的名称;确定数组的大小,即数组中元素的个数;确定数组的大小,即数组中元素的个数;确定数组的大小,即数组中元素的个数;确定数组的大小,即数组中元素的个数;表明数组的基类型,即其元素的类型。表明数组的基类型,即其元素的类型。表明数组的基类型,即其元素的类型。表明数组的基类型,即其元素的类型。一维数组的一般定义形式为:一维数组的一般定义形式为:一维数组的一般定义形式为:一维数组的一般定义形式为:数据类型数据类型数据类型数据类型 数组名数组名数组名数组名 整型常数表达式整型常数表达式整型常数表

6、达式整型常数表达式;例如:例如:例如:例如:int a10 int a10;double value5 double value5;long int array6 long int array6*66;定义数组时应注意:定义数组时应注意:定义数组时应注意:定义数组时应注意:数组名是标识符,它遵循标识符的命名规则。数组名是标识符,它遵循标识符的命名规则。数组名是标识符,它遵循标识符的命名规则。数组名是标识符,它遵循标识符的命名规则。数数数数组组组组名名名名之之之之后后后后是是是是一一一一对对对对方方方方括括括括号号号号,它它它它是是是是数数数数组组组组标标标标志志志志,不不不不能用圆括号。方括号

7、内是整型常量表达式。能用圆括号。方括号内是整型常量表达式。能用圆括号。方括号内是整型常量表达式。能用圆括号。方括号内是整型常量表达式。整整整整型型型型常常常常量量量量表表表表达达达达式式式式是是是是一一一一种种种种其其其其值值值值为为为为正正正正整整整整数数数数的的的的表表表表达达达达式式式式,它表示该数组元素的个数,即数组大小。它表示该数组元素的个数,即数组大小。它表示该数组元素的个数,即数组大小。它表示该数组元素的个数,即数组大小。表表表表示示示示数数数数组组组组大大大大小小小小的的的的整整整整型型型型常常常常量量量量表表表表达达达达式式式式中中中中不不不不能能能能包包包包含含含含变变变变

8、量量量量。例例例例如如如如,不不不不能能能能利利利利用用用用scanf()scanf()函函函函数数数数接接接接收收收收用用用用户户户户输输输输入入入入的的的的数数数数值值值值来随意指定数组的大小。来随意指定数组的大小。来随意指定数组的大小。来随意指定数组的大小。int nint n,errnerrn;scanf(scanf(dd,&n)&n);这是不行的。这是不行的。这是不行的。这是不行的。对对对对定定定定义义义义好好好好的的的的数数数数组组组组,C C编编编编译译译译在在在在内内内内存存存存中中中中为为为为它它它它分分分分配配配配一一一一片片片片连连连连续的空间。续的空间。续的空间。续的空

9、间。基地址是指该数组在内存中的起始地址。基地址是指该数组在内存中的起始地址。基地址是指该数组在内存中的起始地址。基地址是指该数组在内存中的起始地址。5.1.25.1.25.1.25.1.2一维数组元素的引用一维数组元素的引用一维数组元素的引用一维数组元素的引用在在在在C C语言中,引用一维数组元素的一般形式是:语言中,引用一维数组元素的一般形式是:语言中,引用一维数组元素的一般形式是:语言中,引用一维数组元素的一般形式是:数组名数组名数组名数组名 下标下标下标下标 下标可以是整型常量或整型表达式。例如:下标可以是整型常量或整型表达式。例如:下标可以是整型常量或整型表达式。例如:下标可以是整型常

10、量或整型表达式。例如:a0a0a1a1a2a2*22a8a866;在引用数组元素时应注意:在引用数组元素时应注意:在引用数组元素时应注意:在引用数组元素时应注意:在在在在C C语语语语言言言言中中中中,数数数数组组组组元元元元素素素素的的的的下下下下标标标标是是是是从从从从0 0开开开开始始始始计计计计算算算算,而不是从而不是从而不是从而不是从1 1开始。开始。开始。开始。数数数数组组组组元元元元素素素素是是是是变变变变量量量量。一一一一个个个个数数数数组组组组元元元元素素素素可可可可以以以以像像像像同同同同类类类类型型型型的单一变量那样在表达式中执行相应的操作。的单一变量那样在表达式中执行相

11、应的操作。的单一变量那样在表达式中执行相应的操作。的单一变量那样在表达式中执行相应的操作。例例例例5-25-25-25-2:设设设设有有有有一一一一头头头头母母母母牛牛牛牛,它它它它每每每每年年年年年年年年初初初初生生生生一一一一头头头头小小小小母母母母牛牛牛牛。每每每每头头头头小小小小母母母母牛牛牛牛从从从从第第第第四四四四个个个个年年年年头头头头开开开开始始始始,每每每每年年年年年年年年初初初初也也也也生生生生一一一一头头头头小小小小母母母母牛牛牛牛。问问问问在在在在第第第第2020年年年年时时时时,共共共共有有有有多多多多少少少少头头头头牛牛牛牛?分分分分别别别别输输输输出出出出从从从从

12、第第第第1 1年至第年至第年至第年至第2020年每年的牛数。年每年的牛数。年每年的牛数。年每年的牛数。由题意,可得到如下的数据:由题意,可得到如下的数据:由题意,可得到如下的数据:由题意,可得到如下的数据:设设设设UnUn表表表表示示示示第第第第n n年年年年(n n4)4)时时时时牛牛牛牛的的的的头头头头数数数数,由由由由表表表表中中中中数数数数据据据据间间间间的关系可得出下式:的关系可得出下式:的关系可得出下式:的关系可得出下式:U Un nU Un n U Un n3 3 (n n4)4)根根根根据据据据这这这这个个个个式式式式子子子子,建建建建立立立立一一一一个个个个数数数数组组组组n

13、cowncow存存存存放放放放各各各各年年年年牛牛牛牛的的的的头数。头数。头数。头数。程序如下:程序如下:程序如下:程序如下:#include#include void main()void main()int i int i,ncow20ncow2011;ncow1 ncow12 2;ncow2 ncow23 3;ncow3 ncow34 4;for(i for(i4 4;i i2020;i)i)ncowi ncowincowincowi11ncowincowi33;for(i for(i1 1;I I2020;i)i)printf(printf(12d12d,ncowi)ncowi);if

14、(i if(i5 50)0)printf(n)printf(n);5.1.35.1.35.1.35.1.3一维数组的初始化一维数组的初始化一维数组的初始化一维数组的初始化对对对对数数数数组组组组提提提提供供供供初初初初值值值值的的的的方方方方式式式式有有有有两两两两种种种种:分分分分别别别别为为为为各各各各个个个个元元元元素素素素提供初值和对整个数组初始化。提供初值和对整个数组初始化。提供初值和对整个数组初始化。提供初值和对整个数组初始化。对对对对数数数数组组组组元元元元素素素素提提提提供供供供初初初初值值值值的的的的方方方方式式式式可可可可以以以以像像像像对对对对待待待待同同同同类类类类型型

15、型型的的的的简简简简单单单单变变变变量量量量那那那那样样样样,利利利利用用用用赋赋赋赋值值值值语语语语句句句句直直直直接接接接赋赋赋赋值值值值,或或或或者者者者通通通通过过过过调用调用调用调用scanf()scanf()函数,由用户输入各元素的值。例如,函数,由用户输入各元素的值。例如,函数,由用户输入各元素的值。例如,函数,由用户输入各元素的值。例如,int a5int a5;a0a01010;a1a15 5;int iint i,a10a10;for(ifor(i0 0;i i1010;i i)aiai0 0;利利利利用用用用数数数数组组组组初初初初始始始始化化化化方方方方式式式式可可可可

16、以以以以为为为为整整整整个个个个数数数数组组组组提提提提供供供供初初初初值值值值。一维数组初始化的一般形式是:一维数组初始化的一般形式是:一维数组初始化的一般形式是:一维数组初始化的一般形式是:数数数数据据据据类类类类型型型型 数数数数组组组组名名名名 整整整整型型型型常常常常量量量量表表表表达达达达式式式式 初初初初始始始始值值值值;初初初初值值值值表表表表是是是是一一一一些些些些由由由由逗逗逗逗号号号号分分分分隔隔隔隔开开开开的的的的初初初初值值值值符符符符,它它它它是是是是表表表表示示示示初值的常量表达式。初值的常量表达式。初值的常量表达式。初值的常量表达式。int a10 int a1

17、0 0 0,1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,99;各各各各个个个个初初初初值值值值括括括括在在在在一一一一对对对对花花花花括括括括号号号号中中中中,从从从从左左左左到到到到右右右右依依依依次次次次赋赋赋赋给给给给数组的各个元素。数组的各个元素。数组的各个元素。数组的各个元素。例例例例5-35-35-35-3:求求求求下下下下列列列列数数数数的的的的总总总总和和和和及及及及平平平平均均均均值值值值:9595,8686,9090,9292,8989,7575,8888,9696,9191,9393。#include#include void main()void m

18、ain()static int array10 static int array10 95 95,8686,9090,9292,8989,7575,8888,9696,9191,9393;int i int i,sumsum;i i0 0;sum sum0 0;while(i while(i10)10)sum sum arrayiarrayi;printf(The sum printf(The sum dndn,sum)sum);printf(The average printf(The average .1fn.1fn,(double)sum/10)(double)sum/10);对一维数组

19、初始化时应注意以下几点:对一维数组初始化时应注意以下几点:对一维数组初始化时应注意以下几点:对一维数组初始化时应注意以下几点:在在在在经经经经典典典典C C语语语语言言言言中中中中规规规规定定定定,只只只只有有有有静静静静态态态态(static)(static)数数数数组组组组和和和和外外外外部部部部(extern)(extern)数数数数组组组组才才才才能能能能初初初初始始始始化化化化。但但但但在在在在ANSI ANSI C C和和和和标标标标准准准准C C中中中中取取取取消消消消了了了了这这这这一一一一限限限限制制制制。就就就就是是是是说说说说,对对对对自自自自动动动动数数数数组组组组也也

20、也也可可可可以以以以初初初初始始始始化。化。化。化。外部数组和静态数组的初始化工作是在编译时外部数组和静态数组的初始化工作是在编译时外部数组和静态数组的初始化工作是在编译时外部数组和静态数组的初始化工作是在编译时进行,因此,只进行一次;而自动数组的初始化工作进行,因此,只进行一次;而自动数组的初始化工作进行,因此,只进行一次;而自动数组的初始化工作进行,因此,只进行一次;而自动数组的初始化工作是在程序执行时进行,从而可进行多次。是在程序执行时进行,从而可进行多次。是在程序执行时进行,从而可进行多次。是在程序执行时进行,从而可进行多次。对对对对数数数数组组组组初初初初始始始始化化化化时时时时,初

21、初初初值值值值符符符符的的的的个个个个数数数数不不不不能能能能多多多多于于于于数数数数组组组组元元元元素素素素的的的的个个个个数数数数,但但但但允允允允许许许许初初初初值值值值符符符符的的的的个个个个数数数数少少少少于于于于数数数数组组组组元元元元素素素素的的的的个个个个数数数数。当当当当初初初初值值值值符符符符个个个个数数数数少少少少于于于于数数数数组组组组元元元元素素素素个个个个数数数数时时时时,出出出出现现现现在在在在初初初初值值值值表表表表中中中中的的的的初初初初值值值值就就就就对对对对前前前前面面面面的的的的若若若若干干干干个个个个数数数数组组组组元元元元素素素素依依依依次次次次赋赋

22、赋赋值值值值,而而而而其余的数组元素隐含用其余的数组元素隐含用其余的数组元素隐含用其余的数组元素隐含用0 0赋初值。赋初值。赋初值。赋初值。int a10 int a10 1 1,2 2,3 3,4 4,55;若若若若没没没没有有有有对对对对静静静静态态态态和和和和外外外外部部部部数数数数组组组组显显显显式式式式地地地地进进进进行行行行初初初初始始始始化化化化,则则则则系系系系统统统统会会会会对对对对它它它它们们们们自自自自动动动动进进进进行行行行初初初初始始始始化化化化,即即即即所所所所有有有有数数数数组组组组元元元元素素素素都都都都赋赋赋赋予予予予0 0。static int num10s

23、tatic int num10;例例例例5-55-55-55-5:用用用用数数数数组组组组处处处处理理理理例例例例4-144-14的的的的FibonacciFibonacci数数数数列列列列问问问问题题题题。为为为为了了了了简简简简化化化化程程程程序序序序,这这这这里里里里只只只只求求求求前前前前3030项项项项。利利利利用用用用数数数数组组组组fibfib保保保保存存存存该该该该数列各个项。数列各个项。数列各个项。数列各个项。/*Fibonacci array Fibonacci array*/#include#include void main()void main()int i int

24、i;long int fib30 long int fib3011,11;for(i for(i2 2;i i3030;i i)fibi fibifibifibi11fibifibi22;for(i for(i0 0;i i3030;i i)if(i if(i5 50)0)printf(n)printf(n);printf(printf(12ld12ld,fibi)fibi);如如如如果果果果一一一一维维维维数数数数组组组组在在在在定定定定义义义义时时时时带带带带有有有有初初初初始始始始化化化化项项项项,那那那那么么么么,数数数数组组组组的的的的大大大大小小小小可可可可以以以以省省省省略略略略

25、。在在在在编编编编译译译译时时时时系系系系统统统统会会会会根根根根据据据据初初初初值值值值表表表表中中中中初值符的个数计算数组中元素的个数。初值符的个数计算数组中元素的个数。初值符的个数计算数组中元素的个数。初值符的个数计算数组中元素的个数。int a int a 1 1,2 2,3 3,4 4,55;这种形式就等同于:这种形式就等同于:这种形式就等同于:这种形式就等同于:int a5 int a5 1 1,2 2,3 3,4 4,55;如如如如果果果果初初初初值值值值符符符符的的的的类类类类型型型型与与与与数数数数组组组组元元元元素素素素的的的的类类类类型型型型不不不不一一一一致致致致,则把

26、初值符类型转换为数组元素的类型。则把初值符类型转换为数组元素的类型。则把初值符类型转换为数组元素的类型。则把初值符类型转换为数组元素的类型。5.2 字字 符符 数数 组组通常使用的字符数组是一维数组通常使用的字符数组是一维数组通常使用的字符数组是一维数组通常使用的字符数组是一维数组(当然,字符数组当然,字符数组当然,字符数组当然,字符数组也可以是多维数组也可以是多维数组也可以是多维数组也可以是多维数组),其元素的类型是字符量。一个字,其元素的类型是字符量。一个字,其元素的类型是字符量。一个字,其元素的类型是字符量。一个字符数组元素中存放一个字符。符数组元素中存放一个字符。符数组元素中存放一个字

27、符。符数组元素中存放一个字符。5.2.15.2.15.2.15.2.1字符数组的定义和引用字符数组的定义和引用字符数组的定义和引用字符数组的定义和引用字符数组的一般定义形式是:字符数组的一般定义形式是:字符数组的一般定义形式是:字符数组的一般定义形式是:char char 数组名数组名数组名数组名 整型常量表达式整型常量表达式整型常量表达式整型常量表达式;由整型常量表达式的值决定数组的大小。由整型常量表达式的值决定数组的大小。由整型常量表达式的值决定数组的大小。由整型常量表达式的值决定数组的大小。char name15char name15;字字字字符符符符数数数数组组组组占占占占用用用用一一

28、一一片片片片连连连连续续续续的的的的空空空空间间间间,如如如如图图图图5-35-3所所所所示示示示。每每每每一一一一个个个个元元元元素素素素占占占占用用用用的的的的单单单单元元元元应应应应足足足足以以以以存存存存放放放放一一一一个个个个字字字字符符符符量量量量,通通通通常常常常是是是是一个字节。一个字节。一个字节。一个字节。5.2.25.2.25.2.25.2.2字符数组的初始化字符数组的初始化字符数组的初始化字符数组的初始化对字符数组赋初值的方式有以下几种:对字符数组赋初值的方式有以下几种:对字符数组赋初值的方式有以下几种:对字符数组赋初值的方式有以下几种:利用赋值语句对数组元素赋初值。例如

29、:利用赋值语句对数组元素赋初值。例如:利用赋值语句对数组元素赋初值。例如:利用赋值语句对数组元素赋初值。例如:char name15 char name15;name0 name0 M M;name1 name1 e e;name2 name2 n n;name3 name3 g g;name4 name4 0 0;利用库函数利用库函数利用库函数利用库函数(如如如如scanf()scanf(),由用户为字符数组输,由用户为字符数组输,由用户为字符数组输,由用户为字符数组输入初值。例如:入初值。例如:入初值。例如:入初值。例如:char city15char city15;scanf(scanf

30、(ss,city)city);用用用用字字字字符符符符常常常常量量量量作作作作为为为为初初初初值值值值符符符符,对对对对字字字字符符符符数数数数组组组组进进进进行行行行初初初初始始始始化。化。化。化。char char s11 s11 pp,rr,oo,gg,rr,aa,mm,mm,i i,nn,gg;用字符串直接对字符数组初始化。用字符串直接对字符数组初始化。用字符串直接对字符数组初始化。用字符串直接对字符数组初始化。static char c15 static char c15 Beijing Beijing;但但但但应应应应注注注注意意意意,字字字字符符符符串串串串是是是是以以以以空空空

31、空字字字字符符符符00作作作作为为为为结结结结束束束束标标标标志志志志,下述两种初始化方式就有差别:下述两种初始化方式就有差别:下述两种初始化方式就有差别:下述两种初始化方式就有差别:static static char char b1 b1 CC,hh,ii,nn,a a ;static char b2 static char b2 China China;如如如如果果果果指指指指定定定定的的的的字字字字符符符符数数数数组组组组的的的的大大大大小小小小恰恰恰恰好好好好等等等等于于于于字字字字符符符符串串串串直直直直接接接接量量量量中中中中显显显显式式式式出出出出现现现现的的的的字字字字符符符

32、符个个个个数数数数,那那那那么么么么字字字字符符符符串串串串结结结结束束束束标标标标志志志志00就不被放入字符数组中。就不被放入字符数组中。就不被放入字符数组中。就不被放入字符数组中。char t char t abc abc,s3 s3 abc abc;它们等同于:它们等同于:它们等同于:它们等同于:char char t t aa,bb,cc,00,s s aa,bb,cc;例例例例5-95-95-95-9:对对对对字字字字符符符符数数数数组组组组初初初初始始始始化化化化,然然然然后后后后打打打打印印印印出出出出各各各各个个个个元元元元素素素素的字符和相应的的字符和相应的的字符和相应的的字

33、符和相应的ASCIIASCII编码值。编码值。编码值。编码值。#include#include void main()void main()int i int i;static char c12 static char c12In ChinaIn China;for(i for(i0 0;I I1212;i i)printf(printf(c cd d*,cici,ci)ci);printf(n printf(nsnsn,c)c);程序运行结果为:程序运行结果为:程序运行结果为:程序运行结果为:I I7373*n n110110*3232*C C6767*h h104104*i i105105

34、*n n110110*a a9797*0 0*0 0*0 0*0 0*In ChinaIn China对字符数组初始化时,应该注意以下几点:对字符数组初始化时,应该注意以下几点:对字符数组初始化时,应该注意以下几点:对字符数组初始化时,应该注意以下几点:在在在在经经经经典典典典C C中中中中规规规规定定定定,只只只只有有有有外外外外部部部部数数数数组组组组和和和和静静静静态态态态数数数数组组组组才才才才能能能能初初初初始始始始化化化化,但但但但在在在在ANSI ANSI C C和和和和标标标标准准准准C C中中中中都都都都取取取取消消消消了了了了这这这这一一一一限限限限制制制制,即,自动类字符

35、数组也可以初始化。即,自动类字符数组也可以初始化。即,自动类字符数组也可以初始化。即,自动类字符数组也可以初始化。对对对对外外外外部部部部数数数数组组组组和和和和静静静静态态态态数数数数组组组组的的的的初初初初始始始始化化化化是是是是在在在在编编编编译译译译时时时时进进进进行行行行,只只只只做做做做一一一一次次次次;对对对对自自自自动动动动数数数数组组组组的的的的初初初初始始始始化化化化是是是是在在在在执执执执行行行行时时时时进进进进行行行行,因因因因而而而而,在在在在程程程程序序序序运运运运行行行行过过过过程程程程中中中中,可可可可对对对对自自自自动动动动数数数数组组组组多多多多次次次次进进

36、进进行行行行初初初初始始始始化。化。化。化。对字符数组初始化时,初值表中提供的初值个对字符数组初始化时,初值表中提供的初值个对字符数组初始化时,初值表中提供的初值个对字符数组初始化时,初值表中提供的初值个数数数数(即在一对花括号中的字符个数即在一对花括号中的字符个数即在一对花括号中的字符个数即在一对花括号中的字符个数)不能大于给定数组不能大于给定数组不能大于给定数组不能大于给定数组的长度。的长度。的长度。的长度。初值符的个数可以小于数组的长度。在这种情况初值符的个数可以小于数组的长度。在这种情况初值符的个数可以小于数组的长度。在这种情况初值符的个数可以小于数组的长度。在这种情况下,只将提供的字

37、符依次赋给字符数组中前面的相应下,只将提供的字符依次赋给字符数组中前面的相应下,只将提供的字符依次赋给字符数组中前面的相应下,只将提供的字符依次赋给字符数组中前面的相应元素,而其余的元素自动补元素,而其余的元素自动补元素,而其余的元素自动补元素,而其余的元素自动补0(0(即空字符即空字符即空字符即空字符00的值的值的值的值)。如果想用提供的初值符个数来确定数组大小,如果想用提供的初值符个数来确定数组大小,如果想用提供的初值符个数来确定数组大小,如果想用提供的初值符个数来确定数组大小,那么在定义时可以省略数组大小。那么在定义时可以省略数组大小。那么在定义时可以省略数组大小。那么在定义时可以省略数

38、组大小。5.3 多多 维维 数数 组组在在在在C C语言中,数组的元素还可以是数组,这样就构语言中,数组的元素还可以是数组,这样就构语言中,数组的元素还可以是数组,这样就构语言中,数组的元素还可以是数组,这样就构成多维数组。所以,二维数组可以看成是成多维数组。所以,二维数组可以看成是成多维数组。所以,二维数组可以看成是成多维数组。所以,二维数组可以看成是“数组的数数组的数数组的数数组的数组组组组”。5.3.15.3.15.3.15.3.1二维数组的定义二维数组的定义二维数组的定义二维数组的定义二维数组的一般定义形式是:二维数组的一般定义形式是:二维数组的一般定义形式是:二维数组的一般定义形式是

39、:数数数数据据据据类类类类型型型型 数数数数组组组组名名名名 整整整整型型型型常常常常量量量量表表表表达达达达式式式式 整整整整型型型型常常常常量量量量表表表表达式达式达式达式 int a510 int a510;double matrix32double matrix32*3 311;按按按按照照照照多多多多维维维维数数数数组组组组的的的的定定定定义义义义,二二二二维维维维数数数数组组组组其其其其实实实实是是是是一一一一个个个个“数数数数组组组组 的的的的 数数数数 组组组组”。上上上上 面面面面 数数数数 组组组组 a a的的的的 元元元元 素素素素 a08a08,a34a34,a40a4

40、0等等等等是是是是整整整整型型型型量量量量,而而而而a0a0,a1a1,a4a4的的的的基基基基本本本本类类类类型却是型却是型却是型却是“数组数组数组数组”。二维数组在书写形式上采用方括号成对并列出现。二维数组在书写形式上采用方括号成对并列出现。二维数组在书写形式上采用方括号成对并列出现。二维数组在书写形式上采用方括号成对并列出现。int a510int a510;下述形式是不正确的:下述形式是不正确的:下述形式是不正确的:下述形式是不正确的:int a 5 int a 5,1010;int a(5 int a(5,10)10);int a 5 int a 5,10 10;int a 5 in

41、t a 5 10 10;(两对方括号中间有空格两对方括号中间有空格两对方括号中间有空格两对方括号中间有空格)int a(5)(10)int a(5)(10);(应该使用方括号应该使用方括号应该使用方括号应该使用方括号)5.3.25.3.25.3.25.3.2二维数组的内部表示二维数组的内部表示二维数组的内部表示二维数组的内部表示C C语语语语言言言言中中中中,二二二二维维维维数数数数组组组组的的的的元元元元素素素素是是是是“先先先先按按按按行行行行、再再再再按按按按列列列列”排列的。排列的。排列的。排列的。int ab4 5 int ab4 5;5.3.35.3.35.3.35.3.3多维数组

42、的定义多维数组的定义多维数组的定义多维数组的定义多维数组的一般定义形式为:多维数组的一般定义形式为:多维数组的一般定义形式为:多维数组的一般定义形式为:数数数数据据据据类类类类型型型型 数数数数组组组组名名名名 整整整整型型型型常常常常量量量量表表表表达达达达式式式式 整整整整型型型型常常常常量量量量表表表表达式达式达式达式整型常量表达式整型常量表达式整型常量表达式整型常量表达式;例如,描述空间矩阵需用三维数组:例如,描述空间矩阵需用三维数组:例如,描述空间矩阵需用三维数组:例如,描述空间矩阵需用三维数组:double space355double space355;5.3.45.3.45.3

43、.45.3.4二维数组引用二维数组引用二维数组引用二维数组引用二维数组元素的表达形式是:二维数组元素的表达形式是:二维数组元素的表达形式是:二维数组元素的表达形式是:数组名数组名数组名数组名 下标表达式下标表达式下标表达式下标表达式 下标表达式下标表达式下标表达式下标表达式;其其其其中中中中,下下下下标标标标表表表表达达达达式式式式的的的的值值值值必必必必须须须须是是是是整整整整数数数数。ab00ab00是是是是数数数数组组组组abab的第的第的第的第0 0行第行第行第行第0 0列元素。列元素。列元素。列元素。在引用数组元素时应注意:在引用数组元素时应注意:在引用数组元素时应注意:在引用数组元

44、素时应注意:二二二二维维维维数数数数组组组组的的的的行行行行下下下下标标标标和和和和列列列列下下下下标标标标的的的的值值值值都都都都是是是是从从从从0 0开开开开始始始始的的的的。就就就就一一一一般般般般情情情情况况况况而而而而言言言言,如如如如果果果果二二二二维维维维数数数数组组组组定定定定义义义义时时时时行行行行的的的的长长长长度度度度为为为为MM,列列列列的的的的长长长长度度度度为为为为N N,那那那那么么么么,合合合合法法法法的的的的数数数数组组组组行行行行下下下下标标标标值值值值是是是是0 0MM1 1,列下标值是,列下标值是,列下标值是,列下标值是0 0N N1 1。二二二二维维维

45、维数数数数组组组组元元元元素素素素可可可可像像像像同同同同类类类类型型型型的的的的简简简简单单单单变变变变量量量量那那那那样样样样在在在在表表表表达式中使用,但应注意:行下标、列下标都应齐备。达式中使用,但应注意:行下标、列下标都应齐备。达式中使用,但应注意:行下标、列下标都应齐备。达式中使用,但应注意:行下标、列下标都应齐备。例例例例5-105-105-105-10:写写写写一一一一个个个个程程程程序序序序,计计计计算算算算两两两两个个个个矩矩矩矩阵阵阵阵相相相相乘乘乘乘得得得得到到到到的的的的第三个矩阵,并打印计算结果。第三个矩阵,并打印计算结果。第三个矩阵,并打印计算结果。第三个矩阵,并

46、打印计算结果。程序如下:程序如下:程序如下:程序如下:#include#include void main()void main()int i int i,j j,k k;int a43 int a43,b35b35,c45c45;printf(Input elements of matrix A.n)printf(Input elements of matrix A.n);for(i for(i0 0;i i4 4;i i)for(j for(j0 0;j j3 3;j j)scanf(scanf(dd,&aij)&aij);printf(Input elements of matrix B

47、.n)printf(Input elements of matrix B.n);for(j for(j0 0;j j3 3;j j)for(k for(k0 0;k k5 5;k k)scanf(scanf(dd,&bjk)&bjk);printf(Matrix C is as below printf(Matrix C is as below:n)n);for(i for(i0 0;i i4 4;i i)for(k for(k0 0;k k5 5;k k)cik cik0 0;for(j for(j0 0;j j3 3;j j)cik cik aij aij*bjkbjk;printf(pr

48、intf(6d6d,cik)cik);printf(n)printf(n);5.3.55.3.55.3.55.3.5二维数组的初始化二维数组的初始化二维数组的初始化二维数组的初始化对二维数组初始化的形式有两种:对二维数组初始化的形式有两种:对二维数组初始化的形式有两种:对二维数组初始化的形式有两种:与一维数组初始化的形式相同,即:由一对花与一维数组初始化的形式相同,即:由一对花与一维数组初始化的形式相同,即:由一对花与一维数组初始化的形式相同,即:由一对花括号把所有初值都括起来,其中的初值依次赋予二维括号把所有初值都括起来,其中的初值依次赋予二维括号把所有初值都括起来,其中的初值依次赋予二维括

49、号把所有初值都括起来,其中的初值依次赋予二维数组的各个元素。例如:数组的各个元素。例如:数组的各个元素。例如:数组的各个元素。例如:int matrix55 int matrix55 00,0 0,0 0,0 0,0 0,1 1,1 1,1 1,1 1,1 1,2 2,2 2,2 2,2 2,2 2,3 3,3 3,3 3,3 3,3 3,4 4,4 4,4 4,4 4,44;可可可可用用用用花花花花括括括括号号号号把把把把同同同同一一一一行行行行元元元元素素素素的的的的初初初初值值值值括括括括起起起起来来来来,得得得得到到到到如下常用的形式:如下常用的形式:如下常用的形式:如下常用的形式:i

50、nt matrix55 int matrix55 0 0,0 0,0 0,0 0,00,1 1,1 1,1 1,1 1,11,2 2,2 2,2 2,2 2,22,3 3,3 3,3 3,3 3,33,4 4,4 4,4 4,4 4,44 ;对二维数组初始化时,还应注意以下几点:对二维数组初始化时,还应注意以下几点:对二维数组初始化时,还应注意以下几点:对二维数组初始化时,还应注意以下几点:在在在在 ANSI ANSI C C和和和和标标标标准准准准C C中中中中规规规规定定定定,对对对对外外外外部部部部、静静静静态态态态以以以以及及及及自自自自动动动动的的的的二二二二维维维维数数数数组组组组

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

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com