第4章数组、枚举和结构

上传人:m**** 文档编号:579633707 上传时间:2024-08-27 格式:PPT 页数:32 大小:418.54KB
返回 下载 相关 举报
第4章数组、枚举和结构_第1页
第1页 / 共32页
第4章数组、枚举和结构_第2页
第2页 / 共32页
第4章数组、枚举和结构_第3页
第3页 / 共32页
第4章数组、枚举和结构_第4页
第4页 / 共32页
第4章数组、枚举和结构_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《第4章数组、枚举和结构》由会员分享,可在线阅读,更多相关《第4章数组、枚举和结构(32页珍藏版)》请在金锄头文库上搜索。

1、第第4 4章章 数组、枚举和结构数组、枚举和结构本章要点本章要点本章要点本章要点通过本章的学习,使读者:通过本章的学习,使读者:通过本章的学习,使读者:通过本章的学习,使读者: 掌握一维数组的定义、初始化和使用掌握一维数组的定义、初始化和使用掌握一维数组的定义、初始化和使用掌握一维数组的定义、初始化和使用 掌握二维数组的定义、初始化和使用掌握二维数组的定义、初始化和使用掌握二维数组的定义、初始化和使用掌握二维数组的定义、初始化和使用 熟悉熟悉熟悉熟悉用用用用foreachforeach语句遍历数组元素语句遍历数组元素语句遍历数组元素语句遍历数组元素 理解结构类型的含义,掌握结构类型变量的定义和

2、使用理解结构类型的含义,掌握结构类型变量的定义和使用理解结构类型的含义,掌握结构类型变量的定义和使用理解结构类型的含义,掌握结构类型变量的定义和使用 理解枚举类型的含义,掌握枚举类型变量的定义和使用理解枚举类型的含义,掌握枚举类型变量的定义和使用理解枚举类型的含义,掌握枚举类型变量的定义和使用理解枚举类型的含义,掌握枚举类型变量的定义和使用 4.1 数组的定义数组的定义 4.1.1 一维数组一维数组1. 1. 1. 1. 一维数组的声明一维数组的声明一维数组的声明一维数组的声明语法形式如下:语法形式如下:语法形式如下:语法形式如下: 类型标识符类型标识符类型标识符类型标识符 数组名数组名数组名

3、数组名; ; 例如:例如:例如:例如:intint a1; /a1 a1; /a1是一个含有是一个含有是一个含有是一个含有intint类型数据的数组类型数据的数组类型数据的数组类型数据的数组float f1; /f1float f1; /f1是一个含有是一个含有是一个含有是一个含有floatfloat类型数据的数组类型数据的数组类型数据的数组类型数据的数组string s1; /s1string s1; /s1是一个含有是一个含有是一个含有是一个含有stringstring类型数据的数组类型数据的数组类型数据的数组类型数据的数组 2. 2. 2. 2. 创建数组对象(创建数组对象(创建数组对象

4、(创建数组对象(2 2 2 2种基本形式)种基本形式)种基本形式)种基本形式) 声明数组和创建数组分别进行声明数组和创建数组分别进行声明数组和创建数组分别进行声明数组和创建数组分别进行 类型标识符类型标识符类型标识符类型标识符 数组名数组名数组名数组名; /; /数组声明数组声明数组声明数组声明 数组名数组名数组名数组名= = new new 类型标识符类型标识符类型标识符类型标识符 size; /size; /创建数组实例创建数组实例创建数组实例创建数组实例 声明数组和创建数组实例可以合在一起写:声明数组和创建数组实例可以合在一起写:声明数组和创建数组实例可以合在一起写:声明数组和创建数组实

5、例可以合在一起写: 类型标识符类型标识符类型标识符类型标识符 数组名数组名数组名数组名= = newnew类型标识符类型标识符类型标识符类型标识符 size; size; 例如:例如:例如:例如:intintintint a1; a1; a1; a1;a1 = new a1 = new a1 = new a1 = new intintintint 10; /a1 10; /a1 10; /a1 10; /a1是一个含有是一个含有是一个含有是一个含有10101010个个个个intintintint类型元素的数组类型元素的数组类型元素的数组类型元素的数组string s1 = new string

6、 5;/s1string s1 = new string 5;/s1string s1 = new string 5;/s1string s1 = new string 5;/s1是一个含有是一个含有是一个含有是一个含有5 5 5 5个个个个stringstringstringstring类类类类 / / / /型元素的数组型元素的数组型元素的数组型元素的数组 4.1 数组的定义数组的定义4.1.2 4.1.2 二维数组二维数组 1. 1. 1. 1. 二维数组声明的语法形式二维数组声明的语法形式二维数组声明的语法形式二维数组声明的语法形式 类型标识符类型标识符类型标识符类型标识符 , , ,

