1、第二讲第二讲 C#C#程序设计基础(一)程序设计基础(一)n掌握掌握C#的数据类型及常用运算符和优先级。的数据类型及常用运算符和优先级。 n了解控制流程的两种方法。了解控制流程的两种方法。n理解和掌握布尔逻辑的基本概念及布尔运算符的理解和掌握布尔逻辑的基本概念及布尔运算符的用法。用法。n掌握分支、循环流程控制语句的使用方法。掌握分支、循环流程控制语句的使用方法。n重点和难点:重点和难点:C#的数据类型及常用运算符、布尔的数据类型及常用运算符、布尔运算符的用法、分支结构及循环结构程序设计方运算符的用法、分支结构及循环结构程序设计方法。法。第二讲第二讲 C#C#程序设计基础(一)程序设计基础(一)
2、n2.1 C#数据类型数据类型n2.2 C#运算符与优先级运算符与优先级n2.3 C#流程控制语句流程控制语句2.1 C#2.1 C#数据类型数据类型n2.1.1值类型值类型 n2.1.2引用类型引用类型 n2.1.3值类型间的数据转换值类型间的数据转换 C#C#数据类型数据类型nC#数据类型分为两类:值类型和引用类型。数据类型分为两类:值类型和引用类型。nC#中把基本数据类型规定为值类型,而把一些较中把基本数据类型规定为值类型,而把一些较大的类型规定为引用类型,这种设计方式是为了大的类型规定为引用类型,这种设计方式是为了得到最佳的性能。得到最佳的性能。 n值类型包括整型数类型、布尔类型、浮点
3、类型和值类型包括整型数类型、布尔类型、浮点类型和小数型、结构类型和枚举类型。小数型、结构类型和枚举类型。n引用类型包括类类型、数组、接口类型和委托类引用类型包括类类型、数组、接口类型和委托类型、字符串类型型、字符串类型 。值类型变量和引用类型变量的主要区别值类型变量和引用类型变量的主要区别n存储位置存储位置值类型变量(定长)直接把变量的值保存在堆栈中。值类型变量(定长)直接把变量的值保存在堆栈中。引用类型的变量(变长)把实际数据的地址保存在堆引用类型的变量(变长)把实际数据的地址保存在堆栈中,而实际数据则保存在堆中。栈中,而实际数据则保存在堆中。n赋值操作赋值操作值类型变量在赋值时使用了内存复
4、制的方式,一个变值类型变量在赋值时使用了内存复制的方式,一个变量的操作不会影响到其他变量。量的操作不会影响到其他变量。引用类型变量在赋值时,直接传递的是地址,不存在引用类型变量在赋值时,直接传递的是地址,不存在内存数据的复制,没有性能损失,对一个变量的操作内存数据的复制,没有性能损失,对一个变量的操作会影响到引用同一个对象的另一个变量。会影响到引用同一个对象的另一个变量。.NET基本类型基本类型 在在.NET Framework中,被编译器直接支持的中,被编译器直接支持的数据类型称为基本类型,也被设计成类,每种数据数据类型称为基本类型,也被设计成类,每种数据类型都有属性和方法,在类型都有属性和
5、方法,在.NET Framework类库中类库中都有对应的类名。都有对应的类名。 .NET基本类型包括:基本类型包括:基本值类型:包括整型、浮点类型、小数型、布尔型、基本值类型:包括整型、浮点类型、小数型、布尔型、字符型。字符型。基本引用类型:包括基本引用类型:包括Object类型(对象类型)、类型(对象类型)、String类型。类型。2.1.1 2.1.1 值类型值类型 u声明一个值类型的语法形式为:声明一个值类型的语法形式为:数据类型名数据类型名 变量名称变量名称 = n; 例如:例如: int a = 100; /声明一个整型变量声明一个整型变量a,并赋初值为,并赋初值为100; 注意,
6、注意,C#不允许使用未初始化的变量。不允许使用未初始化的变量。名称名称.NET类名类名说明说明范围范围sbyteSystem.SByte8位有符号整数位有符号整数-2n-12n-1-1(n=8)byteSystem.Byte8位无符号整数位无符号整数02n-1(n=8)shortSystem.Int1616位有符号整数位有符号整数-2n-12n-1-1(n=16)ushortSystem.Uint1616位无符号整数位无符号整数02n-1(n=16)intSystem.Int3232位有符号整数位有符号整数-2n-12n-1-1(n=32)uintSystem.Uint6432位无符号整数位无
7、符号整数02n-1(n=32)longSystem.Int6464位有符号整数位有符号整数-2n-12n-1-1(n=64)ulongSystem.Uint3264位无符号整数位无符号整数02n-1(n=64)floatSystem.Single32位单精度浮点数位单精度浮点数(7位有效数字位有效数字)1.510-45 3.41038doubleSystem.Double64位双精度浮点数位双精度浮点数(15到到16位有效数字位有效数字)5.010-324 1.710308decimalSystem.Decimal 128位高精度十进制数位高精度十进制数(28位到位到29位有效数字位有效数字)
8、1.010-28 7.91028boolSystem.BooleanTrue或或 falsecharSystem.Char16位位Unicode字符字符C#基本值类型基本值类型注:有效数字指从第一个不是零的数字起到最后一个数为止的数位。注:有效数字指从第一个不是零的数字起到最后一个数为止的数位。整数型整数型浮点型浮点型小数型小数型布尔型布尔型字符型字符型关于基本值类型的说明(关于基本值类型的说明(1):):n如果对一个整数的数值没有作出指示,编译器将其默认为如果对一个整数的数值没有作出指示,编译器将其默认为int类型,若不是类型,若不是int型,要加相应后缀,如:型,要加相应后缀,如: uin
9、t ui=9000u; long l=9000L; ulong ul=9000L; n如果对一个非整数的数值没有作出指示,编译器将其默认如果对一个非整数的数值没有作出指示,编译器将其默认为为double类型,如果想指定为类型,如果想指定为float型或小数型,数值要型或小数型,数值要分别加后缀分别加后缀f或或m, 如:如: float f=345.12f; decimal d=10.0m;nbool类型的值和整数类型不能互相转换。类型的值和整数类型不能互相转换。关于基本值类型的说明(关于基本值类型的说明(2):):nchar类型的值是使用单引号括起来的,如类型的值是使用单引号括起来的,如A,汉
10、汉。nC#定义了一种特殊形式的字符数据,即以定义了一种特殊形式的字符数据,即以“”开头的转义字开头的转义字符,转义字符用于在程序中取代特殊的控制字符,如下表所符,转义字符用于在程序中取代特殊的控制字符,如下表所示。示。转义序列转义序列字符字符转义序列转义序列字符字符单引号单引号f换页换页双引号双引号n换行换行反斜杠反斜杠r回车回车0空空t水平水平Taba警告警告v垂直垂直Tabb退格(退格()结构类型结构类型n在实际生活中,经常把一组相关的信息放在一起。在实际生活中,经常把一组相关的信息放在一起。n如,记录一本书的相关信息如书名、作者和内容等。如果如,记录一本书的相关信息如书名、作者和内容等。
11、如果按照简单的管理,每一条记录都要放到三个不同的变量中,按照简单的管理,每一条记录都要放到三个不同的变量中,这样的工作量很大,也不够直观。这样的工作量很大,也不够直观。nC#结构体可以解决这个问题。把一系列相关的变量组织结构体可以解决这个问题。把一系列相关的变量组织成为一个单一实体的过程,称为生成结构的过程。这个单成为一个单一实体的过程,称为生成结构的过程。这个单一实体的类型就叫做结构类型,每一个变量称为结构的成一实体的类型就叫做结构类型,每一个变量称为结构的成员。结构类型的变量采用员。结构类型的变量采用struct来进行声明。声明形式如来进行声明。声明形式如下:下:n 访问修饰符访问修饰符
12、struct 结构名称结构名称n n /主体主体n n下面根据记录书中的信息定义一个结构体,代码下面根据记录书中的信息定义一个结构体,代码如下:如下:npublic struct cententn public string title;n public string author;n public string content;nn 结构类型举例:结构类型举例:nusing System;nnamespace StructExamplen public struct Pointn public int x;n public int y;n public string s;n n class
13、Programn public static void Main()n Point p;n p.x = 3;n p.y = 4;n p.s = ok;n Console.WriteLine(The result is 0,1,2, p.x, p.y, p.s);n Console.ReadLine();n n nn运行结果:运行结果:The result is 3,4,ok枚举类型枚举类型n枚举是值类型的一种特殊形式,为简单类型的常数值提供一种方枚举是值类型的一种特殊形式,为简单类型的常数值提供一种方便记忆的方法。枚举类型的定义形式一般为:便记忆的方法。枚举类型的定义形式一般为:n enum:
14、枚举数据类型枚举数据类型 枚举名枚举名 枚举值表枚举值表;n每一种枚举类型都有一种基本类型,每一种枚举类型都有一种基本类型,long、int、short和和byte等等整数类型均可作为枚举类型的基本类型,如果不指明数据类型,整数类型均可作为枚举类型的基本类型,如果不指明数据类型,则默认为则默认为int型,且第一个元素的值为型,且第一个元素的值为0,其后每一个连续元素的,其后每一个连续元素的值加值加1递增,但是也可以给元素直接赋值定义。如:递增,但是也可以给元素直接赋值定义。如:nenum DaysMon,Tue,Wed,Fri,Sat,Sun; /Mon:0,Tue:1n该枚举名为该枚举名为D
15、ays,枚举值共有,枚举值共有7个,即一周中的个,即一周中的7天,所有被声天,所有被声明为明为Days类型的变量,其值只能是七天中的某一天。例如,当定类型的变量,其值只能是七天中的某一天。例如,当定义义Days类型变量类型变量aDays后,变量后,变量aDay的值为如下形式:的值为如下形式:nDays aDay;naDay=Days.Wed;n又如:又如:nenum Data:long Min=255l,Mid=1024l,Max=32768l;枚举类型举例枚举类型举例nusing System;nnamespace EnumExamplen class Programn /定义枚举型数据定义
16、枚举型数据days,并赋值,并赋值,Sun到到Sat的值分别对应于的值分别对应于0到到6n enum days Sun, Mon, Tue, Wed, Thu, Fri, Sat ;n static void Main()n Console.WriteLine(days.Wed);n Console.WriteLine(int)days.Wed);n /定义定义days型变量型变量myday,为其赋枚举中的值,为其赋枚举中的值Frin days myday = days.Fri;n Console.WriteLine(myday);n Console.ReadLine();n n nn运行结果
17、:运行结果:nWedn3nFri2.1.2 2.1.2 引用类型引用类型 u在基本类型里的引用类型有两个数据类型,即在基本类型里的引用类型有两个数据类型,即Object类型和类型和String类型。类型。 名称名称.NET 库别名库别名说明说明ObjectSystem.Object 根类型,根类型,.NET库中的其它任何类型库中的其它任何类型都是从它派生而来的(包括值类都是从它派生而来的(包括值类型)。型)。StringSystem.String代表代表Unicode字符串字符串关于基本引用类型的说明关于基本引用类型的说明n(1)Object类型类型 在在C#中,中,Object类型是一切类型
18、的最终父类型是一切类型的最终父类型,所有内在的和用户定义的类型归根结底都类型,所有内在的和用户定义的类型归根结底都是由它派生而来的。是由它派生而来的。n(2)String类型(字符串)类型(字符串) C#提供了一个封装良好的提供了一个封装良好的string类,可以方类,可以方便地执行字符串相关的操作,如下所示:便地执行字符串相关的操作,如下所示: string string1=“你好你好”; string string2=“C#”; string string3=string1+string2;n(3)字符串在赋值方面像值类型,而不像引用类型。)字符串在赋值方面像值类型,而不像引用类型。nus
19、ing System;nclass stringexamplenstatic void Main()nstring s1=a string;nstring s2=s1;nConsole.WriteLine(s1 is + s1);nConsole.WriteLine(s2 is + s2);ns1=another string;nConsole.WriteLine(s1 is now +s1);nConsole.WriteLine(s2 is now + s2);nConsole.ReadLine();nnn运行结果如下:运行结果如下:ns1 is a stringns2 is a strin
20、gns1 is now another stringns2 is now a stringn(4)String是是Uncode字符串,即每个英文字母与汉字一样,均字符串,即每个英文字母与汉字一样,均占两个字节,长度均为占两个字节,长度均为1。例如:。例如:nstring str=“ab张三张三cde”;nConsole.WriteLine(str.Length); /输出结果:输出结果:7。n(5)可以使用可以使用Format方法将字符串表示为规定格式。规定格式方法将字符串表示为规定格式。规定格式的一般形式为:的一般形式为:nN,M:格式码格式码n其中其中, :表示其中的内容为可选项。表示其中
21、的内容为可选项。N:从零开始的整数,表示第几个参数。从零开始的整数,表示第几个参数。M:可选整数,表示最小长度。若该参数的长度小于可选整数,表示最小长度。若该参数的长度小于M的绝对值,就用空的绝对值,就用空格填充,如果格填充,如果M为负,则左对齐;如果为负,则左对齐;如果M为正,则右对齐。为正,则右对齐。M默认为默认为0。格式码格式码:可选的格式化代码字符串可选的格式化代码字符串(字母不区分大小写字母不区分大小写)。n如:如:nint i=123;double j=123.453;nString s=String.Format(“i=0,-7:d5,j=1,7:f2”,i,j);nConsol
22、e.WriteLine(s);n结果:结果:i=00123 ,j= 123.45部分格式码部分格式码格式符格式符含义含义示例示例:(int i=10;double x=10.5;)结果结果C将数字按将数字按照金额形照金额形式输出式输出Console.WriteLine(“0:C”,i);¥10.00Console.WriteLine(“0:C”,x);¥10.50 Dn输出整数输出整数(n为数字为数字个数,不个数,不足补足补0)Console.WriteLine(“0:D”,i);10Console.WriteLine(“0:D5”,i);00010Fn小数点后小数点后位数固定位数固定(n为小
23、数为小数点位数,点位数,不足补不足补0)Console.WriteLine(“0:F”,i);10.00Console.WriteLine(“0:F4”,i);10.50002.1.3 2.1.3 值类型之间的数据转换值类型之间的数据转换 u同类整数值类型之间有两种转换方式:同类整数值类型之间有两种转换方式: 隐式转换与显式转换;隐式转换与显式转换;u所有值类型之间的转换,都可以使用所有值类型之间的转换,都可以使用Convert类转换。类转换。 (1)(1)同类整数值类型之间的数据转换同类整数值类型之间的数据转换- -隐式转换隐式转换 从低精度、小范围的数据类型转换为高从低精度、小范围的数据类
24、型转换为高精度、大范围的数据类型,可以用隐式转换。精度、大范围的数据类型,可以用隐式转换。 例如:例如: int k = 1;int k = 1; long i = 2; long i = 2; i = k; / i = k; /隐式转换隐式转换(2)(2)同类整数值类型之间的数据转换同类整数值类型之间的数据转换- -显式转换显式转换 从大范围类型的数据转换为小范围类型的从大范围类型的数据转换为小范围类型的数据的时候,必须采用显式转换,而且特别谨数据的时候,必须采用显式转换,而且特别谨慎,因为此时有丢失数据的危险。如:慎,因为此时有丢失数据的危险。如: long k = 5000; int i
25、 = (int)k 所有的隐式转换也都可以采用显式转换的形所有的隐式转换也都可以采用显式转换的形式来表示。如:式来表示。如: int i = 10; long j = (long)i; (3)使用)使用Convert类进行所有值类型间的转换类进行所有值类型间的转换 命命 令令结结 果果Convert.ToBoolean(val) val转化为转化为boolConvert.ToByte(val)val转化为转化为byteConvert.ToChar(val)val转化为转化为charConvert.ToDecimal(val)val转化为转化为decimalConvert.ToDoube(val
26、)val转化为转化为doubleConvert.ToInt16(val)val转化为转化为shortConvert.ToInt32(val)val转化为转化为intConvert.ToInt64(val)val转化为转化为longConvert.ToSByte(val)val转化为转化为sbyteConvert.ToSingle(val)val转化为转化为floatConvert.ToString(val)val转化为转化为stringConvert.ToUInt16(val)val转化为转化为ushortConvert.ToUInt32(val)val转化为转化为unitConvert.To
27、UInt64(val)val转化为转化为ulongConvert类示例类示例nstatic void Main()nndouble balance,interestRate;nConsole.WriteLine(请输入当前余额(元):请输入当前余额(元):);nbalance=Convert.ToDouble(Console.ReadLine();nConsole.WriteLine(请输入年利率:请输入年利率:);ninterestRate=1+Convert.ToDouble(Console.ReadLine()/100.0;nbalance*=interestRate;nConsole.
28、WriteLine(1年后的余额将达年后的余额将达0:f2元。元。,balance);nConsole.ReadLine();n2.2 2.2 运算符与优先级运算符与优先级nC#运算符分为以下两大类:运算符分为以下两大类:算术运算符算术运算符n数学运算符:数学运算符:+、-,*,/,%n递增递减运算符:递增递减运算符:+,-(用于前缀用于前缀); +,-(用于后缀用于后缀)n算术赋值运算符:算术赋值运算符:=,*=,/=,%=,+=,-=布尔运算符布尔运算符 下面只讲算术运算符,第二节再讲布尔运算符。下面只讲算术运算符,第二节再讲布尔运算符。数学表达式示例数学表达式示例nint var1,va
29、r2=5,var3=6;nvar1=var2+var3;nvar1=var2-var3;nvar1=var2*var3;nvar1=var2/var3;nvar1=var2%var3;递增递减运算符示例递增递减运算符示例nint var1,var2=5;nvar1=+var2; /var1的值是的值是var2+1,var2递增递增1nvar1=-var2; /var1的值是的值是var2-1,var2递减递减1nvar1=var2+; /var1的值是的值是var2,var2递增递增1nvar1=var2-; /var1的值是的值是var2,var2递减递减1算术赋值运算符示例算术赋值运算符示
30、例nint var1,var2=5;nvar1=var2;nvar1+=var2;/ var1= var1+var2nvar1-=var2;/ var1= var1- var2nvar1*=var2;/ var1= var1* var2nvar1/=var2;/ var1=var1/var2nvar1%=var2;/ var1= var1% var2算术运算符(优先级高算术运算符(优先级高低)低)组组运算符运算符一元运算符(一元运算符(1)+,-,+,-(用作前缀)(用作前缀) 乘乘/除除/取余运算符取余运算符*,/,%加加/减运算符减运算符+,-赋值运算符赋值运算符=,*=,/=,%=,+=
31、,-=一元运算符(一元运算符(2)+ -(用作后缀)(用作后缀)2.3 C#流程控制语句流程控制语句n2.3.1 布尔逻辑布尔逻辑n2.3.2 C#流程控制语句流程控制语句流程控制的两种方法流程控制的两种方法n分支分支 有条件地执行代码。条件取决于计算的结果。有条件地执行代码。条件取决于计算的结果。n循环循环 重复执行相同的语句(重复执行一定的次数,重复执行相同的语句(重复执行一定的次数,或者在满足测试条件后停止执行)。或者在满足测试条件后停止执行)。 流程控制中要用布尔逻辑来控制流程的走向。流程控制中要用布尔逻辑来控制流程的走向。2.3.1 布尔逻辑布尔逻辑n布尔逻辑的基本概念布尔逻辑的基本
32、概念n布尔运算符布尔运算符n布尔表达式布尔表达式n常用运算符的优先级常用运算符的优先级布尔逻辑的基本概念布尔逻辑的基本概念n布尔布尔(bool)类型可以有两个值:类型可以有两个值:true或或false。n布尔布尔(bool)类型常常用于存储某些操作(如比较)类型常常用于存储某些操作(如比较)的结果,以便操作这些结果。的结果,以便操作这些结果。n如:要根据变量如:要根据变量myVal是否小于是否小于10,来确定是否,来确定是否执行代码,为此,需要确定执行代码,为此,需要确定“myVal小于小于10”的真的真假。假。若为真,若为真,“myVal小于小于10”的布尔结果为的布尔结果为true。若为
33、假,若为假,“myVal小于小于10”的布尔结果为的布尔结果为false。布尔运算符布尔运算符n布尔比较运算符:根据比较关系的真假来确定布尔比较运算符:根据比较关系的真假来确定true还是还是false。包括:。包括:=,!,!=,=。n布尔条件运算符:用于判断一个或多个条件是否布尔条件运算符:用于判断一个或多个条件是否满足指定的规则,主要包括:满足指定的规则,主要包括:!,&,|。 布尔比较运算符示例布尔比较运算符示例nbool var1nint var2=8,var3=5;nbool var1=(va2=var3);nvar1=(va2!=var3);nvar1=(va2var3);nva
34、r1=(va2=var3);n/以上以上var1必须是布尔型,必须是布尔型,var2、var3可以是各种类型。可以是各种类型。布尔条件运算符示例布尔条件运算符示例nbool var1,var2=true,var3=false;nvar1=!var2;nvar1=var2&var3;/条件与条件与nvar1=var2|var3;/条件或条件或n/var1、var2、var3必须是布尔型。必须是布尔型。布尔表达式布尔表达式 布尔表达式是指结果为布尔值的表达式。如:布尔表达式是指结果为布尔值的表达式。如:nbool var;nint ix=3,iy=5;nchar cx=g,cy=h;nstring
35、 sx=abc,sy=def;nvar=ixvar3)&(var4var3)|(var4var5)&(var4!=0);nConsole.WriteLine(“var1=0 var2=1”,var1,var2);n运行结果:运行结果:nvar1=True var2=True常用运算符优先级(优先级高常用运算符优先级(优先级高低)低)组组运算符运算符初级运算符初级运算符()()一元运算符(一元运算符(1)+,-,!,!+,-(用作前缀)(用作前缀) 乘乘/除运算符除运算符*,/,%加加/减运算符减运算符+,-布尔比较运算符(布尔比较运算符(1),=布尔比较运算符(布尔比较运算符(2)=,!=布尔
36、条件与运算符布尔条件与运算符&布尔条件或运算符布尔条件或运算符|三元运算符三元运算符?:赋值运算符赋值运算符=,*=,/=,%=,+=,-=一元运算符(一元运算符(2)+ -(用作后缀)(用作后缀)2.3.2 C#2.3.2 C#流程控制语句流程控制语句分支语句分支语句循环语句循环语句跳转语句跳转语句 1.1.分支语句分支语句 分支是控制下一步要执行哪些代码的过程,分支是控制下一步要执行哪些代码的过程,要跳转到的代码行由某个条件语句来控制。这个要跳转到的代码行由某个条件语句来控制。这个条件语句使用布尔逻辑,将测试值和可能值进行条件语句使用布尔逻辑,将测试值和可能值进行比较来决定程序走向。比较来
37、决定程序走向。 C#中的中的3种分支技术如下:种分支技术如下:n三元运算符三元运算符 ?:nif语句语句nswitch语句语句三元运算符三元运算符n使用三元运算符是进行比较的最简单的方式。其语使用三元运算符是进行比较的最简单的方式。其语法如下:法如下:n?:n 其中,其中,n 计算计算可得到一个布尔值,三元运算符的可得到一个布尔值,三元运算符的结果根据这个值来确定是结果根据这个值来确定是,还是还是。n 三元运算符的示例如下:三元运算符的示例如下:nstring resultStr=(myInteger10)?”小于小于10”:”大于等于大于等于10”;n 三元运算符比较适合于简单赋值语句,根据
38、比三元运算符比较适合于简单赋值语句,根据比较结果执行大量代码的情形应使用较结果执行大量代码的情形应使用if语句。语句。if语句语句 功能:根据测试条件布尔表达式的值(功能:根据测试条件布尔表达式的值(true或或false)选择要执行的语句序列。典型结构如下:选择要执行的语句序列。典型结构如下:if (if (测试条件测试条件布尔表达式布尔表达式) ) 测试条件测试条件布尔表达式为真时执行的语句序列布尔表达式为真时执行的语句序列 elseelse 测试条件测试条件布尔表达式为假时执行的语句序列布尔表达式为假时执行的语句序列 注:以后,凡是一个语句序列包含多于一条的语句,注:以后,凡是一个语句序
39、列包含多于一条的语句,就必须使用大括号就必须使用大括号 将语句序列括起来。将语句序列括起来。u常见形式有:常见形式有: 1) 单独使用单独使用if语句,不加语句,不加else语句语句if (if (布尔表达式布尔表达式) ) 布尔表达式为真时执行的语句序列布尔表达式为真时执行的语句序列 2) if语句和语句和else语句配套使用的单条件测试语句配套使用的单条件测试if (if (布尔表达式布尔表达式) ) 布尔表达式为真时执行的语句序列布尔表达式为真时执行的语句序列 elseelse 布尔表达式为假时执行的语句序列布尔表达式为假时执行的语句序列 3) else 3) else块中嵌套块中嵌套i
40、fif语句的多条件测试语句的多条件测试if (if (布尔表达式布尔表达式1)1) 布尔表达式布尔表达式1 1为真时执行的语句序列为真时执行的语句序列 else if (else if (布尔表达式布尔表达式2)2) / /注意,注意,else和和if之间有一个空格。之间有一个空格。 布尔表达式布尔表达式2 2为真时执行的语句序列为真时执行的语句序列 else if (else if (布尔表达式布尔表达式3)3) 布尔表达式布尔表达式3 3为真时执行的语句序列为真时执行的语句序列 elseelse 所有条件均为假时执行的语句序列所有条件均为假时执行的语句序列 n/ if语句举例语句举例: 任
41、意输入一个整数任意输入一个整数i,,先判断合法性,先判断合法性,再判断再判断i是否为是否为”1”, 为为“1”打印打印“i is one”,不,不为为”1”,打印,打印“i is not one”。nusing System;nnamespace ConsoleAppIfExamplenclass IfExamplenstatic void Main(string args)n int i;n Console.Write(i=);n i=Convert.ToInt32(Console.ReadLine();n if (i=1)n n Console.WriteLine(i is one);n
42、n else n n Console.WriteLine(i is not one);n n Console.ReadLine();n nnswitch 语句语句uswitch 语句也叫语句也叫case语句语句,可以一次将测试变量与多个可能可以一次将测试变量与多个可能值进行比较,这种测试仅限于可能值是离散的值类型常量。值进行比较,这种测试仅限于可能值是离散的值类型常量。uswitch语句一般形式为:语句一般形式为:switch (条件表达式条件表达式) case 常量表达式常量表达式1: 语句序列语句序列1 break; case 常量表达式常量表达式2: 语句序列语句序列2 break; d
43、efault: 语句序列语句序列 break; 每个每个case后的语句序列可不用后的语句序列可不用大括号大括号, 但是每个但是每个case块的最后块的最后一句一定要是一句一定要是break语句。语句。switchswitch语句注意事项:语句注意事项: a) a) 如果某个如果某个casecase块为空,块为空,则会从这个则会从这个casecase块直接跳到块直接跳到下一个下一个casecase块上。块上。 b)b)在一个在一个switchswitch中,不中,不能有相同的两个能有相同的两个casecase标记。标记。 switch (条件表达式条件表达式) case 常量表达式常量表达式1
44、: 语句序列语句序列1 break; case 常量表达式常量表达式2: 语句序列语句序列2 break; default: 语句序列语句序列 break; SwitchSwitch语句举例语句举例using System;namespace SwitchExample public class Program public static void Main() Console.WriteLine(一年中你最喜欢那个季节?一年中你最喜欢那个季节?); string Season = Console.ReadLine(); /从键盘读取用户输入内容从键盘读取用户输入内容 Console.Writ
45、e(你喜欢你喜欢0 , Season); switch (Season) /switch分支分支 case 春天春天: Console.WriteLine(这样的天气最适合郊游了,相信你肯定喜欢!这样的天气最适合郊游了,相信你肯定喜欢!); break; case 夏天夏天: Console.WriteLine(火辣的天气,去游泳馆会是一个不错的选择!火辣的天气,去游泳馆会是一个不错的选择!); break; case 秋天秋天: Console.WriteLine(秋高气爽,带上你的家人去旅行吧!秋高气爽,带上你的家人去旅行吧!); break; case 冬天冬天: Console.Wri
46、teLine(白雪茫茫的,去滑雪吧,绝对刺激!白雪茫茫的,去滑雪吧,绝对刺激!); break; default: Console.WriteLine(请确认你输入的季节请确认你输入的季节); break; Console.Read(); 2.2.循环语句循环语句 循环就是重复执行一些语句。循环语句包括:循环就是重复执行一些语句。循环语句包括:udo-while语句语句uwhile语句语句uforeach语句语句ufor语句语句用于循环次数不定的情形。用于循环次数不定的情形。用于循环次数一定的情形。用于循环次数一定的情形。do-while语句语句 do-while循环的结构如下:循环的结构如下
47、: do 语句序列语句序列 while (条件条件); 注:注:while语句后面的分号是必须的。语句后面的分号是必须的。 do-while循环先执行循环体内的语句序列,然后进行一循环先执行循环体内的语句序列,然后进行一个布尔测试,如果测试的结果为个布尔测试,如果测试的结果为true,就继续循环。,就继续循环。 如:如:nint i=1;ndonn Console.WriteLine(“0”,i+);n while (i=10);例例2-3 do-while循环举例。给定当前余额、年利率及预期余额,计算几年循环举例。给定当前余额、年利率及预期余额,计算几年后存款余额达到预期余额。后存款余额达到
48、预期余额。ndouble balance,interestRate,targetBalance;nConsole.WriteLine(请输入当前余额(元)请输入当前余额(元):);nbalance=Convert.ToDouble(Console.ReadLine();nConsole.WriteLine(请输入年利率:请输入年利率:); ninterestRate=1+Convert.ToDouble(Console.ReadLine()/100.0;nConsole.WriteLine(请输入预期余额(元):请输入预期余额(元):);ntargetBalance=Convert.ToDou
49、ble(Console.ReadLine();nint totalYears=0;ndo n balance*=interestRate;n +totalYears;nnwhile (balancetargetBalance);nConsole.WriteLine(在在0年内,余额将达年内,余额将达1元。元。,totalYears,balance);nConsole.ReadLine();while语句语句While循环的结构为:循环的结构为:while (条件条件) 语句序列语句序列 while循环非常类似于循环非常类似于do-while循环,区别在于:循环,区别在于:while循环中的布尔
50、测试是在循环开始时进行,循环体可能一次都循环中的布尔测试是在循环开始时进行,循环体可能一次都不执行,而不执行,而do-while循环是在最后进行布尔测试,循环体至循环是在最后进行布尔测试,循环体至少执行一次。如:少执行一次。如:nint i=1;nwhile (i=10)nn Console.WriteLine(“0”,i+);n例例2-4 while循环举例。给定当前余额、年利率及预期余额,计算几年后存循环举例。给定当前余额、年利率及预期余额,计算几年后存款余额达到预期余额。款余额达到预期余额。ndouble balance,interestRate,targetBalance;nConso
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。