c# 数组、结构和枚举

上传人:第*** 文档编号:54442666 上传时间:2018-09-13 格式:PPT 页数:42 大小:365.50KB
返回 下载 相关 举报
c# 数组、结构和枚举_第1页
第1页 / 共42页
c# 数组、结构和枚举_第2页
第2页 / 共42页
c# 数组、结构和枚举_第3页
第3页 / 共42页
c# 数组、结构和枚举_第4页
第4页 / 共42页
c# 数组、结构和枚举_第5页
第5页 / 共42页
点击查看更多>>
资源描述

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

1、第5章 数组、结构和枚举,内容提要: 数组、结构和枚举的概念 一维数组、二维数组的定义及使用 结构和枚举的定义及使用 目的要求: 理解数组的含义 掌握一维数组、二维数组的用法 掌握结构和枚举的定义及使用 重点难点: 一维数组、二维数组和结构,5. 1 数组 5.1.1 数组的概念 数组是一种数据结构,它包含大量相同类型的变量,这些变量可以通过一个数组名和数组下标(或者叫索引),来访问。包含在数组中的变量,也称为数组元素。 在C#中,数组有一维(只有一个下标)或者多维(有多个下标)。 对于每一维中,数组中数组元素的个数叫这个维的数组长度。无论是一维数组还是多维数组,每个维的下标都是从0开始,结束

2、于这个维的数组长度减1。,5.1.2 一维数组 1一维数组的定义 格式: 数组类型 数组名; 例:int a; string arr; char carr;,2动态初始化 动态初始化需要借助new运算符,为数组元素分配内存空间,并为数组元素赋初值,数值类型初始化为0,布尔类型初始化为false,字符串类型初始化为null。 格式: 数组名=new 数据类型数组长度; 例:a =new int6; 也可以将定义和动态初始化写在一起: 例: string arr=new string3 “as”,”vb”,”23”;,using System; class zy4 static void Main

3、() bool a=new bool2; char b=new char3; double c=new double4; string d=new string5; Console.WriteLine(a0); Console.WriteLine(b0); Console.WriteLine(c0); Console.WriteLine(d0); ,3静态初始化 静态初始化数组的格式如下: 数据类型 数组名=元素1,元素2.; 用这种方法对数组进行初始化时,无须说明数组元素的个数,只需按顺序列出数组中的全部元素即可,系统会自动计算并分配数组所需的内存空间。 例如: int IntArr=-45

4、,9,29,32,46; char StringArr=a,b, c, d;,4关于一维数组初始化的几点说明 在C#中,数组初始化是程序设计中经常容易出错的 部分,下面列出一些需要注意的方面: (1)动态初始化数组时,可以把定义与初始化分开在 不同的语句中进行 ; (2)静态初始化数组必须与数组定义结合在一条语句 中,否则程序就会出错 ; (3)在数组初始化语句中,如果大括号中已明确列出 了数组中的元素, 即确定了元素个数, 则表示数组元素 个数的数值(即方括号中的数值)必须是常量, 并且该 数值必须与数组元素个数一致 。,5访问一维数组中的元素 在C#中是通过数组名和下标来访问数组元素的。

5、例:int a=new int12; int c=5; int b=6; ab+c+=2; 每一个C#的数组都知道自己的长度,数组的长度由 Length 决定。 int i=a.Length; /i=12,例:计算a数组中前3个元素的总和,并且把结果保存到变量sum中。 int sum=a0+1+a2; 如果要把数组中的元素全部相加,则用循环比较方便。 例: for(int i=0;ia.Length; i+) sum+=ai; / 注意:不能写成i=a.Length。,例:写出下列程序的结果。 using System; class Arraysort static void Main( )

6、 int nums=new int10,8,36,12,24; foreach(int j in nums) Console.Write(“00”, j); Console.WriteLine(); for(int j=nums.Length-1;j=0;j-) Console.Write (“00”, numsj); Console.WriteLine(); ,运行结果如下:,using System; class Rnd_36_7 static void Main( ) int a=new int7; Random ran=new Random(); for(int i=0;ia.Leng

7、th;i+) one_num: ai=(int)ran.Next(36)+1; for(int j=0;ji;j+) if(ai=aj) goto one_num; foreach(int n in a) Console.Write(“00“,n); ,编程:36选7。随机产生7个数,每个数在136范围内,要求每个数不同。,6.用一维数组模拟栈操作 栈是一种数据结构,它是一种操作受限的数组,因为它只允许用户从数组的一头进行操作,其操作原则是先进后出,或者说是后进先出。 栈这种数据结构的操作主要有两个,一个操作叫入栈(push)操作,它的作用是把当前数据保存到栈顶,另一个操作是出栈(pop)操作

