管理学CH09-数组与字符串课件_第1页
管理学CH09-数组与字符串课件_第2页
管理学CH09-数组与字符串课件_第3页
管理学CH09-数组与字符串课件_第4页
管理学CH09-数组与字符串课件_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第8章:数组与字符串

VisualC#2005程序设计语言第1章:概述第2章:C#与VisualStudio2005第3章:变量、数据类型和表达式第4章:分支和循环第5章:面向对象第6章:面向对象的高级应用第7章:程序的生成、调试和异常处理第8章:数组与字符串

第9章:基于

Windows的应用程序第10章:创建

Web应用程序第11章:.NETFramework2.0简介本章学习目标:理解数组的概念

声明和创建数组通过索引来访问数组

遍历数组中的所有元素

使用for和foreach

循环语句来遍历数组中的元素

了解字符串及其常用方法

目标数组的概念声明和创建数组初始化数组变量访问单个数组元素随堂练习遍历数组元素数组复制如何把数组作为方法参数随堂练习System.Array类小结习题

第8章数组与字符串intscore1;System.Console.ReadLine(score1)intscore2;System.Console.ReadLine(score2)intscore3;System.Console.ReadLine(score3)intscore4;System.Console.ReadLine(score4)intscore5;System.Console.ReadLine(score5)intscore6;System.Console.ReadLine(score6)intscore7;System.Console.ReadLine(score7)第七位学生的分数第六位学生的分数第五位学生的分数第四位学生的分数第三位学生的分数第二位学生的分数第一位学生的分数score[6]score[5]score[4]score[3]score[1]score[0]score[2]应用程序数组存储学员的分数intscore[

]=newint[7];6754321在数组的术语中,元素表示数组中存储的值,数组长度指数组中存储的值的总数,数组秩指数组的总维数1.数组将一组有序的、个数有限的、数据类型相同的数据组合起来作为一个整体,用一个统一的名字(数组名)来表示,这些有序数据的全体则称为一个数组。简单地说,数组是具有相同数据类型的元素的有序集合。2.数组元素与下标在同一数组中,构成该数组的数据称为数组元素。VisualC#2005中用一个统一的名字(数组名)来表示数组。如果要访问数组中的数组元素,就需要将数组名与下标(也称为索引)结合起来。所谓“下标”,就是指数组元素在该数组中的索引值,用以标明数组元素在数组中的位置。在VisualC#2005中,数组元素的索引值是从0开始的,即:0,1,2,3,4,5,6,……。3.数组的类型数组的类型是指构成数组的元素的数据类型(构成同一数组的所有数组元素的数据类型必须一致),它可以是任何的基本数据类型,如:整型、字符串型、布尔型等;也可以是用户自定义类型,如结构、枚举等。4.数组的维数数组下标(索引)的个数称为数组的维数。如果数组中的所有元素,都能按行(或列)顺序排成一行(或一列),则只需要用一个下标便能标识其所在的位置,这样的数组称为一维数组。一维数组以线性方式存储一定数目的元素,例如:1,2,3,4,5,6,7,8,9,10"A","B","C","D","E","G"如果数组中的所有元素,能按行、列顺序排成一个矩阵,那就必须用两个下标来标识这些元素的位置,这样的数组则称为二维数组。如:依此类推,需要3个下标的数组,称为三维数组;数组有多少个下标,就称为多少维数组,二维或以上维数的数组称为多维数组。但实际上超过三维的数组就很少使用了。5.数组的大小数组的大小是指数组中元素的个数,例如上面介绍的两组数:1,2,3,4,5,6,7,8,9,10"A","B","C","D","E","G"若用数组来表示的话,则这两个一维数组的大小分别为10和7。而矩阵:该矩阵的元素个数为4×4=16,即该二维数组的大小为16。数组的概念8.1数组的概念只包含单个序列的数组称为一维数组多维数组通过一个或多个值进行索引。[0][1][2][3]……[N-1][0][0][0][N-1][0][1][0][2][0][3]……[1][0][1][N-1][1][1][1][2][1][3]……[2][0][2][N-1][2][1][2][2][2][3]……[3][0][3][N-1][3][1][3][2][3][3]……………………………………[M-1][0][M-1][N-1][M-1][1][M-1][2][M-1][3]……Array的方法System.Array类包含的一些常用方法方法描述Sort()对数组元素进行排序Clear()将一定范围内的元素设为

