《C程序设计教程.pptx》由会员分享,可在线阅读,更多相关《C程序设计教程.pptx(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第二章第二章第二章第二章 C#程序设计基础程序设计基础3学习重点C#语言中的常量、变量、数据类型、运算符、表达式等的概念C#语言中一维数组和字符串的概念及其使用方法4学习难点枚举型、结构型数据类型转换运算符的运算规则多维数组、数组型数组的概念第1页/共51页2023/2/212第二章第二章第二章第二章 C#程序设计基础程序设计基础主要内容主要内容 2.12.1 常量与变量常量与变量 2.22.2C#C#的数据类型的数据类型 2.32.3 运算符与表达式运算符与表达式 2.42.4数组和字符串数组和字符串第2页/共51页2023/2/2132.12.1常量与变量常量与变量常量与变量常量与变量2.
2、1.1常量2.1.2变量返回返回第3页/共51页2023/2/2142.1.12.1.1常量常量在程序运行过程中,其值始终不变的量称之为常量。整型常量整型常量又分为:有符号的整型常量、无符号整型常量、长整型常量。无符号整型常量在书写时添加u或U标志。长整型常量在书写时添加l或L标记。浮点型常量浮点型常量又分为:单精度浮点型常量和双精度型常量。单精度浮点型常量在书写时添加f或F标记,而双精度型常量添加d或D标记。第4页/共51页2023/2/2152.1.12.1.1常量常量小数型常量小数型常量的后面必须添加m或M标记,字符型常量字符型常量是一个标准的Unicode字符,使用两个英文单引号来标记
3、。C#语言还允许使用一种特殊形式的字符常量,即以反斜杠符()开头,后跟字符的字符序列,称之为转义字符常量,用它来表示控制及不可见的字符。第5页/共51页2023/2/2162.1.12.1.1常量常量常用的转义字符转义符说明单引号双引号反斜线符0空字符uhhhh使用十六进制形式的Unicode字符,例如字符u0041表示Unidcode字符Aa响铃(警报)符,与u0007匹配b退格符,与u0008匹配tTab符,与u0009匹配。r回车符,与u000D匹配。v垂直Tab符,与u000B匹配。f换页符,与u000C匹配。n换行符,与u000A匹配。0dd使用八进制形式的ASCII字符,例如字符0
4、40表示ASCII的空格字符xhh使用十六进制形式的ASCII字符,例如字符x41表示ASCII字符A第6页/共51页2023/2/2172.1.12.1.1常量常量布尔型常量布尔型常量只有两个,一个是true,表示逻辑真;另一个false,表示逻辑假。字符串常量字符串常量表示若干个Unicode字符组成的字符序列,使用两个英文双引号来标记,第7页/共51页2023/2/2182.1.2 2.1.2 变量变量变量的概念在程序运行过程中,其值可以被改变的量称之为变量。变量名每个变量都必须有一个名字,即变量名。变量命名应遵循标识符的命名规则,如必须以字母、下划线(_)和汉字打头,可包含字母、数字、
5、下划线和汉字,不能包含空格,不能使用C#保留字等。变量值程序运行时,系统自动为变量分配内存单元,用来存储变量的值。在程序中,通过变量名来引用变量的值。第8页/共51页2023/2/2192.1.2 2.1.2 变量变量变量的定义使用变量之前必须先指定变量名、变量值的数据类型,该操作称为变量的定义。其一般形式为:类型标识符变量名1,变量名2,;inta,b,c;/a,b,c为整型变量在定义变量时,应注意以下几点:在多个相同类型的变量时,各变量名之间用逗号间隔,类型标识符与变量名之间至少用一个空格间隔;最后一个变量名之后必须以“;”号结尾;变量定义必须放在变量使用之前;第9页/共51页2023/2
6、/21102.1.2 2.1.2 变量变量变量的初始化变量初始化就是指定变量的初始值。变量的初始化有两种形式。一种是在定义变量的同时实始化,另一种是先定义变量再初始化。前者的一般形式为:类型标识符变量名1初值1,变量名2初值2,;例如:inta=12,b=-24,c=10;注意,C#允许在定义变量时部分初始化。例如:floatf11.25,f23.6,f3;后者允许为多个变量设置不同的初始值,也允许为多个变量设置相同的初始值。例如,inta,b,c;a=1;b=2;c=3;第10页/共51页2023/2/21112.1.2 变量变量实例2-1创建一个Windows应用程序,展示变量的使用方法,
7、包括定义、初始化和引用。第11页/共51页2023/2/21122.2 2.2 C#的数据类型的数据类型2.2.1简单类型2.2.2枚举型enum2.2.3结构型struct2.2.4数据类型转换返回返回第12页/共51页2023/2/21132.2.1 简单类型简单类型C#中简单类型类型别名长度(位)类型别名长度(位)sbyteSystem.Sbyte8longSystem.Int6464byteSystem.Byte8ulongSystem.UInt6464charSystem.Char16floatSystem.Single32shortSystem.Int1616doubleSyste
8、m.Double64ushortSystem.UInt1616decimalSystem.Decimal128intSystem.Int3232boolSystem.Boolean1uintSystem.UInt3232第13页/共51页2023/2/21142.2.1 简单类型简单类型整数型类型范围长度sbyte有符号字节型-1281278位byte字节型02558位char字符型U+0000U+FFFF(Unicode字符集中的字符)16位short短整型-32,76832,76716位ushort 无符号短整型065,53516位int整型-2,147,483,6482,147,483,
9、64732位uint无符号整型04,294,967,29532位long长整型-9,223,372,036,854,775,8089,223,372,036,854,775,80764位ulong 无符号长整型018,446,744,073,709,551,61564位第14页/共51页2023/2/21152.2.1 简单类型简单类型浮点型浮点型一般用来表示一个有确定值的小数,float型:取值范围在1.5e45到3.4e38,精度为7位double型:取值范围在5.0e324到1.7e308,精度为15到16位小数型decimaldecimal型:取值范围在1.010e28至7.910e2
10、8,精度为28到29位。布尔型bool布尔型用来表示逻辑真或逻辑假,因此只有两种取值:true或false,第15页/共51页2023/2/21162.2.2 枚举型枚举型enum枚举型实质就是使用符号来表示的一组相互关联的数据。enumMonthsJan,Feb,Mar,Apr,May,Jun,Jul,Augt,Sep,Oct,Nov,Dec。枚举元素的数据值是确定的,一旦声明就不能在程序的运行过程中更改;枚举元素的个数是有限的,同样一旦声明就不能在程序的运行过程中增减;默认情况下,枚举元素的值是一个整数,第一个枚举数的值为0,后面每个枚举数的值依次递增1;如果需要改变默认的规则,则重写枚举
11、元素的值即可第16页/共51页2023/2/21172.2.2 枚举型枚举型enum【实例2-2】创建一个Windows应用程序,展现枚举型的使用方法第17页/共51页2023/2/21182.2.3 结构型结构型struct结构型的定义C#的结构型必须使用struct来标记。C#的结构型的成员包含数据成员、方法成员等。其中,数据成员表示结构的数据项,方法成员表示对数据项的操作。一个完整的结构体示例如下:structStudentpublicintno;publicstringname;publiccharsex;publicintscore;第18页/共51页2023/2/21192.2.3
12、 结构型结构型struct结构型的使用自定义的结构型与简单类型(如int)一样,可用来定义变量。一旦定义了结构型变量,就可以通过该变量来引用其任意成员。引用结构型的成员的格式如下:结构型变量.结构型成员Students;/定义结构型变量ss.no=10001;/为s的成员变量no赋值s.name=许恒;/为s的成员变量name赋值第19页/共51页2023/2/21202.2.2 枚举型枚举型enum【实例2-3】创建一个Windows应用程序,展示结构型的使用方法第20页/共51页2023/2/21212.2.4 数据类型转换数据类型转换隐式转换隐式转换一般在不同类型的数据进行混合运算时候发
13、生,当编译器能判断出转换的类型,而且转换不会带来精度的损失时,C#语言编译器会自动进行隐式转换。隐式转换遵循以下规则:如果参与运算的数据类型不相同,则先转换成同一类型,然后进行运算;转换时按数据长度增加的方向进行,以保证精度不降低,例如int型和long型运算时,先把int数据转成long型后再进行运算;所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算;byte型和short型参与运算时,必须先转换成int型;char可以隐式转换为ushort、int、uint、long、ulong、float、double或decimal,但是不
14、存在从其他类型到char类型的隐式转换。第21页/共51页2023/2/21222.2.4 数据类型转换数据类型转换显示转换显示转换就是需要明确要求编译器完成的转换,也称强制类型转换,在转换时,需要用户明确指定转换的类型,强制类型转换的一般形式为:(类型说明符)(待转换的数据)其含义是:把特转换的数据的类型强制转换成类型说明符所表示的类型。显示转换有可能造成精度损失.第22页/共51页2023/2/21232.2.4 数据类型转换数据类型转换【注意】在使用强制转换时应注意以下问题:待转换的数据不是单个变量时,类型说明符和特转换的数据都必须加圆括号。无论是强制转换或是隐式转换,都只是为了本次运算
15、的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。C#允许用System.Convert类提供的类型转换方法来转换数据类型,常用的转换方法有:ToBoolean、ToByte、ToChar、ToInt32、ToSingle、ToString、ToDateTime等,分别表示将指定数据转换为布尔值、字节数、字符编码、整型数、单精度数、字符串、日期等第23页/共51页2023/2/21242.3 运算符与表达式运算符与表达式2.3.1算术运算符与表达式2.3.2赋值运算符与表达式2.3.3关系运算符与表达式2.3.4逻辑运算符与表达式返回返回第24页/共51页2023
16、/2/21252.3.1算术运算符与表达式算术运算符与表达式算术运算符用于数值运算。C#算术运算符包括+(加)、-(减)、*(乘)、/(除)、%(求余数)、+(自增)、-(自减)共七种。+、-、*、/、%是二目运算符,两个整数相除的结果为整数第25页/共51页2023/2/21262.3.1算术运算符与表达式算术运算符与表达式+、-两种运算符都是单目运算符,具有右结合性(也就是优先同运算符右边的变量结合,使该变量的值增加1或减小1),而且它们的优先级比其他算术运算符高。当+或-运算符置于变量的左边时,称之为前置运算,表示先进行自增或自减运算再使用变量的值当+或-运算符置于变量的右边时,称之为后
17、置运算,表示先引用变量的值再自增或自减运算。第26页/共51页2023/2/21272.3.1 算术运算符与表达式算术运算符与表达式【实例2-4】算术运算符的应用测试第27页/共51页2023/2/21282.3.2 赋值运算符与表达式赋值运算符与表达式简单赋值运算符其一般形式为:变量=表达式其功能是先计算表达式的值再赋给左边的变量。赋值运算符具有右结合性。【注意】在使用赋值表达式时,应注意以下两点:在赋值运算中,如果赋值号两边的数据类型不同,则系统将自动先将赋值号右边的类型将转换为左边的类型再赋值;在赋值运算中,不能把右边数据长度更大的数值类型隐式转换并赋值给左边数据长度更小的数值类型。第2
18、8页/共51页2023/2/21292.3.2 赋值运算符与表达式赋值运算符与表达式【实例2-5】赋值运算符及隐式数据类型转换应用测试第29页/共51页2023/2/21302.3.3 关系运算符与表达式关系运算符与表达式关系运算符用来对两个操作数比较,以判断两个操作数之间的关系。C#的关系运算符有=、!=、=,分别是相等、不等、小于、大于、小于等于、大于等于运算。关系运算符的优先级低于算术运算符。由关系运算符组成的表达式称为关系表达式。关系表达式的运算结果只能是布尔型值,要么是true,要么是false。第30页/共51页2023/2/21312.3.4 逻辑运算符与表达式逻辑运算符与表达式
19、C#的逻辑运算符包括!、&或&、|或|、,分别是逻辑“非”运算、逻辑“与”运算、逻辑“或”运算、逻辑“异或”运算。逻辑运算符的优先级低于关系运算符的优先级,但高于赋值运算符的优先级。由逻辑运算符组成的表达式称为逻辑表达式。逻辑表达式的运算结果只能是布尔型值,要么是true,要么是false。逻辑非运算符“!”是,表示对某个布尔型操作数的值求反,即当操作数为false时运算符返回true。第31页/共51页2023/2/21322.3.4 逻辑运算符与表达式逻辑运算符与表达式逻辑与运算符“&”或“&”表示对两个布尔型操作数进行与运算,当且仅当两个操作数均为true时,结果才为true。运算符“&
20、”与运算符“&”的主要区别是,当第一个操作数为false时,前者不再计算第二个操作数的值。逻辑或运算符“|”或“|”表示对两个布尔型操作数进行或运算,当两个操作数中只要有一个操作数为true时,结果就为true。运算符“|”与运算符“|”的主要区别是,当第一个操作数为true时,前者不再计算第二个操作数的值。逻辑异或运算符“”表示对两个布尔型操作数进行异或运算,当且仅当只有一个操作数为true时,结果才为true,注意或运算与异或运算的区别。第32页/共51页2023/2/21332.3.4 逻辑运算符与表达式逻辑运算符与表达式【实例2-6】创建一个Windows应用程序,测试关系运算符与逻辑
21、运算符第33页/共51页2023/2/21342.4 数组和字符串数组和字符串2.4.1一维数组2.4.2多维数组2.4.3数组型的数组2.4.4字符串string返回返回第34页/共51页2023/2/21352.4.1一维数组一维数组数组是一种由若干个变量组成的集合,数组中包含的变量称为数组元素,它们具有相同的类型。数组元素可以是任何类型,但没有名称,只能通过索引(又称下标,表示位置编号)来访问。数组有一个“秩”,它表示和每个数组元素关联的索引的个数。数组的秩又称为数组的维度。“秩”为1的数组称为一维数组,“秩”大于1的数组称为多维数组。一维数组的元素个数称为一维数组的长度。一维数组长度为
22、0时,称之为空数组。一维数组的索引从零开始,具有n个元素的一维数组的索引是从0到n-1。第35页/共51页2023/2/21362.4.1一维数组一维数组一维数组的声明和创建声明和创建一维数组的一般形式如下:数组类型数组名=new数组类型数组长度一维数组也可以先声明后创建。一维数组的初始化如果在声明和创建数组时没有初始化数组,则数组元素将自动初始化为该数组类型的默认初始值。初始化数组有多种方式:一是在创建数组时初始化,二是先声明后初始化,三是先创建后初始化。第36页/共51页2023/2/21372.4.1一维数组一维数组一维数组的初始化创建时初始化数组类型数组名=new数组类型数组长度初始值
23、列表其中,数组长度可省略。如果省略数组长度,系统将根据初始值的个数来确定一维数组的长度。如果指定了数组长度,则C#要求初始值的个数必须和数组长度相同,初始值之间以逗号作间隔。创建时初始化一组数组可采用如下简写形式:数组类型数组名=初始值列表第37页/共51页2023/2/21382.4.1一维数组一维数组一维数组的初始化先声明后初始化C#允许先声明一维数组,然后再初始化各数组元素。其一般形式如下:数组类型数组名;数组名=new数组类型数组长度初始值列表;先创建后初始化C#允许先声明和创建一维数组,然后逐个初始化数组元素。其一般形式如下:数组类型数组名=new数组类型数组长度;数组元素=值;第3
24、8页/共51页2023/2/21392.4.1一维数组一维数组一维数组的使用数组是若干个数组元素组成的。每一个数组元素相当于一个普通的变量,可以更改其值,也可以引用其值。使用数组元素的一般形式如下:数组名索引一维数组的操作C#的数组类型是从抽象基类型System.Array派生的。Array类的Length属性返回数组长度。Array类的方法成员:Clear、Copy、Sort、Reverse、IndexOf、LastIndexOf、Resize等,分别用于清除数组元素的值、复制数组、对数组排序、反转数组元素的顺序、从左至右查找数组元素、从右到左查找数组元素、更改数组长度等。Sort、Reve
25、rse、IndexOf、LastIndexOf、Resize只能针对一维数组进行操作。第39页/共51页2023/2/21402.4.1一维数组一维数组【实例2-7】数组及其应用演示第40页/共51页2023/2/21412.4.2 多维数组多维数组多维数组的声明和创建声明和创建多维数组一般形式如下:数组类型逗号列表数组名=new数组类型维度长度列表逗号列表的逗号个数加1就是维度数,即如果逗号列表为一个逗号,则称为二维数组;如果为两个逗号,则称为三维数组,依此类推。维度长度列表中的每个数字定义维度的长度,数字之间以逗号作间隔。第41页/共51页2023/2/21422.4.2 多维数组多维数组
26、多维数组的初始化以维度为单位组织初始化值,同一维度的初始值放在一对花括号之中。可以省略维度长度列表,系统能够自动计算维度和维度的长度。但注意,逗号不能省略。初始化多维数组可以使用简写格式。但如果先声明多维数组再初始化,就不能采用简写格式。多维数组不允许部分初始化。多维数组的使用数组名索引列表第42页/共51页2023/2/21432.4.3 数组型的数组数组型的数组数组型的数组是一种由若干个数组的构成数组。数组型数组的声明和创建声明数组型数组的格式如下:数组类型维度子数组的维度数组名=new数组类型维度长度子数组的维度其中,省略维度为一维数组,省略子数组的维度表示子数组为一维数组。第43页/共
27、51页2023/2/21442.4.3 数组型的数组数组型的数组数组型数组的初始化数组型数组同样有多种初始化方式,包括创建时初始化、先声明后初始化等。其中,创建时初始化可省略维度长度引用子数组的元素对于数组型的数组来说,可按以下格式引用子数组的每一个元素:数组名索引列表索引列表第44页/共51页2023/2/21452.4.3 数组型的数组数组型的数组【实例2-8】多维数组、数组型的数组的应用展示第45页/共51页2023/2/21462.4.4 字符串字符串stringC#字符串是一个由若干个Unicode字符的组成字符数组。字符串常量使用双引号来标记,字符串变量使用string关键字来声明
28、。两个字符串可以通过加号运算符(+)来连接,C#字符串是不可变的,也就是说字符串一旦创建,其内容就不能更改。C#允许使用关系运算符=、!=来比较两个字符串各对应的字符是否相同。C#的字符串可以看成一个字符数组。因此,C#允许通过索引来提取字符串中的字符。第46页/共51页2023/2/21472.4.4 字符串字符串stringC#的string是System.String的别名。在.NetFramework之中,System.String提供的常用属性和方法有:Length、Copy、IndexOf、LastIndexOf、Insert、Remove、Replace、Split、Substr
29、ing、Trim、Format等,分别用来获得字符串长度、复制字符串、从左查找字符、从右查找字符、插入字符、删除字符、替换字符、分割字符串、取子字符串、压缩字符串的空白、格式化字符串等。为了增强字符串的操作,.NETFramework.类库还提供了System.Text.StringBuilder类,可以构造可变字符串。StringBuilder类提供的常用属性和方法有:Length、Append、Insert、Remove、Replace、ToString等,分别用来获得字符串长度、追加字符、插入字符、删除字符、替换字符、将StringBuilder转化为string字符串。第47页/共51页2023/2/21482.4.4 字符串字符串string【实例2-9】设计一个Windows应用程序,展示字符串及其应用,操作界面如图所示。第48页/共51页2023/2/2149作业作业作业作业 1.1.书面作业(见本章教材)书面作业(见本章教材)2.2.上机实验(见本章教材)上机实验(见本章教材)第49页/共51页2023/2/2150Class OverClass OverThankyou!Thankyou!第50页/共51页感谢您的欣赏!第51页/共51页
限制150内