第4章C#入门学习教程_第1页
第4章C#入门学习教程_第2页
第4章C#入门学习教程_第3页
第4章C#入门学习教程_第4页
第4章C#入门学习教程_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

1、.,第4章 数据类型,.,目录,4.1 数组,4.2 字符串,4.5 本章小结,4.3 枚举,4.4 结构,.,4.1.1 数组,数组是指相同类数据组成的集合,它是数据最常用的存储方式之一。数组中包含的变量称为数组的元素,数组元素可以是包括数组类型在内的任何类型。 数组元素的个数称为数组的长度,数组长度为0表示该数组是空数组。 数组元素没有名称,只能通过索引(或称为下标)来访问。数组索引从0开始计数,具有n个元素的数组索引范围是0n-1。 数组能够存储整型、字符串等类型的数据,但是不论数组存储了多少个数据,其中的数据必须是同一种类型。,.,数组,1一维数组的声明 C#中的数组实际上是一个对象,

2、可以使用new运算符来创建,一维数组声明的一般格式如下: 数组类型 数组名 = new 数组类型数组长度; 例如,声明一个具有10个整型元素的一维数组num1: int num1 = new int10;,.,数组,2一维数组的初始化 C#中也允许在定义数组时对数组元素进行初始化,数组初始化的形式如下: 数组类型 数组名 = new 数组类型数组长度数组元素初始化列表; 例如: string arrLanguages=new string3 C, C+, C# ; int numbers = new int5 1, 2, 3, 4, 5;,.,数组,2一维数组的初始化 如果给出初始值部分,各元

3、素取相应的初值,而且给出的初值个数与“数组长度”相等。此时可以省略“数组长度”,因为后面的大括号中已列出了数组中的全部元素。例如: int a = new int1,2,3,4,5,6,7,8,9,10; 在这种情况下,不允许“数组长度”为变量,例如: int n = 5; /定义变量n int myarr = new intn 1,2,3,4,5;/错误,.,数组,2一维数组的初始化 如果给出“数组长度”,则初始值的个数应与“数组长度”相等,否则出错。例如: int mya = new int2 1,2;/正确 int mya = new int2 1,2,3;/错误 int mya = n

4、ew int2 1;/错误,.,数组,2一维数组的初始化 如果提供了初始值设定项,则还可以省略 new 运算符(静态初始化): 例如,以下是对整型数组myarr的: int myarr=1,2,3,4,5; 在这种情况下,不能将数组定义和静态初始化分开,例如,以下是错误的。 int myarr; myarr=1,2,3,4,5; /错误的数组的静态初始化,.,数组,3一维数组的引用 每一个数组元素就相当于一个变量,可以在程序中对数组元素进行输入、输出和赋值等操作。使用和访问数组元素的一般形式如下: 数组名索引 在C#中,通过指定索引方式访问特定的数组元素,即通过数组元素的索引去存取某个的数组元

5、素。例如: int i1= IntA2; / 将数组元素IntA 2的值赋给变量i1; IntA3 = i1+1; / 将表达式i1+1的值赋给数组元素IntA3;,.,数组,对于数组元素的访问,最常用的是遍历,即访问数组包含的所有元素。在C#中,常用for循环和foreach循环来实现。 例:求最大数和最小数。 int a = new int5 58, 87, 99, 71, 68 ; int max, min; max = min = a0; for (int i = 0; i max) max = ai; if (ai min) min = ai; Console.WriteLine(m

6、ax=0,min=1, max, min);,.,数组,【例】 冒泡排序。 int a = new int5 58,87,66,71,99 ; int temp; /临时变量,保存最大值 for (int i = 0; i 4; i+) for (int j = 0; j 4-i; j+) if (aj aj + 1) temp = aj; aj = aj + 1;aj + 1 = temp; ,.,数组,【例】 利用foreach循环访问数组。 int numbers = 4, 5, 6, 1, 2, 3, -2, -1, 0; foreach (int i in numbers) Syst

7、em.Console.WriteLine(i); ,.,数组,4多维数组的声明 多维数组的定义和一维数组格式差不多,区别只是在不同的维数处理上。多维数组的定义格式为: 数组类型逗号列表 数组名 = new 数组类型数组长度列表; “逗号列表”和“数组长度列表”表示的列数要求一致。例如,声明一个具有543整型三维数组numbers,如下: int, numbers=new int 5,4,3,.,数组,5多维数组的初始化 多维数组的初始化方式与一维数组相似,例如: int, numbers = new int3, 2 1, 2, 3, 4, 5, 6 ; 或者: int, numbers = n