0或

nullClone()创建数组的副本GetLength()返回指定维度的长度IndexOf()返回指定值第一次出现的索引值Rank()返回数组的维数Length()返回指定维度的元素个数数组的概念声明和创建数组初始化数组变量访问单个数组元素随堂练习遍历数组元素数组复制如何把数组作为方法参数随堂练习System.Array类小结习题

第8章数组与字符串声明和创建数组8.2声明和创建数组声明数组变量:int[]pins;创建数组实例:int[]pins=newint[4];一般形式如下:<数组类型>[]<数组名>说明:①<数组类型>是指构成数组的元素的数据类型,可以是任何的基本数据类型或自定义类型,如数值型、字符串型、结构等。②方括号([])必须放置在<数组类型>之后。③<数组名>跟普通变量一样,必须遵循VisualC#2005的合法标识符规则,并且最好使用一个复数名称,如numbers、times。注意:①声明数组时必须使用方括号([]),而不是像VisualBasic那样使用小括号。②声明数组时不能指定数组的大小。③方括号必须写在数组名之前,数组类型之后。而不是像其他编程语言那样将括号放置在数组名之后。2.多维数组的声明多维数组的声明方法与一维数组类似,只是在<数组类型>后的方括号中,添加若干个逗号,逗号的个数由数组的维数决定。其一般形式为:<数组类型>[<若干个逗号>]<数组名>因为一个逗号能分开两个下标,而二维数组有两个下标,所以声明二维数组需要使用一个逗号,三维或三维以上的多维数组的声明方法依此类推,若数组是n维的,声明时就需要n-1个逗号。创建数组实例数组是引用类型,数组变量引用的是一个数组实例。介绍类时已经介绍过,只有在使用new关键字创建类的实例时,才会真正分配内存。数组遵循的是同样的原则,声明一个数组时,不需要指定数组的大小,因此在声明数组时并不分配内存,而只有在创建数组实例时,才指定数组的大小,同时给数组分配相应大小的内存。创建数组实例的方法与创建类的实例的方法类似,都需要使用new关键字,其一般形式如下:<数组名>=new<数据类型>[]在创建数组实例时,系统会使用不同数据类型的默认值(0、null、false)对数组元素赋初值数组的概念声明和创建数组初始化数组变量访问单个数组元素随堂练习遍历数组元素数组复制如何把数组作为方法参数随堂练习System.Array类小结习题

第8章数组与字符串初始化数组变量8.3初始化数组变量根据数组实例中所有元素的类型,编译器把这些元素初始化为一个默认值:内置数值型(例如int)元素初始化为0,枚举型元素也初始化为0(即使它们的枚举值都不是0)bool

型元素初始化为false引用型元素初始化为null把数组元素初始化为特定值把数组元素初始化为特定值:int[]pins=newint[4]{9,3,7,2};数组元素初始化为通过调用方法而得到的值:Randomr=newRandom();//创建一个随机数变量r8.3初始化数组变量1.一维数组的初始化可以在声明一维数组时使用new关键字对其实例化,并将其初始化,例如前面介绍的numbers数组和strs数组,可以使用以下语句初始化://**********************************************************************************************int[]numbers=newint[10]{1,2,3,4,5,6,7,8,9,10};string[]strs=newstring[7]{"A","B","C","D","E","F","G"};//**********************************************************************************************上述初始化的代码可以简写成://**********************************************************************************************int[]numbers=newint[]{1,2,3,4,5,6,7,8,9,10};string[]strs=newstring[]{"A","B","C","D","E","F","G"};//**********************************************************************************************甚至还可以写成://****************************************************************************int[]numbers={1,2,3,4,5,6,7,8,9,10};string[]strs={"A","B","C","D","E","F","G"};//****************************************************************************另外,大括号中的值不一定要是常量,也可以是由运算(如函数、数学运算等)得来的值注意:大括号中的值的数量必须与指定的数组大小完全匹配,不能多也不能少二维数组的初始化同样的,也可以在声明二维数组时使用new关键字对其实例化,并将其初始化,例如前面介绍的二维数组nums,可以使用以下语句初始化://*****************************************************************************int[,]nums=newint[4,4]{{1,3,5,7},{2,4,6,8},{3,5,7,9},{4,6,8,10}};//*****************************************************************************同样,上述代码也可以简写成://*****************************************************************************int[,]nums=newint[,]{{1,3,5,7},{2,4,6,8},{3,5,7,9},{4,6,8,10}};//*****************************************************************************或者://*****************************************************************************int[,]nums={{1,3,5,7},{2,4,6,8},{3,5,7,9},{4,6,8,10}};//****************************************************************************************三维或三维以上的多维数组的初始化方法类似于二维数组的初始化。数组的概念声明和创建数组初始化数组变量访问单个数组元素随堂练习遍历数组元素数组复制如何把数组作为方法参数随堂练习System.Array类小结习题

