第二章C编程基础

上传人:夏** 文档编号:586492946 上传时间:2024-09-04 格式:PPT 页数:78 大小:1.93MB
返回 下载 相关 举报
第二章C编程基础_第1页
第1页 / 共78页
第二章C编程基础_第2页
第2页 / 共78页
第二章C编程基础_第3页
第3页 / 共78页
第二章C编程基础_第4页
第4页 / 共78页
第二章C编程基础_第5页
第5页 / 共78页
点击查看更多>>
资源描述

《第二章C编程基础》由会员分享,可在线阅读,更多相关《第二章C编程基础(78页珍藏版)》请在金锄头文库上搜索。

1、第二第二第二第二章章章章 C#C#编程基础编程基础编程基础编程基础本章学习目标本章学习目标熟悉熟悉C#基本数据类型基本数据类型掌握选择、循环、跳转语句的使用方法掌握选择、循环、跳转语句的使用方法掌握定义和初始化数组的方法掌握定义和初始化数组的方法掌握访问数组元素的方法掌握访问数组元素的方法第二第二章章 C#编程基础编程基础2.1 基本数据类型基本数据类型2.2 常量与变量常量与变量2.3 表达式表达式2.4 选择语句选择语句2.5 循环语句循环语句2.6 跳转语句跳转语句2.7 数组数组2.1 基本数据类型基本数据类型2.1.1 值类型值类型2.1.2 引用类型引用类型2.1.3 值类型与引用

2、类型的关系值类型与引用类型的关系2.1 基本数据类型基本数据类型简单类型简单类型枚举类型枚举类型结构类型结构类型值类型值类型引用类型引用类型类类接口接口数组数组委托委托两者有很大区别两者有很大区别2.1 基本数据类型基本数据类型值类型值类型引用类型引用类型内存内存低地址低地址0x123410240x12360x12380x22340x22360x2238高地址高地址 . . .int num;num=1024;num低地址低地址0x12340x22360x12360x12380x2234a0x2236b0x2238c高地址高地址 . . .string str;str=“abc”;str内存内

3、存2.1.1 值类型值类型所谓值类型就是一个包含实际数据的量。即当定义一个值所谓值类型就是一个包含实际数据的量。即当定义一个值类型的变量时,类型的变量时,C#会根据它所声明的类型,以堆栈方式会根据它所声明的类型,以堆栈方式分配一块大小相适应的存储区域给这个变量,随后对这个分配一块大小相适应的存储区域给这个变量,随后对这个变量的读或写操作就直接在这块内存区域进行。变量的读或写操作就直接在这块内存区域进行。2.1.1 值类型值类型类类 别别描描 述述值类型值类型简单类型简单类型有符号整型:有符号整型:sbyte, short, int, long无符号整型:无符号整型:byte, ushort,

4、uint, ulongUnicode字符:字符:char浮点型:浮点型:float,double高精度小数:高精度小数:decimal布尔型:布尔型:bool (true,false)枚举类型枚举类型用户自定义类型:用户自定义类型:enum结构类型结构类型用户自定义类型:用户自定义类型:struct2.1.1 值类型值类型枚举类型枚举类型: 由用户定义的一组有限个整型符号常量。由用户定义的一组有限个整型符号常量。定义枚举类型定义枚举类型枚举成员赋值枚举成员赋值声明枚举变量声明枚举变量访问枚举变量访问枚举变量2.1.1 值类型值类型枚举类型枚举类型定义枚举类型定义枚举类型enum 枚举名:枚举名

5、:数据类型数据类型/枚举成员枚举成员 数据类型数据类型除了除了char之外的整数类型。之外的整数类型。默认为默认为32位整数类型,第一个枚举值为位整数类型,第一个枚举值为0,第二个,第二个为为1,依次加,依次加1。枚举成员枚举成员 枚举成员均为符号常量,常量名之间用逗号分隔。枚举成员均为符号常量,常量名之间用逗号分隔。2.1.1 值类型值类型枚举类型枚举类型定义枚举类型实例定义枚举类型实例 enum WeekdaysMon,Tues,Wed,Thur,Fri,Sat,Sun /Mon=0,Tues=1,Wed=2,Thur=3,Fri=4,Sat=5,Sun=62.1.1 值类型值类型枚举类型