7、 , 数组名数组名数组名数组名; ; ; ; 例如:例如:例如:例如:intint , score; /score , score; /score是一个是一个是一个是一个intint类型的二维数组类型的二维数组类型的二维数组类型的二维数组float , table; /tablefloat , table; /table是一个是一个是一个是一个floatfloat类型的二维数组类型的二维数组类型的二维数组类型的二维数组2. 2. 2. 2. 创建数组对象(创建数组对象(创建数组对象(创建数组对象(2 2 2 2种基本形式)种基本形式)种基本形式)种基本形式) 声明数组和创建数组分别进行声明数组

8、和创建数组分别进行声明数组和创建数组分别进行声明数组和创建数组分别进行类型标识符类型标识符类型标识符类型标识符 , , , , 数组名数组名数组名数组名; /; /; /; /数组声明数组声明数组声明数组声明 数组名数组名数组名数组名 = = = = new new new new 类型标识符类型标识符类型标识符类型标识符 size1,szie2; size1,szie2; size1,szie2; size1,szie2; 其中:其中:其中:其中:size1,szie2size1,szie2size1,szie2size1,szie2分别表明多维数组每一维的元素个数分别表明多维数组每一维的元

9、素个数分别表明多维数组每一维的元素个数分别表明多维数组每一维的元素个数 声明数组和创建数组实例可一合在一起写声明数组和创建数组实例可一合在一起写声明数组和创建数组实例可一合在一起写声明数组和创建数组实例可一合在一起写类型标识符类型标识符类型标识符类型标识符 , 数组名数组名数组名数组名= = = =new new new new 类型标识符类型标识符类型标识符类型标识符 size1,szie2;size1,szie2;size1,szie2;size1,szie2; 例如:例如:例如:例如:intintintint , score; , score; , score; , score;scor

10、e = new score = new score = new score = new intintintint 3,4; / 3,4; / 3,4; / 3,4; /scorescore是一个是一个是一个是一个3 3行行行行4 4列的二维数组列的二维数组列的二维数组列的二维数组float , table=new float2,3;/tablefloat , table=new float2,3;/tablefloat , table=new float2,3;/tablefloat , table=new float2,3;/table是二维数是二维数是二维数是二维数 / / / /组,每维

11、分别是组,每维分别是组,每维分别是组,每维分别是2,32,34.2.1 4.2.1 4.2.1 4.2.1 一维数组初始化一维数组初始化一维数组初始化一维数组初始化 语法形式语法形式语法形式语法形式1:1:1:1: 类型标识符类型标识符类型标识符类型标识符 数组名数组名数组名数组名= = = =new new new new 类型标识符类型标识符类型标识符类型标识符 sizesizesizesize元素元素元素元素1,1,1,1,元素元素元素元素2,2,2,2,元元元元素素素素n; n; n; n; 语法形式语法形式语法形式语法形式2 2 2 2: 类类类类型型型型标标标标识识识识符符符符 数

12、数数数组组组组名名名名 = = = =new new new new 类类类类型型型型标标标标识识识识符符符符 元元元元素素素素1, 1, 1, 1, 元元元元素素素素2, 2, 2, 2, 元素元素元素元素n;n;n;n;语法形式语法形式语法形式语法形式3 3 3 3: 类型标识符类型标识符类型标识符类型标识符 数组名数组名数组名数组名 = = = = 元素元素元素元素1, 1, 1, 1, 元素元素元素元素2, 2, 2, 2, 元素元素元素元素n;n;n;n;语法形式语法形式语法形式语法形式4 4 4 4: 类型标识符类型标识符类型标识符类型标识符 数组名;数组名;数组名;数组名; 数组

13、名数组名数组名数组名 = = = = new new new new 类型标识符类型标识符类型标识符类型标识符 size size size size 元素元素元素元素1, 1, 1, 1, 元素元素元素元素2, 2, 2, 2, 元素元素元素元素n;n;n;n;4.2 数组的初始化数组的初始化 例如:以下数组初始化实例都是等同的。例如:以下数组初始化实例都是等同的。例如:以下数组初始化实例都是等同的。例如:以下数组初始化实例都是等同的。intintintint numsnumsnumsnums = new = new = new = new intintintint 100,1,2,3,4,