第8章数组与字符串访问单个数组元素也就是说如果要访问pins数组的第三个元素,应该使用以下代码:pins[2]可以在读取或写入时使用这个表达式。例如:pins[2]=6;//写入Console.WriteLine(pins[2]);//读取8.4访问单个数组元素注意:访问数组元素时,一定要注意下标的范围,例如numbers数组有10个数组元素,则下标的范围是0~9数组的概念声明和创建数组初始化数组变量访问单个数组元素随堂练习遍历数组元素数组复制如何把数组作为方法参数随堂练习System.Array类小结习题

第8章数组与字符串随堂练习8.5 随堂练习假设你是一个小学的数学老师。有一天校教务主任要求你编写一段程序,用于记录所有班级成绩,并能进行关键字查询。数组的概念声明和创建数组初始化数组变量访问单个数组元素随堂练习遍历数组元素数组复制如何把数组作为方法参数随堂练习System.Array类小结习题

第8章数组与字符串遍历数组元素for语句可以用来遍历所有的数组元素。int[]pins={9,3,7,2};for(intindex=0;index!=pins.Length;index++){

intpin=pins[index];

System.Console.WriteLine(pin);}8.6 遍历数组元素遍历二维数组一维数组的遍历只需要使用一个循环语句。然而,二维数组的遍历必须使用循环语句的嵌套才能够实现,例如前面介绍过的矩阵:若要使用数组来处理该矩阵,可以先声明一个int类型的二维数组,然后创建数组实例,接下来使用for语句的嵌套来遍历该二维数组,给各个数组元素赋值,同时还可以求该数组中的所有元素之和等操作。使用foreach

语句来遍历数组元素可以使用foreach

语句来遍历数组元素,避免形成死循环。int[]pins={9,3,7,2};foreach(intpininpins){

Console.WriteLine(pin);}8.6 遍历数组元素必须使用for语句的情况8.6 遍历数组元素foreach

语句总是遍历整个数组。如果只需要遍历数组的特定部分(例如前半部分),或者需要绕过特定元素(例如,只遍历索引为偶数的元素),那么最好是使用for语句foreach

语句总是从索引0遍历到索引Length-1。如果需要反向遍历,那么最好是使用for语句如果循环体需要知道元素索引,而不仅仅是元素值,那么必须使用for语句如果需要修改数组元素,那么必须使用for语句。这是因为foreach

语句的循环变量是一个只读变量8.3foreach语句foreach语句的一般形式foreach语句最早出现在VisualBasic中,是一种很有用的循环语句,在C、C++中并没有这个语句。在VisualC#2005中使用foreach语句的一般形式如下:foreach(<数据类型><循环变量>in<数组或集合名>){ //循环体}说明:①<数据类型>是与数组的元素相匹配的数据类型,例如某数组的数据类型为int,若要使用foreach语句遍历该数组的元素,则在使用foreach语句时,应当指明循环变量的数据类型也为int。②<循环变量>是一个普通的变量,在foreach语句的循环体中一般用来表示数组或集合中的元素。使用foreach语句必须注意以下几点:(1)循环体遍历数组或集合中的每个元素。当对数组或集合中的所有元素完成访问后,则跳出foreach语句,执行foreach块之后的语句。(2)可以在foreach语句内使用break关键字跳出循环,或使用continue关键字直接进入下一轮循环。(3)foreach循环还可以通过goto、return或throw语句跳出。数组的概念声明和创建数组初始化数组变量访问单个数组元素随堂练习遍历数组元素数组复制如何把数组作为方法参数随堂练习System.Array类小结习题