8、,它的作用是取出栈顶的数据。,1下面是几条动态初始化一维数组的语句,其中正确的是( ) A. int arr2=new int ; B. int arr2=new int4 ; C. int arr2=new inti 6,5,1,2,3; D. int arr2=new int4 6,5,1,2,3;,练习:,5.1.3 二维数组 在多维数组中,二维数组是最简单也是最常用的数组。 1二维数组的定义 数据类型 , 数组名; 例如: double , dArr; /定义一个double型二维数组,2二维数组的初始化 格式: 数组名=new 数据类型数组长度1,数组长度2; 例如: dArr=ne

9、w double 3, 4 ; 也可以将二维数组的定义与动态初始化合并在一条语句中。 例如: double , dArr=new double 3, 4 ; 在动态初始化二维数组时,也可以直接为其赋予初始化值。 例如: int , IntArr=new int , 1, 3, 2, 4, 5,6; 二维数组也可以进行静态初始化 : char , c=a, b, c, x, y, z;,写出下列程序的结果: class myClass static void Main() double, a=1.2,2.3,3.4,4.5, 5.6,6.7,7.8,8.9; double b=1.2,6.7,5

10、.4; bool exist; foreach(double i in a) exist=false; foreach(double k in b) if(i=k) exist=true; if(exist=false) Console.WriteLine(“0“,i); ,运行结果:,1下面是几条定义并初始化二维数组的语句,指出其中正确的是( ) Aint arr3 =new int2, 3 ; Bint arr3=new int2, 3 ; Cint arr3 , =new int2, 3 ; Dint , arr3=new int2, 3;,练习:,2写出下列程序的输出结果。 int ,

11、 a=new int2, 2; for(int i=0;i3;i+) for(int j=0;j3;j+) if(i=j) ai,j=1; else ai,j=0; Console.WriteLine(); ,结果:,结构是用户自定义的数据类型。结构类型是指把各种不同类型数据信息组合在一起形成的组合类型。,5. 2 结构类型,5.2.1 结构的声明 结构类型也是先声明后使用。 声明结构类型时要使用struct关键字,声明结构类型的一般语法格式如下: struct 标识符 /结构成员定义 ,例:定义一个表示矩形的结构。 struct Rectangle /定义名为Rectangle的结构 pub

12、lic double 长; public double 宽; public代表这个成员是公有成员,可以被外界访问。,结构体中也可以放方法成员,如可以在结构体中计算面积。 例: struct Rectangle /定义名为Student的结构 public double 长; public double 宽; public void 面积( ) Console.WriteLine(“面积=0”,长*宽); ,5.2.2 结构成员的访问 结构成员可分为两类,一是实例成员,一是静态成员。 若成员名前有static关键字,则该成员为静态成员,否则为实例成员。静态成员通过结构名来访问,格式: 结构名.静

13、态成员名 实例成员的访问是通过创建结构类型的变量来访问结构的实例成员。格式: 结构名 标识符; 实例成员访问格式为: 结构变量名.实例成员名,5.2.3 顺序查找算法结构的实例 “查找”就是指在一个含有众多数据元素的集合中找出某个特定的数据元素。 顺序查找就是在一组顺序排列的数据中从第n个数据开始,逐个与要查找的给定数据进行比较,如果符合查找条件,则查找成功,否则继续比较,直至第一个数据。书上第95页的例5-9。,枚举类型是用户自定义的数据类型,是一种允许用符号代表数据的值类型。 枚举是指程序中某个变量具有一组确定的值,通过“枚举”可以将其值一一列出来。 例如:将一个星期的7天分别用符号Mon

14、day、Tuesday、Wednesday、Thursday、Friday、Saturday和Sunday来表示。,5. 3 枚举,5.3.1 枚举类型的定义 枚举类型是一种用户自己定义的由一组指定常量集合组 成的独特类型。 格式: enum 枚举名 枚举成员表;,例: enum WeekDay Sun, Mon, Tue, Wed, Thu, Fri, Sat; 注意:两个枚举成员名不能完全相同。,5.3.2 枚举成员的赋值 在定义的枚举类型中,每一个枚举成员都有一个相对应的整数值,对于枚举成员对应的整数值,默认情况下C#规定第1个枚举成员的值取0,它后面的每一个枚举成员的值按加上1递增。

15、例: enum WeekDay Sun, Mon, Tue, Wed, Thu, Fri, Sat; 中,其枚举成员Sun、Mon、Tue、Wed、Thu、Fri和Sat在执行程序时,分别被赋予整数值0、1、2、3、4、5和6。,例:输出枚举成员对应的整数值。 using System; enum color yellow, brown, blue, black, purple class EnumDemo static void Main( ) Console.WriteLine(“yellow=0”, color.yellow); Console.WriteLine(“yellow=0”, (int)color.yellow); Console.WriteLine(“brown=0”, (int)color.brown); Console.WriteLine(“blue=0”, (int)color.blue); Console.WriteLine(“black=0”, (int)color.black); Console.WriteLine(“purple=0”, (int)color.purple); ,

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

当前位置:首页 > 办公文档 > 解决方案

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