C++面向对象程序设计世界大学城_第1页
C++面向对象程序设计世界大学城_第2页
C++面向对象程序设计世界大学城_第3页
C++面向对象程序设计世界大学城_第4页
C++面向对象程序设计世界大学城_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、第第5讲讲 字符串字符串 n字符串定义字符串定义n常见字符串操作常见字符串操作5.1 字符串定义字符串定义 n零到多个字符组成的序列零到多个字符组成的序列n定义: string 变量名; String 变量名; 如: string s = “abc”; s = “123”;5.2 字符串连接字符串连接 将两个字符串连接起来得到一个新字符串将两个字符串连接起来得到一个新字符串:String s1 = “abc”;String s2 = “efg”;Console.WriteLine(s1 + s2);或或:String s3 = String.Concat(s1, s2);Console.Wri

2、teLine(s3);注意下面两个表达式的区别注意下面两个表达式的区别: “1” + “2” 1 + 25.3 获取字符串的某个字符获取字符串的某个字符 String s1 = “abc”;char c = s11;Console.WriteLine(c);5.4 字符串长度字符串长度 String s1 = “abc”;Console.WriteLine(s1.Length);5.5 串联和拆分串联和拆分 串联串联:String s1 = new string “ab”, “cd”, “ef”;String s2 = String.Join(“;”, s1);Console.WriteLin

3、e(s2);拆分拆分:String s1 = “ab;cd;ef”;String s2 = string.split(;);5.6 比较比较运算符运算符: = 如如: “ab” = “bc”的值是的值是falseString.Compare方法方法: String.Compare(s1, s2);S1大于大于s2,返回,返回1;s1小于小于s2,返回,返回-1;相等,返回;相等,返回0。s1.CompareTo(s2)返回值与上面一样。返回值与上面一样。5.7 检查检查StartsWith:检查是否以某字符串开头,:检查是否以某字符串开头, 如如:“abcdefg”.StartsWith(“a

4、bc”);EndsWith:5.7 检查检查IndexOf:检查字符或子串出现的位置:检查字符或子串出现的位置如:如: “abcdefg”.IndexOf(d); “abcdefg”.IndexOf(“cde”); “abcdabcd”.LastIndexOf(a);5.8 去头掐尾去头掐尾Trim、TrimEnd、TrimStart:去掉开头或结尾的:去掉开头或结尾的指定字符,默认是空格。指定字符,默认是空格。如:如: “ abcdefg ”.Trim(); 5.9 裁剪与替换裁剪与替换裁剪:裁剪:Remove“abcdefg”.Remove(2, 3);替换:替换:Replace“abcd

5、efg”.Replace(“cde”, “111”); 5.10 转换大小写转换大小写ToUpper、ToLower5.11 取子串取子串”abcdefg”.Substring(2, 4)4.2 一维数组一维数组 2、一维数组的动态初始化、一维数组的动态初始化 动态初始化需要借助动态初始化需要借助new运算符,为数组元素分配内存空间,并为数组运算符,为数组元素分配内存空间,并为数组元素赋初值,数值类型初始化为元素赋初值,数值类型初始化为0,布尔类型初始化为,布尔类型初始化为false,字符串类,字符串类型初始化为型初始化为null。 动态初始化数组的格式如下:动态初始化数组的格式如下: 数组类

6、型数组类型 数组名数组名=new 数据类型数据类型n元素值元素值0,元素值元素值1,元素元素值值n-1; 其中,其中,“数组类型数组类型”是数组中数据元素的数据类型,是数组中数据元素的数据类型,n为为“数组长度数组长度”,可以是整型常量或变量,后面一层大括号里为初始值部分。可以是整型常量或变量,后面一层大括号里为初始值部分。 (1) 不给定初始值的情况不给定初始值的情况 如果不给出初始值部分,各元素取默认值。例如:如果不给出初始值部分,各元素取默认值。例如: int a = new int10; 该数组在内存中各数组元素均取默认值该数组在内存中各数组元素均取默认值0。4.2 一维数组一维数组