第8章数组与字符串复制数组8.7 复制数组若要复制某个数组变量所引用的数组实例,那么必须做两件事:第一件事是创建一个新的数组实例,新数组实例在类型和大小方面必须与原数组完全相同。例如:

int[]pins={9,3,7,2};int[]copy=newint[4];第二件需要做的事情是设置新数组中的元素值,使它们和原数组中的元素值一一对应。例如:int[]pins={9,3,7,2};int[]copy=newint[pins.Length];for(inti=0;i!=copy.Length;i++){

copy[i]=pins[i];}数组的概念声明和创建数组初始化数组变量访问单个数组元素随堂练习遍历数组元素数组复制如何把数组作为方法参数随堂练习System.Array类小结习题

第8章数组与字符串如何把数组作为方法参数在某些情况下,方法的参数个数是不可预知的。例如,要求设计一个能计算任意个整数之和的方法。在学习了数组以后,我们就可以使用数组来解决类似的问题。可以把这些整数放在一个数组中,再把该数组传递给方法,然后方法使用foreach

语句来遍历该数组。8.8 如何把数组作为方法参数数组的概念声明和创建数组初始化数组变量访问单个数组元素随堂练习遍历数组元素数组复制如何把数组作为方法参数随堂练习System.Array类小结习题

第8章数组与字符串随堂练习8.9 随堂练习校教务主任又给你提出了一个要求:编写一段程序,求出每个班级的第一名和最后一名的成绩。数组的概念声明和创建数组初始化数组变量访问单个数组元素随堂练习遍历数组元素数组复制如何把数组作为方法参数随堂练习System.Array类小结习题

第8章数组与字符串System.Array类8.10 System.Array类IsFixedSize()IsReadOnly()IsSynchronized()Length()LongLength()Rank()System.Array类提供了创建、操作、搜索和排序数组的方法。System.Array类的一些常用成员和方法:System.Array类的方法8.10System.Array类AsReadOnly()方法Clear()方法Copy()方法CreateInstance()方法(Type,Int32)Sort()方法(Array)数组的方法和属性在C#中,数组实际上是对象。System.Array是所有数组类型的抽象基类型。提供创建、操作、搜索和排序数组的方法,因而在公共语言运行库中用作所有数组的基类。1.Length属性Length属性是只读的,用于返回数组所有维数中元素个数的总数,即数组的大小。使用Length属性的一般形式为:<数组名>.Length2.Rank属性Rank属性是只读属性,用于返回数组的维数。使用Rank属性的一般形式为:<数组名>.Rank3.Sort方法Sort方法用于对一维数组排序,它是Array类的静态方法。Sort方法按照从小到大的顺序排序,例如对于数值型数组,按数值大小排序;对于字符串数组,则按字符编码的大小排序,首先比较字符串的第一个字符,如第一个字符相同则比较第二个字符,依此类推,直到分出大小为止。Sort方法的语法格式为:Array.Sort(<数组名>)4.Reverse方法Reverse方法用于反转一维数组。即第一个元素变成新数组的最后一个元素,第二个元素变成新数组的倒数第二个元素,依此类推。Reverse方法的语法格式为:Array.Reverse(<数组名>)5.GetLowerBound与GetUpperBound方法GetLowerBound方法和GetUpperBound方法用于返回数组指定维度的下限与上限,其中维度是指数组的维的索引号,同样的维度的索引也是从0开始的,即第一维的维度为0,第二维的维度为1,……,依此类推。GetLowerBound方法和GetUpperBound方法的语法格式分别为:<数组名>.GetLowerBound(<维度>)和<数组名>.GetUpperBound(<维度>)6.Clear方法清除数组中所有元素的值,重新初始化数组中所有的元素。即把数组中的所有元素设置为0、false或null,其语法格式为:Array.Clear(<要清除的数组名>,<要清除的第一个元素的索引>,<要清除元素的个数>)数组的复制1.使用循环复制数组复制一个数组,要解决两个问题,首先是创建一个与被复制的数组类型和长度相同的新数组实例,然后要解决的是将原数组的值逐个赋给新数组实例,这可以使用循环结构控制语句(如for语句)来实现。2.Copy方法Copy方法System.Array类提供的一个静态方法,其作用是将一个数组的内容复制给另外一个数组,并指定复制元素的个数,其语法格式为:Array.Copy(<被复制的数组>,<目标数组>,<复制元素的个数>)3.CopyTo方法CopyTo方法与Copy方法一样,其作用是将一个数组的内容复制给另外一个数组,并从指定的索引处开始复制,其语法格式为:<被复制的数组>.CopyTo(<目标数组>,<复制的起始索引>)4.Clone方法Clone方法是实例方法,使用Clone方法,可以在一次调用中创建一个完整的数组实例并完成复制。数组的概念声明和创建数组初始化数组变量访问单个数组元素随堂练习遍历数组元素数组复制如何把数组作为方法参数随堂练习System.Array类小结实验习题

