C#第一步从入门到精通第2章.ppt

上传人:max****ui 文档编号:10960722 上传时间:2020-04-16 格式:PPT 页数:49 大小:247.66KB
返回 下载 相关 举报
C#第一步从入门到精通第2章.ppt_第1页
第1页 / 共49页
C#第一步从入门到精通第2章.ppt_第2页
第2页 / 共49页
C#第一步从入门到精通第2章.ppt_第3页
第3页 / 共49页
点击查看更多>>
资源描述
第2章C 程序开发基础 C 语法入门 数据类型 常量和变量 运算符和表达式 类型转换 数组和枚举 2 1数据类型 所谓数据类型 就是指数据的种类 在应用程序中 要使数据能被计算机识别并处理 需要将数据分为不同的类型 这样的好处是存储和计算方便 比如在对姓名和地址的处理中需要使用字符 在对货币和数量的处理中又需要使用数字或不同精度的小数 这些数据都是不同类型的数据 如姓名是 张三 为字符型 年龄是25为整型等 为什么要定义数据类型呢 之所以要定义数据类型 是因为计算机是没有思维的 你只有告诉它 他才知道这是什么 比如你定义 inta 它才知道a是一个整数 否则计算机就识别不出来它是个什么东西而出错 2 1 1值类型和引用类型概述 C 的数据类型分为值类型 引用类型和指针类型 PointerType 3大类 值类型包括简单类型 结构类型和枚举类型 引用类型包括类类型 接口类型 委托类型和数组类型 指针类型只能用于不安全模式 值类型的数据存储在内存的堆栈中 可以提供快速访问 如果变量是值类型的 这个变量就包含实际数据 在一个独立的内存区域保存自己的值 如果在代码中修改其值后 在内存中会保存修改后的值 C 中大多数基本数据类型如 整型 字符型 浮点型 布尔型等都属于值类型 结构 枚举也属于值类型 引用类型指向存储在内存堆中的数据的指针或引用 与纯粹的地址不同 引用总是指向一个对象 而且这个对象具有指定的类型 并且在堆上分配了地址 字符串 数组 接口 类都属于引用类型 2 1 2值类型 C 语言的值类型包括整数类型 浮点数类型 布尔类型 字符类型等简单类型以及枚举类型和结构类型 下面介绍简单类型 枚举在2 5节中介绍 结构在4 4节中介绍 整数类型 整数类型的变量值为整数 计算机语言提供的整数类型的值总是在一定范围之内 根据数据在计算机内存中所占的位数来划分 C 有8种整数类型的数据 这些数据及其在计算机中表示整数的范围如下表所示 2 浮点数类型和十进制类型 浮点数类型又称为实数类型 是指带有小数部分的数字 C 支持两种浮点数类型 单精度 float 和双精度 double 它们的差别在于取值范围和精度不同 浮点数类型数据的特征如下表所示 数据类型含义取值范围有效数字位数float32位浮点数 1 5 10 45 3 4 10387double64位浮点数 5 0 10 324 1 7 1030815 16 3 字符类型 在C 中 字符常量是用单引号 即撇号 括起来的一个字符 如 a x D 等都是字符常量 注意 a 和 A 是不同的字符常量 charc1 X 将字符X赋给字符型变量c1除了以上形式的字符常量外 C 还允许用一种特殊形式的字符常量 即以 开头的字符序列 它们一般实现一定的控制功能 并没有一定的字型 这种非显示字符难以用一般形式的字符表示 故规定用这种特殊形式表示 这些形式的字符也称为 转义字符 4 布尔类型 布尔类型变量只有两种取值 true 代表 真 和false 代表 假 并且true值不能被其他任何非0值所代替 boolflag true 正确boolflag 1 错误 不能将一个整型数据赋给布尔类型的变 范例2 1 已知圆的半径为12厘米 计算圆的面积 在VisualStudio2008中新建C 控制台程序 项目名为Circle 在Program cs的Main方法中输入以下代码 完整的代码如下 decimalpi 3 14159M 字母M表示数据是decimal类型intr 12 定义int型变量r表示圆的半径decimals 0 用来存放圆的面积s pi r r 计算圆的面积Console WriteLine 圆的半径是 0 n圆的面积是 1 r s 在控制台输出结果Console ReadKey 暂停运行 按任意键继续 2 1 3引用类型 C 中的值类型比较简单 对更加复杂的数据处理效率很低 C 的引用类型主要用来描述结构复杂 抽象能力比较强的数据 它与值类型数据是相并列的 同为引用类型的两个变量 可以指向同一个对象 也可以针对同一个变量产生作用 或者被其他同为引用类型的变量所影响 类类型 接口类型 委托类型和数组类型属于引用类型 下面介绍字符串类型 其他引用类型将在2 5节和第4 5章分别介绍 字符串是一种数据类型 一种类别 即它属于引用类型 还可以视为一个由字符组成的数组 使用string来声明字符串变量 字符串值放在一对双引号中 例如 stringname Tom 关于字符串的详细操作 将在3 4节详细介绍 第2章C 程序开发基础 C 语法入门 数据类型 常量和变量 运算符和表达式 类型转换 数组和枚举 2 2常量与变量 常量和变量代表在程序中的数据 是程序运行不可缺少的一部分 下面我们介绍常量和变量的使用 2 2 1变量 变量的声明语法如下 访问修饰符 变量修饰符 变量的数据类型变量名表其中 访问修饰符 和 变量修饰符 都是可以省略 在4 1节中将给出详细介绍 变量声名和赋值如下所示 privateintx 声明x为整型变量 private可以省略x 10 变量的赋值 让变量x的值为10stringname John 声明一个字符串变量name 值为John也可以在声明变量的同时赋值 如 intx 10 可以在一行声明多个变量 如 intx 3 y 8 不同变量用逗号隔开 变量命名规则 变量名 2 2 1常量 常量就是在程序运行过程中其值固定不变的量 即在程序执行期间 常量的值不会发生改变 其格式如下 访问修饰符号 const类型常量表达式 其中 访问修饰符号 都是可以省略 常量的修饰符可以是new public protected internal private 常量的表达式表示常量的名字 如下所示 publicconstintx 3 y 8 2 2 3隐式类型的局部变量 隐式类型的局部变量又叫匿名变量 是C 3 0版本中引入的一个新用法 使用var声明 可以用var声明任何类型的局部变量 它只是负责告诉编译器 该变量需要根据初始化表达式来推断变量的类型 而且只能是局部变量 语法如下 var变量名称 变量值 例如 vari 8 局部变量i作为整型数据被编译vars HelloC 局部变量s作为字符串数据被编译 范例2 2 定义常量和变量 熟悉常量 变量的使用 第2章C 程序开发基础 C 语法入门 数据类型 常量和变量 运算符和表达式 类型转换 数组和枚举 2 3运算符和表达式 C 语言中的表达式类似于数学运算中的表达式 用运算符把操作对象连接起来的式子就是表达式 表达式在经过一系列运算后得到一个运算结果 结果的类型由参加运算的操作对象的数据类型决定 运算符是表示各种不同运算的符号 在程序设计语言中运算是指对各种数据进行处理 比如表示加法运算就用 运算符 2 3 1一元运算符 一元运算符的操作数只有一个 常见的一元运算符包括自加运算符 自减运算符 和逻辑非 可将操作数加1 可将操作数减1 逻辑非是将表达式的值取反 自加 自减运算符在表达式前和表达式后的结果是不一样的 自加和自减运算符其实是二元运算符的简化写法n 等价于n n 1 C 中还有其他的简化写法 如下表所示 简化运算符等价表达式简化运算符等价表达式n 和 n 2 3 2二元运算符 二元运算符就是需要两个操作数参与的运算符 我们很熟悉的加减乘除四则运算的符号 就是二元运算符 如 3 8 运算符的两个操作数分别是3和8 比较运算符 结果是逻辑性型 即True或False 比较一个数是否大于另一个数逻辑运算符 结果是逻辑型 逻辑 与 两个操作数都为真时结果为 真 其余情况结果为 假 opr1 opr2 逻辑 或 两个操作数至少一个为真时结果为 真 其余情况结果为 假 opr1 opr2 2 3 3三元运算符 三元运算符要求有三个操作数参与的运算 格式为 操作数1 操作数2 操作数3 其中操作数可以为变量或者表达式 输出结果为 如果操作数1为真 输出操作数2 如果操作数1为假 输出操作数3 三元运算符的输出结果取决于 前面的操作数1 例如 n 3 8 3 8 输出结果为8 n 3 8 3 8 输出结果为3 2 3 4运算符优先级 表达式有多个运算符时 表达式的求值顺序由运算符的优先级决定 先取优先级较高的运算符进行计算 将运算的结果再运用于优先级较低的运算符 也遵从算术运算的 先乘除后加减 这样的规则 可以用圆括号 改变运算的优先次序 C 运算的优先级如下 越上面优先级越高 如果一个表达式中出现同一个优先级的运算符 运算顺序取决于其结合性 结合性指运算符在表达式中从左到右或从右到左的运算顺序 第2章C 程序开发基础 C 语法入门 数据类型 常量和变量 运算符和表达式 类型转换 数组和枚举 2 4类型转换 在输出结果时经常把整型 浮点型等类型转换为字符串 不同类型的数据进行运算时需要转换为同一类型才能正常计算 所有操作过程中经常涉及到数据类型之间的转换 C 中数据类型的转换可以分为两类 隐式转换和显式转换 2 4 1隐式转换 隐式转换 就是系统默认的 不需要加以声明就可以进行的转换 例如 shortst 250 inti st 将短整型隐式转换成整型在C 没有引入var类型的变量之前 隐式转换仅存在于数值类型的数据之间 引入var类型之后 var定义的变量可以实现隐式数据转换 1 数值类型数据间的隐式转换 隐式数据类型转换适用于数值类型的数据之间 如整型数据 int 可以隐式转换为浮点型 float 和双精度型 double 数据 浮点型 float 可以隐式转换为双精度型 double 数据 隐式数据类型转换遵循以下规则才能实现 2 var类型数据隐式转换 var定义的变量的数据类型是由赋值的数据决定的 如varName Johnson 此时变量Name就是字符串类型 进行了隐式转换 1varintNum 250 2inti intNum var型变量intNum隐式转换成整型 3varName Johnson 4stringstrName Name var型变量Name隐式转换string型 2 4 2显式转换显式 转换又叫强制类型转换 需要用户明确地指定转换的类型 通过显式数据转换 可以把取值范围大的数据转换为取值范围小的数据 显式转换可以发生在表达式的计算过程中 可能引起信息丢失 例如下面代码把float类型的变量pi强制转为int 小数部分的信息就丢失了 floatpi 3 14f 定义一个单精度的实数inti int pi 将单精度强制转换为整型行计算 i的值是3 不是3 14 造成信息丢失 2 4 3使用Convert类转换 NetFramework提供了很多类库 其中System Convert类就是专门进行类型转换的类 通过Convert类提供的方法实现各种基本数据类型间的转换 Convert类的常用方法有 方法说明ToBoolean将指定的值转换为等效的布尔值 ToChar将指定的值转换为Unicode字符 ToDateTime将指定的值转换为DateTime ToDecimal将指定值转换为Decimal数字 ToDouble将指定的值转换为双精度浮点数 ToInt16将指定的值转换为16位有符号整数 ToInt32将指定的值转换为32位有符号整数 ToString将指定值转换为其等效的String表示形式 例如 StringMyString true BoolMyBool Convert ToBoolean MyString 将String转换为Boolean型 MyBool trueStringnewString 123456789 IntMyInt Convert ToInt32 newString 将字符串转换为数字值 MyInt 123456789 范例2 5 隐式转换 显式转换使用举例 在VisualStudio2008中新建C 控制台程序 项目名为TypeConvert 在Program cs的Main方法中输入以下代码 完整的代码如下 1Console WriteLine 隐式 显式转换例子 2shortr 25 r表示圆的半径 3inti r 将短整型r隐式转换成整型4floatpi 3 14f 定义一个单精度的实数5doubles1 pi i i s1为double型 表示圆的面积6ints2 7s2 int pi i i s2为int型 表示圆的面积8varName Johnson 9stringstrName Name var型变量rName隐式转换string型10Console WriteLine r 25 圆的面积 0 1 s1 s2 11Console WriteLine 转换成功 第3行 将short类型隐式转为int 5行int和float类型隐式转为double类型 7行显式把float转为int 8 9行 var类型隐式转为string类型 代码详解 2 4 4装箱和拆箱 拆箱是把 引用 类型转换成 值 类型 装箱是把 值 类型转换成 引用类型 是数据类型转换的一种特殊应用 有时某些方法的参数要求使用 引用 类型 而想把 值 类型的变量通过这个参数传入 就需要使用这个操作例如 1intn 4 n是值类型2objectobj n 封箱 把任何值类型隐式地转化为object类型 其中object为引用类型3Console WriteLine n的初始值为 0 装箱后的值为 1 n obj ToString 4intm int obj 拆箱 把一个object类型隐式地转换为值类型 5Console WriteLine 引用类型的值为 0 拆箱后的值为 1 obj ToString m 2 4 5数值和字符串之间的转 C 中字符串和数值之间经常互相转换 下面介绍一下二者之间的转换方法 1 ToString 方法 数值类型的ToString 方法可以将数值型数据转换为字符串 2 Parse 方法 数值类型的Parse 方法可将字符串转换为数值型 如字符串转换为整型使用int Parse string 字符串转换为双精度浮点型使用double Parse string 等 例如 1intnum1 25 2stringstr1 num1 ToString num1的ToString 方法将num1转为string赋给str13stringstr2 38 4intnum2 int Parse str2 int Parse 方法将字符串str2转换为int类型5stringstr3 21 6doublenum3 double Parse str3 double Parse 将字符串转换为双精度浮点型7stringstr4 56 8floatnum4 float Parse str4 float Parse 将字符串转换为单精度浮点型 第2章C 程序开发基础 C 语法入门 数据类型 常量和变量 运算符和表达式 类型转换 数组和枚举 2 5数组和枚举 简单数据类型如整型 字符串类型等变量都只能存储一个值 如需要存储多个相同类型的数据 可以使用数组 使用枚举 可以避免不合理的赋值 使程序更加合理和安全 本节讲解数组和枚举的使用 2 5 1数组的定义和使用 数组是一个经过索引的对象集合 一维对象数组的声明如下 数据类型 数组的大小或容量 数组名 其中 中的数组的大小或容量可以省略 如下所示 int 5 array1 声明有五个数组元素的数组 或int array1array1 newint 5 和上面数组声明等价 声明过的数值型数组中的数组元素默认值为零 引用类型数值中的数组元素的默认值为null 可以在创建数组的同时初始化数组 如下所示 int array1 newint 1 3 5 7 9 有5个元素的数组 初值分别为1 3 5 7 9或int array1 newint 5 1 3 5 7 9 数组的大小和数组元素的个数必须相等或int array1 1 3 5 7 9 二维数组 声明二维数组的语法是 数据类型 数组名 例如 1int array2D newint 2 3 声明二维数组array2D2int array2D2 1 2 3 4 5 6 声明二维数组array2D2的同时初始化3 2 5 2Array类 System Array类提供了创建 操作 搜索和排序数组的许多静态方法供程序调用 它是所有数组类型的抽象基类 不能直接从System Array显示地派生自己的数组类型 Array类常用的方法如下 方法名功能Clear清除将Array中的元素值Copy将一个Array的一部分元素复制到另一个Array中CopyTo将当前一维Array的所有元素复制到指定的一维Array中 Find搜索与指定谓词定义的条件匹配的元素 返回整个Array中的第一个匹配项 FindAll检索与指定谓词定义的条件匹配的所有元素 FindIndex搜索与指定谓词定义的条件匹配的元素 返回Array或其某个部分中第一个匹配项的从零开始的索引 GetLength获取Array的指定维中的元素数 GetValue获取当前Array中指定元素的值 IndexOf返回一维Array或部分Array中某个值第一个匹配项的索引 Initialize通过调用值类型的默认构造函数 初始化值类型Array的每一个元素 Reverse反转一维Array或部分Array中元素的顺序 SetValue将当前Array中的指定元素设置为指定值 Sort对一维Array对象中的元素进行排序 ToString返回表示当前Object的String 范例2 6 利用Array类的静态方法实现数组排序和反转 在VisualStudio2008中新建C 控制台程序 项目名为 ArrayMethod 在Program cs的Main方法中输入以下如下代码 代码2 6 txt 2 5 4匿名数组 匿名数组就是隐藏类型的数组 这和匿名类型相同 不同的是类型为数组 匿名数组的语法和前面类似 就是用var替换具体的数据类型 例如 vararray1 new 1 2 3 4 5 intvararry1 new 1 1 5 2 2 5 doublevararry3 new abc bcd dsd string使用匿名数组时 数组的内容一定是可以相互转换的 如vararray4 new abc 1 4 ab 是错误的 因为字符串和数值不能实现自动的转换功能 2 5 5枚举的定义和使用 枚举是一组已经命名的数值常量 用来定义一组具有特定值的数据类型 是便于记忆的符号 使用此数据类型可使代码更具可读性 还可降低将非法值或意外值赋给该变量的可能性 使用关键字enum定义枚举 语法如下 enum枚举名称 枚举对象 例如 定义一个代表星期的枚举类型的变量 publicenumDayOfWeek 定义枚举名称 Monday Tuesday Wednesday Thursday Friday Sunday 定义枚举对象的枚举值 DayOfWeekThisWeek 定义了一个枚举类型的实例变量 Seeyoulater 2 7跟我上机 定义一个二维数组用于存储学生的学号 姓名和C 课程的考试成绩 然后输入学号 姓名和C 考试成绩 在C 中编写一个控制台应用程序 实现按C 课程考试成绩的升序和降序分别输出成绩单
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!