6、枚举类型枚举成员赋值枚举成员赋值(1)修改枚举的默认值)修改枚举的默认值(2)修改一个或多个枚举成员的值)修改一个或多个枚举成员的值(3)为多个枚举成员赋同样的值)为多个枚举成员赋同样的值2.1.1 值类型值类型枚举类型枚举类型枚举成员赋值枚举成员赋值(1)修改枚举的默认值)修改枚举的默认值public enum WeekdaysMon=1,Tues,Wed,Thur,Fri,Sat,Sun 枚举枚举Weekdays的第一个枚举值为的第一个枚举值为1 1,其后依次加,其后依次加1.1.2.1.1 值类型值类型枚举类型枚举类型枚举成员赋值枚举成员赋值(2)修改一个或多个枚举成员的值)修改一个或多

7、个枚举成员的值public enum Weekdays Mon,Tues=-1,Wed,Thur,Fri=3,Sat,Sun 第一个被赋值的枚举成员之前的枚举成员,按默认第一个被赋值的枚举成员之前的枚举成员,按默认方式赋值;如为某个枚举成员赋值,则其后的枚举成员方式赋值;如为某个枚举成员赋值,则其后的枚举成员值在此基础上依次加值在此基础上依次加1.1.2.1.1 值类型值类型枚举类型枚举类型枚举成员赋值枚举成员赋值(3)为多个枚举成员赋同样的值)为多个枚举成员赋同样的值 public enum Weekdays Mon,Tues=3,Wed,Thur,Fri=Mon,Sat,Sun被赋值枚举成

8、员一定要位于赋值的枚举成员之后!被赋值枚举成员一定要位于赋值的枚举成员之后!2.1.1 值类型值类型枚举类型枚举类型声明枚举变量声明枚举变量 格式:枚举名格式:枚举名 变量名;变量名;2.1.1 值类型值类型枚举类型枚举类型访问枚举变量访问枚举变量 枚举变量的值必须是枚举成员,枚举成员需要用枚举枚举变量的值必须是枚举成员,枚举成员需要用枚举名引导。名引导。例:例:enum Color red,green,blue Color c=Color.red; int i=(int)c; 或:或: int i=(int)Color.red;2.1.2 引用类型引用类型类类 别别描描 述述引用类型引用类型

9、类类型类类型所有其他类型的最终基类所有其他类型的最终基类:ObjectUnicode字符串:字符串:string用户自定义类型:用户自定义类型:Class接口类型接口类型用户自定义类型用户自定义类型:interface数组类型数组类型单维与多维数组:例如单维与多维数组:例如int 与与int, 委托类型委托类型用户自定义类型:用户自定义类型:delegate2.1.2 引用类型引用类型一个引用类型的变量不存储它们所代表的实际数据,而是一个引用类型的变量不存储它们所代表的实际数据,而是存储实际数据的引用。存储实际数据的引用。引用类型分两步创建:首先在堆栈上创建一个引用变量,引用类型分两步创建:首

10、先在堆栈上创建一个引用变量,然后在堆上创建对象本身,再把这个内存的句柄(也是内然后在堆上创建对象本身,再把这个内存的句柄(也是内存的首地址)赋给引用变量。存的首地址)赋给引用变量。2.1.2 引用类型引用类型例如:例如: string s1, s2; s1=ABCD; s2 = s1; 其中,其中,s1,s2是指向字符串的引用变量,是指向字符串的引用变量,s1的值是字符的值是字符串串“ABCD”存放在内存的地址,这就是对字符串的引用,存放在内存的地址,这就是对字符串的引用,两个引用型变量之间的赋值,使得两个引用型变量之间的赋值,使得s2、s1都是对都是对“ABCD”的引用。如图所解。的引用。如

