数据类型与流程控制.ppt

上传人:sh****n 文档编号:9064518 上传时间:2020-04-02 格式:PPT 页数:51 大小:1.24MB
返回 下载 相关 举报
数据类型与流程控制.ppt_第1页
第1页 / 共51页
数据类型与流程控制.ppt_第2页
第2页 / 共51页
数据类型与流程控制.ppt_第3页
第3页 / 共51页
点击查看更多>>
资源描述
第2章数据类型与流程控制 内容提要 2 1数据类型2 2不同数据类型之间的转换2 3常量与变量2 4运算符与表达式2 5控制台应用程序与格式化输出2 6C 流程控制语句 2 预期目标 掌握C 的基本语法 3 2 1数据类型 C 数据类型分为两类 值类型和引用类型 值类型 包括简单类型 枚举类型 结构类型 可空类型 引用类型 包括类 接口 数组 委托 一般把引用类型的变量称为对象 4 值类型与引用类型区别 堆栈 堆 5 6 i j 实际数据 12345H obj 5 值类型和引用类型的区别 6 2 1 2整型 C 提供了八种整型 即计算机组成原理中的 定点数 sbyte 1字节有符号byte 1字节无符号short 2字节有符号ushort 2字节无符号int 4字节有符号 最常用uint 4字节无符号long 8字节有符号ulong 8字节无符号 7 2 1 3浮点类型 float 4字节浮点数 常用 例如 35 0fdouble 8字节浮点数 常用 例如 2 7E 23decimal 16字节浮点数 特殊的浮点数 精度高 适用于金融 货币等需要高精度数值的领域 其类型指定符为M 或m 例如 decimaly 9999999999999999999999999m float和double的浮点数格式与计算机组成原理介绍的IEEE754规定的格式相同 8 2 1 4布尔型 用bool表示 bool类型只有两个值true和false 例如 boolisExist false boolb i 0 错误 9 2 1 5字符型与字符串类型 char型 为单个Unicode字符 字符型常量必须用单引号引起来 例如 charch a 如果是字符串 单个字符的组合 对应的类型为string string类型的常量用双引号将字符串引起来 例如 stringstr hello char和string类型的常量均可以使用转义符 10 2 2值类型之间的数据转换 有两种转换方式 隐式转换与显式转换 如果是不同值类型之间的转换 可以使用Convert类 11 2 2 1隐式转换和显式转换 隐式转换从低精度 小范围的数据类型转换为高精度 大范围的数据类型 可以用隐式转换 例如 intk 1 longi 2 i k 隐式转换 12 2 2 1隐式转换和显式转换 显式转换如 longk 5000 inti int k所有的隐式转换也都可以采用显式转换的形式来表示 如 inti 10 longj long i 将大范围类型的数据转换为小范围类型的数据的时候 必须特别谨慎 因为此时有丢失数据的危险 13 2 2 2装箱与拆箱 Object类型 所有其他引用类型的基类 装箱 将值类型转换为object类型inti 123 objecto i 拆箱 将object类型转换为值类型intk int o 14 2 3常量和变量 C 中提供2种类型的常量 使用const关键字声明const常量是在编译时设置其值并且永远不能更改其值的字段 使用readonly关键字声明readonly关键字在程序运行期间只能初始化 一次 的字段 可以在声明语句中初始化 也可以在构造函数中初始化 初始化以后 用readonly声明的字段的值就不能再更改 二者区别 readonly常量运行时初始化 const常量编译时初始化 const常量只能在声明中赋值 readonly常量既可以在声明中赋值 也可以在构造函数中赋值 15 变量 变量用来表示一个数值 一个字符串值或者一个类的对象 变量存储的值可能会发生更改 但变量名称保持不变 C 定义了7类变量 分别是 静态变量 实例变量 数组元素 值参数 引用参数 输出参数和局部变量 classA publicstaticintx inty voidF int v inta refintb outintc inti 1 c a b 16 变量 声明变量举例 inta 100 声明一个整型变量a 并赋初值为100也可以采用先定义 后赋值的方式 例如 inta 声明一个整型变量aa 100 为整型变量a赋值为100另外 也可以把几个变量声明和初始化用一条语句完成 各个变量之间用逗号分隔 例如 inta 100 b c 200 d 声明整型变量a b c d 并将a赋值100 c赋值200 17 匿名类型的变量 匿名类型的变量就是程序员不必指定 局部 变量的类型 统统用var来表示类型即可 在LINQ表达式或者foreach语句中 使用匿名类型的变量比较方便 18 2 4运算符和表达式 C 提供了3大类运算符 一元运算符 带有一个操作数的运算符称为 一元 运算符 例如 i 二元运算符 带有两个操作数的运算符称为 二元 运算符 例如 x y 三元运算符 带有三个操作数的运算符称为 三元 运算符 在C 中 只存在1个三元运算符 即条件运算符 表达式C 的表达式与C 和Java类似 19 2 5控制台应用程序与格式化输出 控制台 Console类 控制台输出Console Write Console WriteLine 控制台输入Console ReadKey 标准输入流读取用户按下的字符或功能键 Console ReadLine 从标准输入流读取一行字符 20 字符串的格式化输出 格式输出的一般形式为 N M 格式码 其中 表示其中的内容为可选项 N 从零开始的整数 表示第几个参数 M 可选整数 表示最小长度 若参数N的长度小于M 就用空格填充 如果M为负 则左对齐 如果M为正 则右对齐 如果未指定M 则默认为零 格式码 可选的格式化代码字符串 21 常用格式码及举例 22 字符串的格式化输出 对于字符串来说 可以直接利用格式化输出得到希望的格式 例如 strings string Format 0 30 s得到的结果为30个空格的字符串strings1 string Format 0 20 15 s1得到的结果为左对齐长度为20的字符串 23 数字的格式化输出 常用格式举例 1 在ToString中使用d格式 inti 12345 i ToString d 表示将i按照实际整数宽度转换为字符串stringstr i ToString d Console WriteLine str 结果12345 i ToString d8 表示将i转换为字符串 宽度为8位 不够8位左边用0填充stringstr1 i ToString d8 Console WriteLine str1 结果00012345 24 数字的格式化输出 2 在string Format中使用d格式 inti 123 doublej 123 45 0 7 d 表示第0个参数 宽度7位 不够7位左边用空格填充 d表示十进制整数strings1 string Format thevalueis 0 7 d i Console WriteLine s1 结果thevalueis123 0 7 f3 表示第0个参数 总宽度7位 其中小数部分占3位 不够7位左边填空格 f表示浮点数strings2 string Format thevalueis 0 7 f3 j Console WriteLine s2 结果thevalueis123 450 25 数字的格式化输出 3 在ToString中使用f格式 doublei 12345 6789 f2表示浮点数小数部分为2位 多余部分四舍五入 不够2位时右边补零stringstr i ToString f2 Console WriteLine str 结果12345 68stringstr1 i ToString f6 Console WriteLine str1 结果12345 678900 26 数字的格式化输出 4 在ToString中使用n格式 doublei 12345 6789 n表示整数部分从小数点向左每3位用逗号分隔开 小数部分2位 多余部分四舍五入stringstr i ToString n Console WriteLine str 结果12 345 68 n4表示整数部分从小数点向左每3位用逗号分隔开 小数部分4位 多余部分四舍五入stringstr1 i ToString n4 Console WriteLine str1 结果12 345 6789 27 数字的格式化输出 5 在ToString中使用p格式 doublei 0 126 p表示百分数形式strings string Format thevalueis 0 p i Console WriteLine s 结果thevalueis12 60 stringstr i ToString p Console WriteLine str 结果12 60 28 日期和时间的格式化输出 DateTimedt newDateTime 2006 5 25 yy表示年占两位 M表示月占1位 超出1位按实际位数 d表示日占1位 超出1位按实际位数stringstr dt ToString yy M d Console WriteLine str 结果06 5 25 yyyy表示年占4位 M表示月占1位 超出1位按实际位数 其他按原字符输出stringstr1 dt ToString yyyy年M月 Console WriteLine str1 结果2006年5月 29 2 6C 流程控制语句 流程控制的形式 顺序分支循环异常捕获如果一个逻辑块包含两条或两条以上的语句序列 必须使用大括号 将语句括起来 30 2 6 1条件分支语句 if语句 根据布尔表达式的值 true或者false 选择要执行的语句序列 使用时要注意else应和最近的if语句匹配 三种形式 ifif elseif elseif else 31 2 6 1条件分支语句 续 switch语句也叫case语句switch语句与C 和Java均不完全相同 switch语句常用形式为 switch 表达式 case常量表达式1 语句序列1case常量表达式2 语句序列2 default 语句序列 32 2 6 1条件分支语句 续 常量表达式switch条件表达式的值和每个case后的常量表达式可以是string int char enum或其它值类型 语句序列每个case后的语句序列可以用大括号括起来 也可以不用 每个case块的最后一句一定要是break或goto switch语句的执行顺序a 如果switch语句的条件表达式的值和某一个case标记值相等 则转到该case标记后的语句序列执行 b 若switch语句的条件表达式的值和任何一个case标记后指定的值都不相等 则跳到default标记后的语句序列执行 33 2 6 1条件分支语句 续 c 若switch语句下面没有default标记 则跳到switch语句的结尾 注意 a 要求每个语句序列的最后一条语句必须是break语句 但是有一个情况例外 如果某个case块为空 则会从这个case块直接跳到下一个case块上 b 如果case后有语句 则此case的顺序怎么放都无所谓 甚至可以将default子句放到最上面 因此 在一个switch中 不能有相同的两个case标记 34 例 使用switch语句 完成对成绩等级的评定 usingSystem namespaceSwitchExample publicclassProgram publicstaticvoidMain Console Write 请输入成绩 从键盘接收一行字符stringstr Console ReadLine 转换为整型 注意此语句可能会产生异常 一般需要异常处理inti Int32 Parse str Trim 或者int Parse 或者Convert ToInt32 if i 100 i 0 Console WriteLine 成绩不在0 100范围内 else switch i 10 整除case10 Console Write 满分 gotocase9 case9 Console WriteLine 优秀 break case8 case7 Console WriteLine 良好 break case6 Console WriteLine 及格 break default Console WriteLine 不及格 break Console ReadLine 35 2 6 2循环语句 包括 for语句while语句do while语句foreach语句 用于对集合 数组进行操作 36 2 6 2循环语句 续 for语句一般形式 for 初始值 循环条件 循环控制 语句序列 37 例 使用for语句控制循环体 publicstaticvoidMain Console Clear Console BackgroundColor ConsoleColor Blue Console ForegroundColor ConsoleColor Red Console Beep for inti 1 i 10 i 2 Console SetCursorPosition 40 i 2 i for intj 0 j i j Console Write Console WriteLine Console ReadLine 38 2 6 2循环语句 续 while语句一般形式 循环体内的程序可能会执行多次 也可能一次也不执行 while 条件 语句序列 39 2 6 2循环语句 续 do while一般形式 循环体内的程序至少会执行一次 然后再判断条件是否为true 如果条件为true 则继续循环 do 语句序列 while 条件 40 2 6 2循环语句 续 foreach语句foreach语句用于逐个提取集合中的元素 并对集合中每个元素执行语句序列中操作的场合 一般形式为 注意 循环变量是一个只读型的局部变量 foreach 类型标识符in表达式 语句序列 41 2 6 2循环语句 续 判断下列语句是否正确 并说明原因 int myInt 1 2 3 foreach inttestinmyInt test Console WriteLine test 42 2 6 3跳转语句 1 break语句功能 退出最近的封闭switch while do while for或foreach语句 格式 break 43 示例 例 循环接收和输出键盘输入的每一行的值 当接收的内容为空字符串时退出 usingSystem namespaceBreakExample publicclassProgram publicstaticvoidMain for Console Write 请输入一个字符串 直接回车退出 strings Console ReadLine if s break Console WriteLine 你输入的是 0 s Console ReadLine 44 2 6 3跳转语句 续 2 continue语句功能 将控制传递给下一个while do while for或foreach 继续执行下一次循环 格式 continue 3 goto语句仅在下面两种情况下才可能会使用goto语句 1 用于switch语句中从一个case标签转到另一个case标签处 2 用于直接退出到多重嵌套循环的外部 45 2 6 3跳转语句 续 4 return语句功能 将控制返回到出现return语句的函数成员的调用方 格式 return 表达式 其中表达式为可选项 如果该函数成员的返回类型不为null 则return语句必须使用表达式返回这个类型的值 否则return语句不能使用表达式 46 2 6 4异常处理 1 try catch语句在程序运行正常的时候 执行try块内的程序 如果try块中出现了异常 程序就转移到catch块中执行 try 语句序列 catch 异常类型标识符 异常处理 47 2 6 4异常处理 续 2 try catch finally语句 try 语句序列 catch 异常类型标识符 异常处理 finally 语句序列 48 2 6 4异常处理 续 3 throw语句格式 throw 表达式 抛出表达式的值 注意表达式类型必须是System Exception或从System Exception派生的类的类型 throw也可以不带表达式 不带表达式的throw语句只能用在catch块中 在这种情况下 它重新抛出当前正在由catch块处理的异常 49 例 异常处理 usingSystem namespaceTryCatchExample classProgram staticvoidF try G catch Exceptionerr Console WriteLine 方法F中捕获到 err Message 重新抛出当前正在由catch块处理的异常errthrow staticvoidG thrownewException 方法G中抛出的异常 staticvoidMain try F catch Exceptionerr Console WriteLine 方法Main中捕获到 err Message Console ReadLine 50 小结 51
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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