第8章数组与字符串8.4集合类集合类集合是VisualC#2005的一种基础的多重对象容器,一个容器允许容纳大量的对象,而并不需要考虑到底有多少个对象。VisualC#2005中包含了一些不同类型的集合类,使用它们可以根据需要存储的信息类型而进行不同的处理。1.C#中的常用集合类VisualC#2005中的常用集合类有ArrayList、HashTable、Queue、Stack等集合类的元素数据类型都是object。因为集合类位于System.Collections命名空间中,因此在使用集合类之前必须先引入其命名空间,代码如下://*****************************************************************************************usingSystem.Collections;//****************************************************************************************表8-7常用的集合类集合类说明ArrayList对数组中的元素进行各种处理HashTable哈希表(hashtable)是给定的关键字到值的映射,用于数据分割,一个哈希表存储的是关键字/值的排序序列,可以被关键字访问Queue队列实现了先进先出的机制SortedList存储关键字/值对的排序序列,可以被关键字或索引访问Stack堆栈实现了后进先出的机制StringCollection字符串集合,使用时和数组类似2.ArrayList类ArrayList的元素数据类型为object。可用Add或Insert方法给集合插入元素,用Remove或RemoveAt方法删除元素,并且可以使用foreach语句遍历集合。(1)Add方法。Add方法的作用是在ArrayList的末尾添加一个元素,只需要给出要添加的元素值,ArrayList会自动调整自身的大小,Add方法的语法格式如下:<ArrayList对象>.Add(<要添加的元素值>)(2)Insert方法。Insert方法的作用是在ArrayList

的指定索引处添加一个元素,需要给出添加到的位置和要添加的元素值,ArrayList

同样会自动调整自身的大小,Insert方法的语法格式如下:<ArrayList对象>.Insert(<添加到的位置>,<要添加的元素值>)(3)Remove方法。Remove方法的作用是在ArrayList中删除一个指定值的元素,需要给出要添加的元素的值,如果ArrayList中有两个或两个以上指定的值,则只删除最先出现的那一个。ArrayList同样会自动调整自身的大小,Remove方法的语法格式如下:<ArrayList对象>.Remove(<要删除的元素值>)(4)RemoveAt方法。RemoveAt

方法的作用是在ArrayList

中删除一个指定索引处的元素,只需要给出要删除元素的索引号,ArrayList

同样会自动调整自身的大小,RemoveAt方法的语法格式如下:<ArrayList对象>.Add(<要删除元素的索引号>)(5)Count属性。ArrayList类的Count属性用来返回一个ArrayList集合中有多少个元素,类似于数组的Length属性。访问Count属性的一般形式如下:<ArrayList对象>.Count3.程序举例【例8-6】编写程序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论