教学课件第6章 数组.ppt
C#程序设计案例教程程序设计案例教程第第6章章 数组 第第6章章 数组数组 学习目标学习目标了解数组的概念了解数组的概念。掌握一维数组的掌握一维数组的定义和使用定义和使用。掌握二维数掌握二维数组的定义和使用组的定义和使用。掌握掌握ArrayList的的使用。使用。第第6章章 数组数组 6.1数组概述数组概述数组是一些具有相同数据类型的数据按一定的顺数组是一些具有相同数据类型的数据按一定的顺序组成的序列序组成的序列 例:例: array29875450在上述图中,命名了数组的名称在上述图中,命名了数组的名称array,该数组有六个单元,每个单元存,该数组有六个单元,每个单元存放一个数组元素。每个单元都有一个相对存放的位置,称为数组的下标,放一个数组元素。每个单元都有一个相对存放的位置,称为数组的下标,下标从下标从0开始计数。上述图中第一个数组单元的下标为开始计数。上述图中第一个数组单元的下标为0,最后一个单元,最后一个单元的下标为的下标为5 。第第6章章 数组数组 6.2 一维数组一维数组【课堂案例课堂案例6-1】给定给定5个数:个数:13、25、14、7、8,将它们存储在一,将它们存储在一个数组中,按个数组中,按“冒泡冒泡”排序法将其按从小到大的顺序输出。排序法将其按从小到大的顺序输出。【案例学习目标案例学习目标】掌握数组的定义、初始化和引用掌握数组的定义、初始化和引用掌握掌握“冒泡冒泡”排序法排序法【案例知识要点案例知识要点】数组的定义、初始化和引用数组的定义、初始化和引用 “冒泡冒泡”排序法排序法【案例完成步骤案例完成步骤】(1)定义一维数组)定义一维数组(2)初始化一维数组)初始化一维数组(3)引用一维数组)引用一维数组(4)理解)理解“冒泡冒泡”排序法的思路排序法的思路(5)实现应用程序)实现应用程序第第6章章 数组数组 6.2.1定义一维数组定义一维数组 同变量一样,数组也必须是同变量一样,数组也必须是“先定义,后使用先定义,后使用”,定,定义数组的格式如下:义数组的格式如下:数据类型数据类型 数组名;数组名;例如:例如:int array; /定义了一个名为定义了一个名为array的一维整型数组的一维整型数组对于对于【课堂案例课堂案例6-1】,我们要使用数组,所以需要,我们要使用数组,所以需要定义一个如下的数组:定义一个如下的数组:int array; 6.2.2 初始化数组初始化数组 静态初始化静态初始化 当数组中包含的元素不多,且初始元素值是已知的,可以采用静态初始化。在静态初始化数组时,必须与当数组中包含的元素不多,且初始元素值是已知的,可以采用静态初始化。在静态初始化数组时,必须与数组的定义结合在一起。数组的定义结合在一起。格式:格式:数组类型数组类型 数组名数组名=元素元素1,元素,元素2,元素,元素n;例如:例如:int arr=1,2,3,4,5; 动态初始化动态初始化 动态初始化需要用动态初始化需要用new运算符将数组实例化为一个对象,再为该数组对象分配内存空间,并为数组元素赋运算符将数组实例化为一个对象,再为该数组对象分配内存空间,并为数组元素赋初值。初值。格式:格式:数据类型数据类型 数组名;数组名;数组名数组名=new 数据类型数据类型表达式表达式;或直接写成:或直接写成:数据类型数据类型 数组名数组名 =new 数据类型数据类型表达式表达式;例如:例如:int arr;arr=new int5;或:或:int arr=new int5;对于对于【课堂案例课堂案例6-1】,我们可以用静态初始化的方法也可以用动态初始化的方法。,我们可以用静态初始化的方法也可以用动态初始化的方法。静态初始化的方法:静态初始化的方法:intarray=25,14,13,8,7动态初始化的方法:动态初始化的方法:int array=new int525,14,13,8,7; 第第6章章 数组数组 第第6章章 数组数组 6.2.3 引用一维数组引用一维数组 当定义好一个数组后,就可以引用数组中的元素了。在当定义好一个数组后,就可以引用数组中的元素了。在C#中是通过数组名和元素的下标去引用数组元素的。中是通过数组名和元素的下标去引用数组元素的。其引用格式为:其引用格式为:数组名数组名下标下标例如:要给已定义的例如:要给已定义的arr的第一个元素赋值的第一个元素赋值3,需要使用,需要使用的语句为:的语句为:arr0=3;要显示输出第一个元素,需要的语句为:要显示输出第一个元素,需要的语句为:Console.WriteLine(arr0); 第第6章章 数组数组 6.2.4 理解理解“冒泡冒泡”排序法的思路排序法的思路 “冒泡冒泡”法的思想是:将相邻的两个数进行比较,将法的思想是:将相邻的两个数进行比较,将小的数调到前面。小的数调到前面。2514138714138257141325871425138714138725第1次结果第4次第3次第2次141387138147131487138714第1次结果第3次第2次第1趟第2趟第第6章章 数组数组 6.2.5 实现应用程序实现应用程序 第第6章数组章数组 6.3 二维数组二维数组【课堂案例课堂案例6-2】将一个矩阵的行和列元素互换,存将一个矩阵的行和列元素互换,存到另一个矩阵中到另一个矩阵中【案例学习目标案例学习目标】掌握二维数组的定义、初始化和引用。掌握二维数组的定义、初始化和引用。【案例知识要点案例知识要点】二维数组的定义、初始化和引用二维数组的定义、初始化和引用【案例完成步骤案例完成步骤】(1)定义二维数组)定义二维数组(2)初始化二维数组)初始化二维数组(3)引用二维数组)引用二维数组(4)实现应用程序)实现应用程序第第6章章 数组数组 6.3.1 定义二维数组定义二维数组 在在C#语言中,二维数组的定义格式为:语言中,二维数组的定义格式为:数据类型数据类型, 数组名;数组名;例如:例如:int, array; 对于对于【课堂案例课堂案例6-2】,定义两个二维数组如下:,定义两个二维数组如下:int , arr1;/行列转化前的数组行列转化前的数组int, arr2; /行列转化后的数组行列转化后的数组 第第6章章 数组数组 6.3.2 初始化二维数组初始化二维数组 与一维数组类似,二维数组也包括两种初始化的方法,即:静态初与一维数组类似,二维数组也包括两种初始化的方法,即:静态初始化和动态初试化。始化和动态初试化。静态初始化方法:静态初始化方法:例如:例如:int, array=1,3,3,5,6,7 /定义了一个定义了一个3行行2列的整形二维数组列的整形二维数组并进行了静态初始化。并进行了静态初始化。动态初试化方法:动态初试化方法:例如:例如: int, arr=new int3,2;/ 定义了一个定义了一个3行行2列的整形二维数组并进行列的整形二维数组并进行了动态初始化。了动态初始化。对于对于【课堂案例课堂案例6-2】,我们可以用静态初始化的方法也可以用动态,我们可以用静态初始化的方法也可以用动态初始化的方法。初始化的方法。对于行列转换前的数组,采用静态初始化方法,结果如下:对于行列转换前的数组,采用静态初始化方法,结果如下: int, arr1 = 1, 2, 3 , 4, 5, 6 ; 对于行列转化后存放的数组,采用动态初始化方法,结果如下:对于行列转化后存放的数组,采用动态初始化方法,结果如下: int, arr2 = new int3, 2; 第第6章章 数组数组 6.3.3 引用二维数组引用二维数组 与一维数组类似,二维数组也是通过数组名和下标值与一维数组类似,二维数组也是通过数组名和下标值来访问数组元素的。不同的地方在于二维数组需要两来访问数组元素的。不同的地方在于二维数组需要两个下标来标志一个数组元素,二维数组的引用形式为:个下标来标志一个数组元素,二维数组的引用形式为:数组名数组名下标下标1,下标,下标2第第6章章 数组数组 6.3.4 实现应用程序实现应用程序 第第6章章 数组数组 课堂实践课堂实践6-2【任务任务1】假设某个班有假设某个班有5名学生,每个学生有名学生,每个学生有4门门课程,输入学生的各科的成绩,并求每个学生的课程,输入学生的各科的成绩,并求每个学生的平均成绩。平均成绩。【任务任务2】编写程序,打印出以下的杨辉三角形编写程序,打印出以下的杨辉三角形(要求打印出(要求打印出10行)行)11 11 2 11 3 3 11 4 6 4 1第第6章章 数组数组 6.4 ArrayList【课堂案例课堂案例6-3】阅读下面的程序并预测程序的输出。阅读下面的程序并预测程序的输出。using System;using System.Collections;public class Example public static void Main() ArrayList stringList = new ArrayList(); stringList.Add(How); stringList.Add(are); stringList.Add(you); Console.WriteLine(第第0元素是:元素是: 1, 2, stringList2); Console.WriteLine(该数组的元素个数为:该数组的元素个数为:0, stringList.Count); foreach (object o in stringList) Console.WriteLine(o); 第第6章章 数组 【案例学习目标案例学习目标】掌握掌握ArrayList的使用;的使用;【案例知识要点案例知识要点】ArrayList【案例完成步骤案例完成步骤】(1)初步认识)初步认识ArrayList(3)预测程序的输出)预测程序的输出第第6章章 数组数组 6.4.1 初步认识初步认识ArrayList 在在C#中,中,ArrayList被称为动态数组,它的存储空间可以被动态改变,被称为动态数组,它的存储空间可以被动态改变,同时还拥有添加、删除元素的功能。定义同时还拥有添加、删除元素的功能。定义ArrayList数组与前面定数组与前面定义一维或二维数组的方法有点不同。它定义的格式如下:义一维或二维数组的方法有点不同。它定义的格式如下:ArrayList 数组名数组名=new ArrayList();或或ArrayList 数组名数组名=new ArrayList(数组大小数组大小);例如:例如:ArrayList arr=new ArrayList(); /定义一个定义一个ArrayList数组数组arrArrayList arr=new ArrayList(5); /定义一个定义一个ArrayList数组数组arr并设并设置数组的大小为置数组的大小为5。ArrayList有很多的方法和属性,这些方法和属性提供了强大的功能。有很多的方法和属性,这些方法和属性提供了强大的功能。ArrayList的一些常用的属性如表的一些常用的属性如表6-1所示。所示。 第第6章章 数组数组 属性和方法描述属性和方法描述Capacity: 获取或设置获取或设置 ArrayList 可包含的元素数。可包含的元素数。Add :将对象添加到将对象添加到 ArrayList 的结尾处。的结尾处。 Clear :从从ArrayList中移除所有元素。中移除所有元素。 Insert :将元素插入将元素插入ArrayList的指定索引处。的指定索引处。 Sort :对对ArrayList或它的一部分中的元素进行排序。或它的一部分中的元素进行排序。 TrimToSize :将容量设置为将容量设置为ArrayList中元素的实中元素的实际数目。际数目。 Remove :从从ArrayList中移除特定对象的第一个匹中移除特定对象的第一个匹配项。配项。 第第6章章 数组数组 6.4.2 预测程序的输出预测程序的输出 根据分析该程序,根据分析该程序,【课堂案例课堂案例6-3】的输出为:的输出为:第第2元素是:元素是:you该数组的元素个数为:该数组的元素个数为:3Howareyou第第6章章 数组数组 课堂实践课堂实践6-3阅读下面的程序并预测程序的输出阅读下面的程序并预测程序的输出using System;using System.Collections;public class Programpublic static void Main() ArrayList stringList = new ArrayList(); stringList.Add(Hello); stringList.Add(world); stringList.Add(!); Console.WriteLine(该数组的元素个数为:该数组的元素个数为:0, stringList.Count); foreach (object o in stringList) Console.WriteLine(o);