7、(2)给定初始值的情况)给定初始值的情况如果给出初始值部分,各元素取相应的初值,而且给出的初值个数与如果给出初始值部分,各元素取相应的初值,而且给出的初值个数与“数组长度数组长度”相等。此时可以省略相等。此时可以省略“数组长度数组长度”,因为后面的大括号中已列出了数组中的全部,因为后面的大括号中已列出了数组中的全部元素。例如:元素。例如:int a = new int101,2,3,4,5,6,7,8,9,10; 或或int a = new int1,2,3,4,5,6,7,8,9,10; 在这种情况下,不允许在这种情况下,不允许“数组长度数组长度”为变量,例如:为变量,例如: int n =

8、 5; /定义变量定义变量nint myarr = new intn 1,2,3,4,5;/错误错误如果给出如果给出“数组长度数组长度”,则初始值的个数应与,则初始值的个数应与“数组长度数组长度”相等,否则出错。例如:相等,否则出错。例如: int mya = new int2 1,2;/正确正确int mya = new int2 1,2,3;/错误错误int mya = new int2 1; /错误错误4.2 一维数组一维数组 (3)一维数组的静态初始化)一维数组的静态初始化 静态初始化数组时,必须与数组定义结合在一起,否则会出错。静态初静态初始化数组时,必须与数组定义结合在一起,否则会

9、出错。静态初始化数组的格式如下:始化数组的格式如下: 数据类型数据类型 数组名数组名=元素值元素值0,元素值元素值1,元素值元素值n-1; 用这种方法对数组进行初始化时,无需说明数组元素的个数,只需按顺用这种方法对数组进行初始化时,无需说明数组元素的个数,只需按顺序列出数组中的全部元素即可,系统会自动计算并分配数组所需的内存空序列出数组中的全部元素即可,系统会自动计算并分配数组所需的内存空间。间。 例如,以下是对整型数组例如,以下是对整型数组myarr的静态初始化:的静态初始化: int myarr=1,2,3,4,5; 在这种情况下,不能将数组定义和静态初始化分开,例如,以下是错误的。在这种

10、情况下,不能将数组定义和静态初始化分开,例如,以下是错误的。 int myarr; myarr=1,2,3,4,5;/错误的数组的静态初始化错误的数组的静态初始化4.2 一维数组一维数组 4、访问一维数组中的元素、访问一维数组中的元素 访问一维数组中的某个元素:名称访问一维数组中的某个元素:名称下标或索引下标或索引。 所有元素下标从所有元素下标从0开始,到数组长度减开始,到数组长度减1为止。例如,以下语句输出数组为止。例如,以下语句输出数组myarr的的所有元素值:所有元素值: for (i=0;i5;i+) Console.Write(0 ,ai); Console.WriteLine();

11、 C#还提供还提供foreach语句。该语句提供一种简单、明了的方法来循环访问数组的语句。该语句提供一种简单、明了的方法来循环访问数组的元素。例如,以下代码定义一个名称为元素。例如,以下代码定义一个名称为mya的数组,并用的数组,并用foreach语句循环访问语句循环访问该数组。该数组。 int mya = 1,2,3,4,5,6; foreach (int i in mya) System.Console.Write(0 ,i); Console.WriteLine();输出为:输出为:1 2 3 4 5 6。4.2 一维数组一维数组 5、一组数组的越界、一组数组的越界 若有如下语句定义并初

12、始化数组若有如下语句定义并初始化数组ca: int ca = new int101,2,3,4,5,6,7,8,7,9,10; 数组数组ca的合法下标为的合法下标为09,如果程序中使用,如果程序中使用ca10或或ca50,则超,则超过了数组规定的下标,因此越界了。过了数组规定的下标,因此越界了。C#系统会提示以下出错信息。系统会提示以下出错信息。 未处理的异常未处理的异常: Syatem.IndexOutOfRangeException:索引超索引超出了数组界限。出了数组界限。4.2 一维数组一维数组 练习:练习: 输出数组最大元素。输出数组最大元素。4.3 二维数组二维数组 1、二维数组的定

13、义、二维数组的定义 定义二维数组的语法格式如下:定义二维数组的语法格式如下: 数组类型数组类型, 数组名数组名; 其中,其中,“数据类型数据类型”为为C#中合法的数据类型,中合法的数据类型,“数组名数组名”为为C#中合法中合法的标识符。的标识符。 例如,以下语句定义了例如,以下语句定义了3个二维数组,即整型数组个二维数组,即整型数组x、双精度数组、双精度数组y和字和字符串数组符串数组z。 int, x; double, y; string, z; 对于多维数组,可以作类似的推广,例如,以下语句定义了一个三维数对于多维数组,可以作类似的推广,例如,以下语句定义了一个三维数组组p。 int, p;