8、ew int, 1, 2, 3, 4, 5, 6 ; 如果提供了初始值设定项,则还可以省略 new 运算符 string, siblings = Mike, Amy, Mary, Albert ;,.,数组,6多维数组的引用 对于多维数组,每一个数组元素都也相当于一个普通的变量,可以给它赋值,也可以引用其值。使用数组元素的一般形式如下: 数组名索引列表 a0,0= 50; / 给数组元素a0,0赋值50; Console.WriteLine(a0,0); / 引用数组元素a0,0的值,输出到控制台;,.,数组,7数组型数组 数组型数组是一种由若干个数组构成的数组。为了便于理解,把包含在数组中的

9、数组称为子数组。 数组类型维度子数组维度 数组名=new 数组类型维度长度子数组维度长度 省略维度为一维数组,省略子数组维度表示子数组为一维数组 int a= new int2; / 创建由两个一维子数构构成的一维数组; int, a=new int2,; /创建由两个二维子数组构成的一维数组;,.,数组,8数组型数组的初始化 数组型数组有多种初始经方式,创建时初始化、先声明后初始化。 int a= new intnew int1,2,3,new int4,5,6; int a=new int2; a0=new int31,2,3; a1=new int54,5,6,7,8;/先声明后初始化更

10、加直观,.,4.1.2 Array类,需要注意的是,C#的数组类型是从抽象基类型System.Array派生的引用类型,System.Array类提供的Length属性可以用来获得数组的长度。System.Array类提供的Clear、Copy、Sort、 Reverse等方法,可用于清空数组元素的值、复制数组元素、对数组元素进行排序和反转数组元素等。 Clear将引用类型元素设置为 null。将布尔类型元素设置为 false。将其他值类型元素设置为零。 Copy将一个 Array 的一部分元素复制到另一个 Array 中。 Sort对一维 Array 对象中的元素进行排序。 Reverse反

11、转一维 Array 或部分 Array 中元素的顺序。,.,Array类,【例】Length属性的使用 using System; class program public static void Main() string arr=c,c+,c#; for(int i=0;iarr.Length;i+) Console.WriteLine(arr0=1,i,arri); ,.,Array类,【例】一维数组排序 using System; class program static void Main() int a = new int5 58,87,99,71,68 ; Array.Sort(

12、a); foreach (int i in a) Console.WriteLine(i); Console.ReadKey(); ,.,Array类,【例】一维数组排序 using System; class program static void Main() int a = new int5 58, 87, 99, 71, 68 ; int b = new int10; Array.Copy(a, b, 3); foreach (int i in b) Console.WriteLine(i); Console.ReadKey(); ,.,4.2 字符串,字符串是一个由若干个Unicod

13、e 字符组成的字符数组。 字符串常量使用双引号来标记,如string 123 就是一个字符串常量。 字符串变量使用string关键字来声明,如string name = 青岛科技大学,就是定义一个字符串变量name。 字符串既然是字符数组,就可以通过索引来提取字符串中的字符。例如: string str1=中华人民共和国; char c=str12; / 字符型变量c的值为字符人 虽然字符串是引用类型,但C#仍然允许使用=、!=来比较两个字符串的大小,实际上是比较字符串中对应字符的大小。例如: string s1 = abc, s2 = ABC; bool b = (s1!=s2); / b的

14、值为true,.,字符串,将字符串string str = “中华人民共和国”中的字符与字符之间添加一个空格或制表符输出。,using System; class program static void Main() string str = 中华人民共和国; for (int i = 0; i 7; i+) Console.Write(stri); Console.Write(t); Console.ReadKey(); ,.,字符串,C#的关键字string 是.NET Framework类库中的 System.String 的别名,用于创建不可变的字符串。 System.String类提