11、图所解。堆内存堆内存栈内存栈内存ABCDs1s22.1.3 值类型与引用类型关系值类型与引用类型关系可以把值类型与引用类型的值赋给可以把值类型与引用类型的值赋给object类型变量,类型变量,C#用用“装箱装箱”和和“拆箱拆箱”来实现值类型与引用类型之间的转换。来实现值类型与引用类型之间的转换。装箱装箱就是将值类型包装成引用类型的处理过程。当一个值就是将值类型包装成引用类型的处理过程。当一个值类型被要求转换成一个类型被要求转换成一个object对象时,装箱操作自动进行,对象时,装箱操作自动进行,它首先创建一个对象实例,然后把值类型的值复制到这个它首先创建一个对象实例,然后把值类型的值复制到这个

12、对象实例,最后由对象实例,最后由object对象引用这个对象实例。对象引用这个对象实例。拆箱拆箱操作与装箱相反,它是将一个操作与装箱相反,它是将一个object类型转换成值类类型转换成值类型。首先检查由型。首先检查由object引用的对象实例值类型的包装值,引用的对象实例值类型的包装值,然后把实例中的值拷贝到值类型的变量中。然后把实例中的值拷贝到值类型的变量中。2.1.3 值类型与引用类型关系值类型与引用类型关系装箱操作实例:装箱操作实例:using System;class Demo public static void Main ( ) int x = 123; object obj1=x

13、; / 装箱操作装箱操作 x = x+100; / 改变改变x的值的值obj1的值并不会随之改变的值并不会随之改变 Console.WriteLine ( x= 0 , x ); / x=223 Console.WriteLine ( obj1= 0 , obj1 );/obj1=123 2.1.3 值类型与引用类型关系值类型与引用类型关系实例的装箱操作说明如图所示。实例的装箱操作说明如图所示。堆堆x装箱后装箱后123int123xobj1栈栈动动态态地地生生成成一一个个新的对象的实例新的对象的实例2.1.3 值类型与引用类型关系值类型与引用类型关系拆箱操作实例:拆箱操作实例:using Sy

14、stem;class Demo public static void Main ( ) int x = 123, y; object obj1=x; / 装箱操作装箱操作 x = x+100; / 改变改变x的值,此时的值,此时obj1的值并不会随之改变的值并不会随之改变 y = (int) obj1; / 拆箱操作,必须进行强制类型转换拆箱操作,必须进行强制类型转换 Console.WriteLine ( x= 0 , x ); / x=223 Console.WriteLine ( obj1= 0 , obj1 ); / obj1=123 2.2 常量与变量常量与变量类类 别别描描 述述常

15、常 量量整型常量整型常量32(int),32L(long),128U(uint),128UL(ulong),0x20(十六进制十六进制)浮点常量浮点常量3.14(double),3.14F(float),3.14M(decimal)字符常量字符常量A, (转义字符转义字符)字符串常量字符串常量“abcd”C:windowsMicrosoft 表示字符串表示字符串 C:windowsMicrosoft(1) C:windowsMicrosoft 与与 C:windowsMicrosoft 含义相同含义相同(2) He saidHello to me 与与He saidHello to me 含义

16、相同含义相同布尔常量布尔常量true, false符号常量符号常量const double PI=3.1415926 2.2 常量与变量常量与变量变量的声明变量的声明数据类型数据类型 变量名变量名int age;变量名标示符命名规则变量名标示符命名规则只能使用数字、字母、下划线只能使用数字、字母、下划线标识符首字母必须是字母、下划线标识符首字母必须是字母、下划线不能使用关键字作为标示符不能使用关键字作为标示符C#区分大小写区分大小写变量命名规范变量命名规范不要用下划线作为变量名首字符不要用下划线作为变量名首字符不要仅靠大小写区分两个变量不要仅靠大小写区分两个变量小写字母开头小写字母开头如果多个