14、5,6,7,8,9; 100,1,2,3,4,5,6,7,8,9; 100,1,2,3,4,5,6,7,8,9; 100,1,2,3,4,5,6,7,8,9;intintintint numsnumsnumsnums = new = new = new = new intintintint 0,1,2,3,4,5,6,7,8,9; 0,1,2,3,4,5,6,7,8,9; 0,1,2,3,4,5,6,7,8,9; 0,1,2,3,4,5,6,7,8,9;intintintint numsnumsnumsnums = 0,1,2,3,4,5,6,7,8,9 = 0,1,2,3,4,5,6,7,8

15、,9 = 0,1,2,3,4,5,6,7,8,9 = 0,1,2,3,4,5,6,7,8,9intintintint numsnumsnumsnums;numsnumsnumsnums = new = new = new = new intintintint 100,1,2,3,4,5,6,7,8,9; 100,1,2,3,4,5,6,7,8,9; 100,1,2,3,4,5,6,7,8,9; 100,1,2,3,4,5,6,7,8,9; 4.2.2 4.2.2 4.2.2 4.2.2 二维数组初始化二维数组初始化二维数组初始化二维数组初始化 语法形式语法形式语法形式语法形式1 1 1 1:类

16、类类类 型型型型 标标标标 识识识识 符符符符 , , , , 数数数数 组组组组 名名名名 = = = = new new new new 类类类类 型型型型 标标标标 识识识识 符符符符 size1,size2size1,size2size1,size2size1,size2val11,val12,val1n,val11,val12,val1n,val11,val12,val1n,val11,val12,val1n,val21,val22,val2nval21,val22,val2nval21,val22,val2nval21,val22,val2n;语法形式语法形式语法形式语法形式2 2

17、 2 2:类型标识符类型标识符类型标识符类型标识符 数组名数组名数组名数组名 = = = = new new new new 类型标识符类型标识符类型标识符类型标识符 , , , , val11,val12,val1n,val11,val12,val1n,val11,val12,val1n,val11,val12,val1n,val21,val22,val2nval21,val22,val2nval21,val22,val2nval21,val22,val2n; 4.2 数组的初始化数组的初始化 例如:以下数组初始化实例都是等同的。例如:以下数组初始化实例都是等同的。例如:以下数组初始化实例都

18、是等同的。例如:以下数组初始化实例都是等同的。intint , a = new , a = new intint 3, 4 1,2,3,4, 5,6,7,8, 9,10,11,12 ; 3, 4 1,2,3,4, 5,6,7,8, 9,10,11,12 ;intint , a = new , a = new intint , 1,2,3,4, 5,6,7,8, 9,10,11,12 ; , 1,2,3,4, 5,6,7,8, 9,10,11,12 ;intint , a = 1,2,3,4, 5,6,7,8, 9,10,11,12 ; , a = 1,2,3,4, 5,6,7,8, 9,10,

19、11,12 ;intint a; a;a= new a= new intint 3,4 1,2,3,4, 5,6,7,8, 9,10,11,12 ; 3,4 1,2,3,4, 5,6,7,8, 9,10,11,12 ; 4.3 数组元素的访问数组元素的访问 4.3.14.3.1一维数组的引用一维数组的引用 一维数组的引用语法形式一维数组的引用语法形式一维数组的引用语法形式一维数组的引用语法形式: : 数组名数组名数组名数组名 下标下标下标下标 下标下标下标下标 - -数组元素的索引值,实际上就是数组元素的索引值,实际上就是数组元素的索引值,实际上就是数组元素的索引值,实际上就是要访问的那个数组

20、元素在内存中的相对位移,要访问的那个数组元素在内存中的相对位移,要访问的那个数组元素在内存中的相对位移,要访问的那个数组元素在内存中的相对位移,记住相对位移是从记住相对位移是从记住相对位移是从记住相对位移是从0 0开始,所以下标的数值开始,所以下标的数值开始,所以下标的数值开始,所以下标的数值从从从从0 0到数组元素的个数到数组元素的个数到数组元素的个数到数组元素的个数-1-1为止。为止。为止。为止。 【例例例例4-14-14-14-1】定定定定义义义义一一一一个个个个数数数数组组组组,存存存存放放放放一一一一组组组组数数数数据据据据,找找找找出出出出这这这这组组组组数数数数中中中中最最最最大

21、大大大数数数数和最小数。和最小数。和最小数。和最小数。static void Main(string static void Main(string static void Main(string static void Main(string argsargsargsargs) ) ) ) intintintint max,min; max,min; max,min; max,min; intintintint queue =new queue =new queue =new queue =new intintintint 101,2,5,6,8,8,9,9,11,2; 101,2,5,6,