15、供的常用属性和方法: Length属性:获取字符串中 Char 对象的数量。 例:编写一个控制台应用程序,它接收用户输入的一个字符串,将其中的字符以输入相反的顺序输出,.,字符串,编写一个控制台应用程序,它接收用户输入的一个字符串,将其中的字符以输入相反的顺序输出,using System; class program static void Main() Console.Write(请输入一个字符串:); string myString = Console.ReadLine(); string reversedString = ; for (int index = myString.Leng

16、th - 1; index = 0; index-) reversedString += myStringindex; Console.WriteLine(Reversed:0,reversedString); Console.ReadKey(); ,.,字符串,简单加密技术。加密规律是:用原字母后面的第4个字母代替原字母。例如,通过键盘输入5个字母,如“China”,字母”C”后面第4个字母是”G”,用”G”代替”C”。因此,”China”应加密为”Glmre”。请编一程序,通过键盘输入5个字母的字符串将其加密后输出。,string text1, text2 = ; Console.Writ

17、e(请输入原码:); text1 = Console.ReadLine(); for (int i = 0; i text1.Length; i+) text2+=(char)(text1i + 4); Console.Write(密码为:0, text2);,.,字符串,C#的关键字string 是.NET Framework类库中的 System.String 的别名,用于创建不可变的字符串。System.String类提供的常用属性和方法: Length属性:获取字符串中 Char 对象的数量。 String.Format 方法:将指定的 String 中的每个格式项替换为相应对象的值的

18、文本等效项。 int a=3,b=4; string s=String.Format(“0+1=2”,a,b,a+b); Console.WriteLine(s);,.,4.2 字符串,IndexOf、LastIndexOf方法:获取字符串中子字符串或 字符的索引,分别表示从左边查找字符、从右边查找字符 IndexOf(string value,int startIndex):报告指定的 String 在此实例中的第一个匹配项的索引。 IndexOf(string value,int startIndex):报告指定的 String 在此实例中的第一个匹配项的索引。该搜索从指定字符位置开始。

19、返回值为Int32类型,如果找到该字符串,则为 value 的索引位置;如果未找到该字符串,则为 -1。如果 value 为 Empty,则返回值为 0。,.,4.2 字符串,例1:查询单个子字符串 String str = This is the string which we will perform the search on; int position; position = str.IndexOf(the); Console.WriteLine(position); 例2:查询所有的子字符串 String str = This is the string which we will

20、perform the search on; int position = str.IndexOf(the); while (position = 0) Console.WriteLine(position); position = str.IndexOf(the,position+3); ,.,4.2 字符串,Insert、Remove、Replace、Trim可修改字符串的全部或部分,分别表示插入字符、删除字符、替换字符。 Insert(int startIndex,string value) Remove(Int32) 删除此字符串中从指定位置到最后位置的所有字符。 Remove(Int

21、32, Int32) 从此实例中的指定位置开始删除指定数目的字符。 Substring从此实例获取子字符串。 Substring(Int32) 从此实例获取子字符串。子字符串从指定的字符位置开始。 Substring(Int32, Int32) 从此实例获取子字符串。子字符串从指定的字符位置开始且具有指定的长度。 ToLower、ToUpper 方法可更改字符串中 Unicode 字符的大小写。,.,字符串,例1:获取子字符串 string info1 = Name:Tom Hanks; int found = 0; found = info1.IndexOf(:); string info2

22、 = info1.Substring(found + 1); Console.WriteLine(info2); 例2:获取子字符串 string info1 = Name:Tom Hanks; string info2 = info1.Substring(5,3); Console.WriteLine(info2);,.,字符串,编写一个控制台应用程序,它一次性接收用户输入的两个整数,整数之间用逗号分隔,并求两个整数之和。,using System; class program static void Main() Console.Write(请输入两个整数,以逗号分隔:); String