17、单词命名变量名,从第二个单词开始,每个单词首如果多个单词命名变量名,从第二个单词开始,每个单词首字母大写。例如:字母大写。例如:int averageAge;2.2 常量与变量常量与变量变量初始化变量初始化int a=2; /定义定义a为整型变量,初值为为整型变量,初值为2char b= A; /定义定义b为字符型变量,初值为为字符型变量,初值为Adouble x=2.1234; /定义定义x为实型变量,初值为为实型变量,初值为2.1234也可对被定义的变量的部分变量进行初始化。如也可对被定义的变量的部分变量进行初始化。如int u,v=100,w; /定义定义u,v,w为整型变量,为整型变量

18、,v的初值为的初值为100float y=1.1; /错误,因为错误,因为1.1默认为默认为double类型,范围比类型,范围比float大,因此大,因此double类型向类型向float类型转化时会报错。类型转化时会报错。如需转化:如需转化:float y=(float)1.1或或float y=1.1f2.3 表达式表达式算术运算符算术运算符关系运算符关系运算符逻辑运算符逻辑运算符位运算符位运算符赋值运算符赋值运算符条件运算符条件运算符2.3 表达式表达式算术运算符算术运算符关系运算符关系运算符关系运算符关系运算符逻辑运算符逻辑运算符逻辑运算符逻辑运算符&:短路与(当第一个操作数为假时,则

19、表达式的结果为假,:短路与(当第一个操作数为假时,则表达式的结果为假,不再计算第二个操作数)不再计算第二个操作数)|:短路或(当第一个操作数为真时,则表达式的结果为假,:短路或(当第一个操作数为真时,则表达式的结果为假,不再计算第二个操作数)不再计算第二个操作数)位运算符位运算符位运算符位运算符赋值运算符赋值运算符赋值运算符赋值运算符条件运算符条件运算符条件运算符条件运算符表达式表达式1 ?表达式?表达式2 :表达式:表达式3如果如果“表达式表达式1”的值为非的值为非0(真),(真), 则条件表达式的运则条件表达式的运算结果等于算结果等于“表达式表达式2”的值,否则,运算结果等于的值,否则,运

20、算结果等于“表达表达式式3”的值。的值。 例如:例如:int i=2,j=4;max; max=ij?i:j; /max的值为的值为4表达式中的类型转换表达式中的类型转换在表达式中,操作数的数据类型可以不同,只要相互兼容即在表达式中,操作数的数据类型可以不同,只要相互兼容即可。当表达式中混合了几种不同的数据类型时,可。当表达式中混合了几种不同的数据类型时,C#会基于会基于运算的顺序将它们自动转换成同一类型。运算的顺序将它们自动转换成同一类型。隐式转换:隐式转换:数值范围小的类型数值范围小的类型数值范围大的类型,无符号数值范围大的类型,无符号整数类型整数类型 有符号整数类型有符号整数类型(flo

21、at不能转换为不能转换为decimal)2.4 选择语句选择语句if ( ) if ( ) else if ( ) else (else语句与最近的语句与最近的if匹配匹配)switch条件判断条件判断嵌套嵌套 if机票预定:输出实际机票价格机票预定:输出实际机票价格原价为原价为4000元元5-10月为旺季,头等舱打月为旺季,头等舱打9折,经济舱打折,经济舱打7.5折折其他时间为淡季,头等舱打其他时间为淡季,头等舱打6折,经济舱打折,经济舱打3折折需要两次判断需要两次判断首先判断是旺季还是淡季首先判断是旺季还是淡季再判断头等舱还是经济舱再判断头等舱还是经济舱嵌套嵌套 if 实现实现条件判断条件

22、判断嵌套嵌套 ifif (month = 5 & month = 10) / 旺季旺季 if (type = 1) / 头等舱头等舱 Console.WriteLine(您的机票价格为您的机票价格为:0, price * 0.9); else if (type = 2) / 经济舱经济舱 Console.WriteLine(您的机票价格为您的机票价格为:0, price * 0.75); else / 淡季淡季 / 关键代码回顾关键代码回顾嵌入的一对嵌入的一对 ifelse switch 示例示例从键盘输入学生的百分制成绩,换算成等级成绩从键盘输入学生的百分制成绩,换算成等级成绩90-100:

23、A,80-89:B,70-79:C,60-69:D,其余:,其余:E switch 示例示例Console.Write(“输入学生百分制成绩:输入学生百分制成绩:”);int grade =int.Parse(Console.ReadLine(); switch ( grade/10 ) case 9: case 10: Console.WriteLine( “你的成绩为:你的成绩为:A”); break; case 8: Console.WriteLine( “你的成绩为:你的成绩为:B”); break; case 7: Console.WriteLine( “你的成绩为:你的成绩为:C”

24、); break; case 6: Console.WriteLine( “你的成绩为:你的成绩为:D”); break; default: Console.WriteLine ( “你的成绩为:你的成绩为:E”); break;条件判断的表达式类型条件判断的表达式类型 整型或字符串整型或字符串break 语句的要求:语句的要求:每个每个 case 都有都有 breakdefault 也要有也要有 break特殊情况:特殊情况:case 中没有其他语句时,中没有其他语句时,不需要不需要break语句语句2.4 循环语句循环语句While语句语句do-while语句语句for 语句语句2.4 循

25、环语句循环语句用不同的循环语句求用不同的循环语句求While语句语句using System;public class Sum100 public static void Main ( ) int Sum , i ; Sum=0; i=1; while (i=100) Sum+=i; i+; Console.WriteLine (Sum is + Sum); do-while语句语句using System; public class Sum100 public static void Main ( ) int sum , i ; sum=0; i=1; do sum+=i; i+; whil

26、e (i=100) Console.WriteLine (“sum is + sum); for 语句语句 using System; public class Sum100 public static void Main ( ) int sum , i ; for (sum=0, i=1; i=100; i+) sum+=i; Console.WriteLine (“sum is + sum); for (sum=0, i=1; i=100; sum+=i, i+) ; / 循环体是一空语句循环体是一空语句 Console.WriteLine (“sum is + sum); 2.6 跳转语

27、句跳转语句continue语句语句break语句语句return语句语句2.6 跳转语句跳转语句在循环结构中,在循环结构中, continue 和和 break怎样跳转?怎样跳转?for() continue; for() break; 跳出循环结构跳出循环结构跳到下次循环跳到下次循环在二重循环中会怎样呢?在二重循环中会怎样呢?Continue语句语句下面下面红色框中代码的作用红色框中代码的作用是什么?是什么?int count = 0; for (i = 0; i 3; i+) / 提示输入成绩提示输入成绩 for (j = 0; j 4; j+) Console.Write(第第0个学员的

28、成绩个学员的成绩:, j + 1); score = int.Parse(Console.ReadLine(); sum = sum + score; if (score 85) continue; count+; / 计算平均分并输出计算平均分并输出continue 跳跳出本次循环,出本次循环,继续下一次继续下一次循环循环统计成绩在统计成绩在85分以上的学员人数分以上的学员人数Break语句语句 5个个专卖店促销,每个专卖店每人专卖店促销,每个专卖店每人限购限购3件件衣服,可以随时选择离开,衣服,可以随时选择离开,离店时要结账离店时要结账for(i=0;i5;i+) / 每次进一个专卖店每次

29、进一个专卖店 for(j=0;j3;j+) / 每个店限购每个店限购3件件 if(离开这家店离开这家店) break; 选购一件衣服选购一件衣服 结账结账Break语句语句关键代码关键代码int i = 0, j = 0,count=0;string choice;for (i = 0; i 5; i+) /外层循环控制依次进入下一个专卖店外层循环控制依次进入下一个专卖店 Console.WriteLine(n欢迎光临第欢迎光临第0家专卖店家专卖店,i+1); for (j = 0; j 3; j+) / 内层循环一次买一件衣服内层循环一次买一件衣服 Console.Write(要离开吗要离开

30、吗?y/n); choice = Console.ReadLine(); if (choice = y) / 如果离开,就跳出,结如果离开,就跳出,结账账,进入下一个店,进入下一个店 break; Console.WriteLine(买了一件衣服买了一件衣服); count+; / 买一件衣服买一件衣服 Console.WriteLine(离店结账离店结账,买了买了0件衣服件衣服,count);break 跳出内层循环跳出内层循环choice = y2.6 跳转语句跳转语句for() for() continue; for() for() break; 跳出本层循环,跳出本层循环,继续执行外层

31、循环继续执行外层循环跳出本次循环,跳出本次循环,继续下一次循环继续下一次循环break 和和 continue 用在二重循环中:用在二重循环中:return语句语句语法形式:语法形式: return; 或或 return 表达式;表达式;return语句出现在一个方法内,在方法中执行到语句出现在一个方法内,在方法中执行到return语语句时,程序流程转到调用这个方法处。如果方法没有返回句时,程序流程转到调用这个方法处。如果方法没有返回值(返回类型修饰为值(返回类型修饰为void),则使用),则使用return返回;如果方返回;如果方法有返回值,那么使用法有返回值,那么使用return表达式格式

32、,其后面跟的表表达式格式,其后面跟的表达式就是方法的返回值。达式就是方法的返回值。return语句语句using System;public class Prime100 public static bool prime (int m) for (int i=2; im ; i+) if ( m % i =0 ) return false; / 返回给调用者返回给调用者 return true; 求求1-100之间所有素数之间所有素数 public static void Main ( ) int m , k , n=1 ; Console.Write (0,-4,2 ); for ( m =

33、3; m100; m+=2 ) if ( prime(m) ) / 调用方法调用方法prime Console.Write (0,-4,m ); if (+n %10 =0) Console.WriteLine (n ); Console.Read (); 2.7 数组数组声明一维数组声明一维数组数据类型数据类型 数组名数组名例如:例如:int a1; double f1; string s1;创建一维数组对象创建一维数组对象数据类型数据类型 数组名数组名数组名数组名=new 数据类型数据类型元素个数元素个数或或数据类型数据类型 数组名数组名=new 数据类型数据类型元素个数元素个数一维数组初

34、始化一维数组初始化如何设置大小及初始化?如何设置大小及初始化?/ 使用使用 new 设置大小设置大小/ 创建长度为创建长度为5 5的整型数组的整型数组int array = new int5; / 创建的同时初始化创建的同时初始化int arr = new int5 0,1,2,3,4; int arr = new int 0,1,2,3,4; / 省略长度省略长度int arr = 0,1,2,3,4; / 省略省略new 5方括号中的数字决定数组的长度方括号中的数字决定数组的长度0,1,2,3,4大括号中的元素个数决定数组的长度大括号中的元素个数决定数组的长度一维数组一维数组使用一维数组使

35、用一维数组 for 循环循环for (int i=0;i数组个数数组个数;i+)/数组名数组名 i foreach循环循环foreach(数据类型数据类型 变量名变量名 in 数组名数组名)/循环体循环体变量名变量名:循环变量,依次获取数组中各元素的值,其类型循环变量,依次获取数组中各元素的值,其类型必须与数组的类型一致。必须与数组的类型一致。一维数组一维数组获得数组的长度(元素的个数):获得数组的长度(元素的个数):数组名数组名.Length常作为循环的条件常作为循环的条件/ 循环打印数组元素循环打印数组元素int array = new int5 0, 1 ,2, 3, 4; / 声明并初

36、始化一维数组声明并初始化一维数组for (int i = 0; i array.Length;i+ ) / 输出数组中的所有元素输出数组中的所有元素 Console.WriteLine(arrayi); / 循环打印数组元素循环打印数组元素int array = new int5 0, 1 ,2, 3, 4; / 声明并初始化一维数组声明并初始化一维数组foreach(int i in array) / 输出数组中的所有元素输出数组中的所有元素 Console.WriteLine(i); 常见错误常见错误数组初始值的数目与数组的长度数组初始值的数目与数组的长度不一样不一样 / 循环打印数组元素

37、循环打印数组元素int array = new int5 0, 1 ,2; / 声明并初始化一维数组声明并初始化一维数组for (int i = 0; i array.Length;i+ ) / 输出数组中的所有元素输出数组中的所有元素 Console.WriteLine(arrayi); 初始值的个数必须与数组的长度一样!初始值的个数必须与数组的长度一样!代码错误代码错误一维数组一维数组string arr3;arr3 = new string3 I, like, C# ;int arr1 = new int3;int arr2 = new int31,2;int arr1new int31

38、,2,0正误判断:正误判断:int arr4 = new string3;类型应一致类型应一致2.7 数组数组声明多维数组声明多维数组数据类型数据类型 , , 数组名数组名例如:例如:int , score; double, table;创建多维数组对象创建多维数组对象数据类型数据类型 , , 数组名数组名数组名数组名=new 数据类型数据类型size1,size2,size3 size1,size2,size3分别标明每一维的元素个数分别标明每一维的元素个数或或数据类型数据类型 , , 数组名数组名=new 数据类型数据类型size1,size2,size3二维数组二维数组如何设置二维数组大

39、小及初始化?如何设置二维数组大小及初始化?/ 使用使用 new 设置大小设置大小/ 创建长度为创建长度为2 2* *3的整型数组的整型数组int, array = new int2,3; / 创建的同时初始化创建的同时初始化int, arr = new int2,30,1,2,3,4,5; int , arr = new int,0,1,2,3,4,5; / 省略长度省略长度int, arr = 0,1,2,3,4,5; / 省略省略new 2,3方括号中的数字决定数组的行数和列数方括号中的数字决定数组的行数和列数0,1,23,4,5;大括号中的元素个数决定数组的行数和列数大括号中的元素个数决

40、定数组的行数和列数二维数组二维数组使用二维数组使用二维数组使用双重循环,外循环控制行,内循环控制列。使用双重循环,外循环控制行,内循环控制列。for (int i=0;i数组行数数组行数;i+) for (int j=0;j数组列数数组列数;j+) /数组名数组名 i , j foreach循环循环foreach(数据类型数据类型 变量名变量名 in 数组名数组名)/循环体循环体变量名变量名:循环变量,依次获取数组中各元素的值,其类型必须与数组循环变量,依次获取数组中各元素的值,其类型必须与数组的类型一致。的类型一致。数组与数组与System.Array获得某一维元素个数获得某一维元素个数 数

41、组名数组名.LengthSystem.Array类型是所有数组类型的抽象基类型类型是所有数组类型的抽象基类型任何数组可以使用任何数组可以使用System.Array具有的属性及方法具有的属性及方法获得数组的长度(元素的个数):获得数组的长度(元素的个数):数组名数组名. GetLength(int dimension)二维数组二维数组/ 循环打印数组元素循环打印数组元素int , array = new int2,30,1,2,3,4,5; / 声明并初始化二维数组声明并初始化二维数组for (int i = 0; i array.GetLength(0);i+ ) / 输出数组中的所有元素输

42、出数组中的所有元素 for (int j = 0; j array.GetLength(1);j+ ) Console.WriteLine(arrayi,j); / 循环打印数组元素循环打印数组元素int , array = new int2,30,1,2,3,4,5; / 声明并初始化二维数组声明并初始化二维数组foreach(int i in array) / 输出数组中的所有元素输出数组中的所有元素 Console.WriteLine(i); 二维数组使用二维数组使用2.7 数组数组不规则数组:是一个数组的数组,它的内部每个数组的不规则数组:是一个数组的数组,它的内部每个数组的长度可以不

43、同;长度可以不同;声明不规则数组声明不规则数组数据类型数据类型 数组名数组名例如:例如:int score; double table;创建多维数组对象创建多维数组对象数据类型数据类型 数组名数组名数组名数组名=new 数据类型数据类型 size size表示不规则数组的行数表示不规则数组的行数数组名数组名0=new 数据类型数据类型size0数组名数组名1=new 数据类型数据类型size1数组名数组名size-1=new 数据类型数据类型sizen不规则数组不规则数组不规则数组初始化不规则数组初始化/ 创建的同时初始化创建的同时初始化int array = new int3 ; /arra

44、y是由是由2个数组组成的数组个数组组成的数组array0=new int1,2,3array1=new int1,2,3,4,5array2=new int1,2不规则数组不规则数组/ 循环打印数组元素循环打印数组元素int array = new int3 ; /array是由是由3个数组组成的数组个数组组成的数组array0=new int1,2,3;array1=new int1,2,3,4,5;array2=new int1,2for (int i = 0; i array.Length;i+ ) / 输出不规则数组中的所有元素输出不规则数组中的所有元素 for (int j = 0;

45、 j arrayi.Length;j+ ) Console.WriteLine(arrayij); / 循环打印数组素循环打印数组素int , array = new int2,30,1,2,3,4,5; / 声明并初始化二维数组声明并初始化二维数组foreach(int i in array) / 输出数组中的所有元素输出数组中的所有元素 Console.WriteLine(i); 不规则数组使用不规则数组使用ArrayList(补充补充)System.Collections.ArrayList类是一个特殊的类是一个特殊的数组。通过添加和删除元素,就可以动态改变数数组。通过添加和删除元素,就

46、可以动态改变数组的长度。组的长度。优点:优点:1. 支持自动改变大小的功能支持自动改变大小的功能2. 可以灵活的插入元素可以灵活的插入元素3. 可以灵活的删除元素可以灵活的删除元素4. 可以灵活访问元素可以灵活访问元素局限性:局限性:跟一般的数组比起来,速度上差些跟一般的数组比起来,速度上差些声明数组列表声明数组列表ArrayList 数数组列表名称列表名称=new ArrayList()ArrayList用一个已经实例化的数组初始化数组列表用一个已经实例化的数组初始化数组列表ArrayList 数数组列表名称列表名称=new ArrayList(数数组名称名称)int myArray=new

47、 int61,2,3,4,5,6;ArrayList aList=new ArrayList(myArray);ArrayList添加元素添加元素 -将对象添加到将对象添加到ArrayList的结尾处的结尾处数组列表数组列表.Add(object value)ArrayList aList=new ArrayList();aList.Add(a);aList.Add(b);aList.Add(c);aList.Add(d);aList.Add(e);/结果果为:abcdeArrayList添加元素添加元素 -将对象添加到将对象添加到ArrayList的结尾处的结尾处数组列表数组列表. Inse

48、rt(int index,object value)ArrayListArrayList aList=new ArrayList();aList.Add(a);aList.Add(b);aList.Add(c);aList.Add(d);aList.Add(e);aList.Insert(0,“ff);/结果果为:ffabcde删除元素删除元素-从从ArrayList中移除特定对象的第一个匹配中移除特定对象的第一个匹配项项,注意是第一个注意是第一个ArrayList数组列表数组列表. Remove(object obj) aList.Add(a); aList.Add(b); aList.Ad

49、d(c); aList.Add(d); aList.Add(e); aList.Remove(a); /结果为bcde删除元素删除元素-移除移除ArrayList的指定索引处的元素的指定索引处的元素ArrayList数组列表数组列表. RemoveAt(int index)aList.Add(a);aList.Add(b);aList.Add(c);aList.Add(d);aList.Add(e);aList.RemoveAt(0); /结果为bcde删除元素删除元素-从从ArrayList中移除一定范围的元素。中移除一定范围的元素。 Index表示索引,表示索引,count表示从索引处开始

50、的数目表示从索引处开始的数目ArrayList数组列表数组列表. RemoveRange(int index,int count)aList.Add(a);aList.Add(b);aList.Add(c);aList.Add(d);aList.Add(e);aList.RemoveRange(1,3); /结果为ae删除元素删除元素-从从ArrayList中移除所有元素。中移除所有元素。ArrayList数组列表数组列表. Clear()获取元素值获取元素值-获取数组列表中第获取数组列表中第i个元素个元素ArrayList数组列表数组列表i-1总结总结C#基本数据类型分为哪两类?基本数据类型分为哪两类?值类型与引用类型的区别是什么?值类型与引用类型的区别是什么?选择、循环、跳转语句的使用方法是什么?选择、循环、跳转语句的使用方法是什么?如何定义和初始化数组?如何定义和初始化数组?如何访问数组元素?如何访问数组元素?

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

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