22、8,8,9,9,11,2; 101,2,5,6,8,8,9,9,11,2; 101,2,5,6,8,8,9,9,11,2; max = min = queue0; max = min = queue0; max = min = queue0; max = min = queue0; for(intfor(intfor(intfor(int i = 1; i10;i+) i = 1; i10;i+) i = 1; i10;i+) i = 1; imax)max = queuei; if(queueimax)max = queuei; if(queueimax)max = queuei; if(q

23、ueueimax)max = queuei; if(queueimin)min = queuei; if(queueimin)min = queuei; if(queueimin)min = queuei; if(queueimin)min = queuei; Console.Write( Console.Write( Console.Write( Console.Write(最大数是最大数是最大数是最大数是0000,最小数是,最小数是,最小数是,最小数是1,1,1,1,max,min);max,min);max,min);max,min); 4.3 数组元素的访问数组元素的访问 4.3.2

24、4.3.2 二维数组的引用二维数组的引用 二维数组的引用语法形式二维数组的引用语法形式二维数组的引用语法形式二维数组的引用语法形式: : : : 数组名数组名数组名数组名 下标下标下标下标1 1 1 1,下标,下标,下标,下标2 2 2 2 【例例例例4-24-24-24-2】求求求求两两两两个个个个矩矩矩矩阵阵阵阵的的的的乘乘乘乘积积积积,假假假假定定定定一一一一个个个个矩矩矩矩阵阵阵阵A A为为为为3 3行行行行4 4列列列列,一一一一个个个个矩矩矩矩阵阵阵阵B B为为为为4 4行行行行3 3列,根据矩阵乘法规则,其乘积列,根据矩阵乘法规则,其乘积列,根据矩阵乘法规则,其乘积列,根据矩阵乘

25、法规则,其乘积C C为一个为一个为一个为一个3 3行行行行3 3列的矩阵。列的矩阵。列的矩阵。列的矩阵。static void Main(string static void Main(string static void Main(string static void Main(string argsargsargsargs) ) ) ) intintintint i,j,k; i,j,k; i,j,k; i,j,k; intintintint , a = new , a = new , a = new , a = new intintintint 3,4 3,4 3,4 3,4 1,2,3

26、,4,5,6,7,8,9,10,11,12;1,2,3,4,5,6,7,8,9,10,11,12;1,2,3,4,5,6,7,8,9,10,11,12;1,2,3,4,5,6,7,8,9,10,11,12;intintintint , , , , b b b b = = = = new new new new intintintint 4,3 4,3 4,3 4,3 12,13,14,15,16,17,18,19,20,21,22,23;12,13,14,15,16,17,18,19,20,21,22,23;12,13,14,15,16,17,18,19,20,21,22,23;12,13,1

27、4,15,16,17,18,19,20,21,22,23; intintintint , c = new 3,3; , c = new 3,3; , c = new 3,3; , c = new 3,3; for(i = 0; i3;i+) for(i = 0; i3;i+) for(i = 0; i3;i+) for(i = 0; i3;i+) for(j = 0; j3;j+) for(j = 0; j3;j+) for(j = 0; j3;j+) for(j = 0; j3;j+) for(k = 0; i4;k+) for(k = 0; i4;k+) for(k = 0; i4;k+)

28、 for(k = 0; i4;k+) ci,j += ai,k*bk,j; ci,j += ai,k*bk,j; ci,j += ai,k*bk,j; ci,j += ai,k*bk,j; for(i = 0; i3;i+) for(i = 0; i3;i+) for(i = 0; i3;i+) for(i = 0; i3;i+) for(j = 0; j3;j+) for(j = 0; j3;j+) for(j = 0; j3;j+) for(j = 0; j3;j+) Console.Write(0,4:d,ci,j); Console.Write(0,4:d,ci,j); Console

29、.Write(0,4:d,ci,j); Console.Write(0,4:d,ci,j); Console.WriteLineConsole.WriteLineConsole.WriteLineConsole.WriteLine();();();(); 4.4 综合应用举例综合应用举例 4.4.1 数组与数组与System.Array System.ArraySystem.ArraySystem.ArraySystem.Array类型是所有数组类型的抽象基本类型,所有的类型是所有数组类型的抽象基本类型,所有的类型是所有数组类型的抽象基本类型,所有的类型是所有数组类型的抽象基本类型,所有的数组

30、类型均由它派生,任何数组都可以使用数组类型均由它派生,任何数组都可以使用数组类型均由它派生,任何数组都可以使用数组类型均由它派生,任何数组都可以使用System.ArraySystem.ArraySystem.ArraySystem.Array具有的属性及其方法。具有的属性及其方法。具有的属性及其方法。具有的属性及其方法。 例如,例如,例如,例如,System.ArraySystem.ArraySystem.ArraySystem.Array有一个有一个有一个有一个LengthLengthLengthLength属性,通过它可以使用属性,通过它可以使用属性,通过它可以使用属性,通过它可以使用获