23、s = Console.ReadLine(); int n = s.IndexOf(,); int a = Convert.ToInt32(s.Substring(0,n); int b = Convert.ToInt32(s.Substring(n+1,s.Length-n-1); Console.WriteLine(0+1=2,a,b,a+b); Console.ReadKey(); ,.,字符串,Split方法用于把一个字符串分割成字符串数组。 string words = this is a list of words, with: a bit of punctuation.; str

24、ing split1 = words.Split( ); string split2 = words.Split(new Char , , ., :);,.,4.3 枚举,枚举类型是一种自定义数据类型,它允许用符号代表数据。枚举是指程序中某个变量具有一组确定的值,通过“枚举”可以将其值一一列出来。 1枚举类型的定义 枚举类型使用enum关键字声明,其一般语法形式如下: enum 枚举名枚举成员1,枚举成员2, 例如: / 定义一个表示星期的枚举类型WeekDay enum WeekDay Sunday,Monday,Tuesday,Wednesday, Thursday,Friday,Satu

25、rday ; / 定义一个表示东,南,西,北四个方向的枚举类型 enum Direction East,South,West,North ;,.,4.3 枚举,2枚举类型的声明 枚举类型定义好后,就可以用来声明变量。枚举类型的变量在某一时刻只能取枚举中某一个元素的值,如day的值要么是Sunday要么是Monday或其他的元素,但它在一个时刻只能代表具体的某一天,也不能是枚举集合以外的其他元素。 WeekDay day; / 声明一个WeekDay枚举类型的变量day day= WeekDay.Friday; / 给枚举类型的变量赋值 Direction d; d= Direction. So

26、uth,.,4.3 枚举,3枚举的使用 using System; class program enum WeekDay Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday ; static void Main() WeekDay dayA = WeekDay.Friday; WeekDay dayB = WeekDay.Monday; WeekDay dayC = WeekDay.Thursday; Console.WriteLine(dayA); Console.WriteLine(dayB); Console.WriteLin

27、e(dayC); Console.ReadKey(); ,.,4.3 枚举,4枚举类型的使用 在默认情况下,每个枚举成员都会根据定义的顺序(从0开始),自动赋给对应的基本类型值。上面例子中,Sunday的值为0,Monday的值为1,以此类推。 也可以给枚举成员赋一个基本类型值,而没有赋值的枚举成员也会自动获得一个值,它的值是比最后一个明确声明的值大1的序列。 例如: enum Orientationnorth = 6,south,east = 10,west / south的值为7,west的值为11 由此可知,枚举类型成员可以比较大小,顺序号大的其值就大。当然,枚举成员的类型一致时才能进行

28、比较。,.,4.3 枚举,5枚举类型的转换 每个枚举类型都有一个相应的整数类型,称为枚举类型的基本类型。常见的基本类型有byte、sbyte、short、ushort、int、uint、long或ulong等,默认的基本类型是int。也可以使用bool类型的枚举变量。 有时需要进行枚举类型和整数类型之间进行转换,将枚举类型数据强制转换为int。例如,下面的语句可以将枚举数Sunday转换为int类型数据: int x = (int) WeekDay.Sunday; 使用枚举比使用无格式的整数具有以下优势:一是枚举使得代码易于维护,有助于确保给变量指定合法的、期望的值;二是枚举使得代码更为清晰,

29、枚举允许使用描述性的名称表示整数值,而不是用含义模糊的数字来表示;三是枚举使得代码更易于键入,这主要得力于VS2008的智能感知功能。,.,4.4 结构,结构类型是也一种可以自己定义的数据类型,是一种可以包含不同类型数据成员的数据结构。在结构类型中可以声明多个不同数据类型的组成部分,这些组成部分被称为结构体的成员。结构体允许嵌套。 1结构类型的定义 结构类型由若干“成员”组成的。数据成员称为字段,每个字段都有自已的数据类型。定义结构类型的一般格式如下: struct 结构类型名称 字段访问修饰符 数据类型 字段1; 字段访问修饰符 数据类型 字段2; . 字段访问修饰符 数据类型 字段n; ;

30、,.,4.4 结构,例定义一个学生信息的结构体,数据成员包括:姓名,性别,年龄;方法成员:显示学生信息。,struct Student public string name; public string sex; public int age; public void Show() Console.WriteLine(姓名:0,性别:1,年龄:2, name, sex, age); ,.,4.4 结构,例 struct CoOrds public int x, y; public Cos1(int p1, int p2) x = p1; y = p2; 其中,CoOrds是结构类型的名称,x、

31、y是结构数据成员,Cos1是方法成员。,.,4.4 结构,2.结构体类型的使用 class program struct Simple public int Position; public bool Exists; public double LastValue; static void Main() Simple s; s.Position = 1; s.Exists = false; s.LastValue = 5.5; ,.,4.4 结构,3结构类型的应用 C#内置的结构类型主要有DateTime和TimeSpan。 DateTime表示某个时间点,TimeSpan表示时间间隔。 【例】 获取系统时间 using System; class program static void Main() DateTime today = DateTime.Now; Console.WriteLine(0:d,today); Console.ReadKey(); ,格式项语法 索引,对齐:格式字符串 日期和时间格式字符串 d:短日期模式 D:长日期模式 f:完整日期/时间模式(短时间) F:完整日期/时间模式(长时间) t:短时间模式 T:长时

温馨提示

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

评论

0/150

提交评论