14、4.3 二维数组二维数组 2、二维数组的动态初始化、二维数组的动态初始化 动态初始化二维数组的格式如下:动态初始化二维数组的格式如下: 数据类型数据类型, 数组名数组名=new 数据类型数据类型mn 元素值元素值0,0,元素值元素值0,1,元素值元素值0,n-1, 元素值元素值1,0,元素值元素值1,1,元素值元素值1,n-1, 元素值元素值m-1,0,元素值元素值m-1,1,元素值元素值m-1,n-1 ; 其中,其中,“数组类型数组类型”是数组中数据元素的数据类型,是数组中数据元素的数据类型,m、n分别为行数和列数,即各维的长度,可以是整型常量或变量。分别为行数和列数,即各维的长度,可以是整

15、型常量或变量。 4.3 二维数组二维数组 (1)不给定初始值的情况)不给定初始值的情况 如果不给出初始值部分,各元素取默认值。例如:如果不给出初始值部分,各元素取默认值。例如: int, x = new int23; 该数组各数组元素均取默认值该数组各数组元素均取默认值0。4.3 二维数组二维数组 (2)给定初始值的情况)给定初始值的情况 如果给出初始值部分,各元素取相应的初值,而且给出的初如果给出初始值部分,各元素取相应的初值,而且给出的初值个数与对应的值个数与对应的“数组长度数组长度”相等。此时可以省略相等。此时可以省略“数组长数组长度度”,因为后面的大括号中已列出了数组中的全部元素。例,

16、因为后面的大括号中已列出了数组中的全部元素。例如:如: int, x = new int2, 31,2,3,4,5,6; 或或 int, x = new int,1,2,3,4,5,6; 4.3 二维数组二维数组 (3)二维数组的静态初始化)二维数组的静态初始化 静态初始化数组时,必须与数组定义结合在一起,否则会出错。静态初静态初始化数组时,必须与数组定义结合在一起,否则会出错。静态初始化数组的格式如下:始化数组的格式如下: 数据类型数据类型, 数组名数组名=元素值元素值0,0,元素值元素值0,1,元素值元素值0,n-1, 元素值元素值1,0,元素值元素值1,1,元素值元素值1,n-1, 元素

17、值元素值m-1,0,元素值元素值m-1,1,元素值元素值m-1,n-1;例如,以下语句是对整型数组例如,以下语句是对整型数组myarr的静态初始化。的静态初始化。 int, myarr=1,2,3,4,5,6;4.3 二维数组二维数组 4、访问二维数组中的元素、访问二维数组中的元素 为了访问二维数组中的某个元素,需指定数组名称和数组中该元素的行下标和列为了访问二维数组中的某个元素,需指定数组名称和数组中该元素的行下标和列下标。例如,以下语句输出数组下标。例如,以下语句输出数组myarr的所有元素值。的所有元素值。 for (i=0;i2;i+) for (j=0;j3;j+ Console.W

18、rite(0 ,myarri,j); Console.WriteLine(); 对于多维数组,也可以使用对于多维数组,也可以使用foreach语句来循环访问每一个元素,例如。语句来循环访问每一个元素,例如。 int, myb = new int3, 2 1, 2, 3,4, 5,6; foreach (int i in myb) Console.Write(0 , i); Console.WriteLine();其输出为:其输出为:1 2 3 4 5 6。 4.3 二维数组二维数组 练习:练习: 设计一个控制台应用程序,输出九行杨辉三角形。设计一个控制台应用程序,输出九行杨辉三角形。 4.4 交错数组交错数组 交错数组:元素为数组的数组,元素的维度和大小可以不同。交错数组:元素为数组的数组,元素的维度和大小可以不同。 多维数组:元素的维度和大小的均相同。多维数组:元素的维度和大小的均相同。1、交错数组的定义和初始化、交错数组的定义和初始化以下语句定义了一个由以下语句定义了一个由3个元素组成的一维数组,其中每个元素都是一个元素组成的一维数组,其中每个元素都是一个一维整数数组:个一维整数数组:int arrj = new int3;必须初

温馨提示

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

最新文档

评论

0/150

提交评论