31、取数组的长度,有一个获取数组的长度,有一个获取数组的长度,有一个获取数组的长度,有一个GetLength(nGetLength(nGetLength(nGetLength(n) ) ) )方法,用它可以得到方法,用它可以得到方法,用它可以得到方法,用它可以得到n n n n维的数组长度维的数组长度维的数组长度维的数组长度( ( ( (n n n n从从从从0 0 0 0开始开始开始开始) ) ) )。利用这个属性和方法,可以有效。利用这个属性和方法,可以有效。利用这个属性和方法,可以有效。利用这个属性和方法,可以有效的防止数组下标志的越界。的防止数组下标志的越界。的防止数组下标志的越界。的防止

32、数组下标志的越界。 【例【例【例【例4-44-44-44-4】求两个矩阵的乘积,假定一个矩阵求两个矩阵的乘积,假定一个矩阵求两个矩阵的乘积,假定一个矩阵求两个矩阵的乘积,假定一个矩阵A A为为为为3 3行行行行4 4列,一个矩列,一个矩列,一个矩列,一个矩阵阵阵阵B B为为为为4 4行行行行3 3列,根据矩阵乘法规则,其乘积列,根据矩阵乘法规则,其乘积列,根据矩阵乘法规则,其乘积列,根据矩阵乘法规则,其乘积C C为一个为一个为一个为一个3 3行行行行3 3列的矩阵列的矩阵列的矩阵列的矩阵 static void Main(string static void Main(string argsa

33、rgs) ) intint i,j,k; i,j,k; intint , a = new , a = new intint 3,4 1,2,3,4,5,6,7,8,9,10,11,12; 3,4 1,2,3,4,5,6,7,8,9,10,11,12; intint , b = new , b = new intint 4,3 4,3 12,13,14,15,16,17,18,19,20,21,22,23;12,13,14,15,16,17,18,19,20,21,22,23; intint , c = new 3,3; , c = new 3,3; for(i=0;ic. for(i=0;ic

34、.GetLength(0)GetLength(0);i+)/c.;i+)/c.GetLength(0)GetLength(0)是是C C数组第一维的长度数组第一维的长度 for(j=0;jc. for(j=0;jc.GetLength(1)GetLength(1);j+)/c.;j+)/c.GetLength(0)GetLength(0)是是C C数组第二维的长度数组第二维的长度 for(k = 0; i4;k+)for(k = 0; i4;k+) ci,j += ai,k*bk,j; ci,j += ai,k*bk,j; for(i = 0; i3;i+) for(i = 0; i3;i+)

35、 for(j = 0; j3;j+)Console.Write(0,5:d,ci,j); for(j = 0; jmax)max = x; if(xmax)max = x; if(xmin)min = x; if(x2F(n)=F(n-1)+F(n-2) n2F(n)=F(n-1)+F(n-2) n2F(n)=F(n-1)+F(n-2) n22 2用用用用冒冒冒冒泡泡泡泡排排排排序序序序法法法法对对对对输输输输入入入入的的的的20202020个个个个数数数数进进进进行行行行降降降降序序序序排排排排序序序序并并并并存存存存入入入入数数数数组组组组中中中中,然然然然后后后后输输输输入入入入一一一一

36、个个个个数数数数,查查查查找找找找该该该该数数数数是是是是否否否否在在在在数数数数组组组组中中中中存存存存在在在在,若若若若存存存存在,打印出数组中对应的下标值。在,打印出数组中对应的下标值。在,打印出数组中对应的下标值。在,打印出数组中对应的下标值。 3 3 3 3试定义一结构,用来描述日期,具体地说,该结构共试定义一结构,用来描述日期,具体地说,该结构共试定义一结构,用来描述日期,具体地说,该结构共试定义一结构,用来描述日期,具体地说,该结构共有三个成员变量,分别描述年、月、日信息。然后再定义有三个成员变量,分别描述年、月、日信息。然后再定义有三个成员变量,分别描述年、月、日信息。然后再定义有三个成员变量,分别描述年、月、日信息。然后再定义该结构类型的一个变量,要求从键盘输入数据,并输出结该结构类型的一个变量,要求从键盘输入数据,并输出结该结构类型的一个变量,要求从键盘输入数据,并输出结该结构类型的一个变量,要求从键盘输入数据,并输出结果果果果

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

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

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