已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章 分支程序设计,3.1 关系与逻辑运算,3.2 两路分支,3.3 多路分支,3.1 关系与逻辑运算,3.1.1 逻辑数据,用来表示“真”和“假”的数据称为逻辑数据 C语言中没有逻辑数据类型,它用其它数据类型来表示逻辑型数据 C中规定,0值表示“假”,非0值表示“真”,图3-1 C中的逻辑数据表示,3.1.2 关系运算,关系运算也叫比较运算,用来比较两个值的大小,结果是逻辑值 C中有6种关系运算,表3-1 关系运算符,注意事项,(1)关系运算是二元运算,对两个值进行大小比较,任意类型的表达式都可以参加比较运算 若有下面的定义: float y = 5, z; 则: 5 3 /* 两个初级表达式(常量)进行比较 */ y = b+ /* 一个一元表达式与一个后缀表达式进行比较 */ (m = 4) = (n = 3) /* 两个赋值表达式进行比较 */ (y 3) 5) /* 两个关系表达式进行比较 */,(2)关系运算的结果是逻辑值“真”或“假”,在C中,一个式子的运算结果若为逻辑“真”,则它的值是整数1;若运算结果为逻辑“假”,则它的值是整数0 若有定义: int a = 3,b = 2, x = 5; 则: 5 3 结果为“真” 值为1 x = b+ 结果为“真” 值为1,(3)前四个的优先级高于后两个,所有运算的结合性都是左结合,a = b c 等价于 a = (b c) a b c 等价于 (a b) c),(4)不可以简单地通过几个连续的关系运算来构建复杂的条件,如: 3 x 5 不能表示x(3,5),3.1.2 逻辑运算,逻辑运算是对逻辑量进行的运算 C中有3个逻辑运算逻辑与(and),逻辑或(or)和逻辑非(not),表3-2 逻辑运算符,(1)逻辑运算是对逻辑值实施的运算,结果还是逻辑值,注意事项:,表3-2表3-5 逻辑运算真值表,(2)任意类型的表达式都可以参加逻辑运算,要牢牢把握住一点:任何非0的值为“真”,只有0值才为“假”,若有以下定义: int a = 0, b = 13; float y = -3.14; char c = A; 则下列的表达式都是合法的: !5 结果为“假” 值为0 !a 结果为“真” 值为1 !y 结果为“假” 值为0 !(b % 2) 结果为“假” 值为0 a = 0 & a =a& c =A& c =Z) 结果为“真” 值为1,(3)只要表达式的值已经确定逻辑运算就终止,进行逻辑运算时,只要表达式的值已经确定了,就不再继续处理了,有时也把它叫逻辑短路,图3-2 逻辑短路,如: int a = 1, b = 2, c = 3, d = 4, m = 2, n = 2; (m = a b) 执行上面的语句后m和n的值分别是0和2,(4)要尽量使用简单的表达式,比较运算之间存在互补关系 两个存在互补关系的运算,只要对一个取非运算就和另一个等价 在编程时应尽量选择简单的格式 基本的原则是:能用关系运算表示的,就不要再进行逻辑运算,图3-3 关系运算间的互补,3.2 两路分支,分支又叫选择,它是一种程序结构 它是根据某一条件的“真”或“假”,有选择地执行程序中某一部分代码,图3-4 两路分支的逻辑结构,3.2.1 ifelse语句,图3-5 ifelse语句,(1) if后的括号不能省略,括号后不能有分号,(2) expression可以是任意类型的表达式,(3) s1和s2是语句,它们可以是一条语句、空语句或多条语句,若为多条语句就必须使用括起来,注意事项:,图3-6 ifelse后跟多条语句,(4) 执行过程 先算expression的值,若非0(真)就执行if后的s1,否则就执行else后的s2。s1和s2一次只能有一个被执行,(5)由于表达式存在互补关系,使用不同的表达式就有不同的程序格式,图3-7 ifelse两种不同的编码格式,3.2.2 if语句,图3-8 if语句的两种格式,if语句是if.else语句的一个特例,可以把它理解为是else 后面跟一条空语句,即条件为“假”时什么也不做,图3-9 if语句的等价格式,注意事项:,在实际应用中要尽量使用简单的表达式格式,3.2.3 if语句的嵌套,if.else语句中又含有其它if.else语句的情况,就称为if语句的嵌套,图3-10 if语句的嵌套,注意事项:,(1)C对嵌套的层数没有要求,但一般不要超过三层,图3-11 if与else的配对,(2)在if的嵌套结构中,一定要注意if与else的配对关系,配对原则是: 任何一个else总是与其上方距离其最近的还没有其它else与之配对的if配对,图3-11 通过加改变if与else的配对,(3)可以把适当部分用括起来来改变if与else的配对关系,3.2.4 条件表达式,条件表达式是由两个运算符(?和:)把三个操作数连接而成的式子 它是C中唯一一个三元表达式 条件表达式的一般形式为: 表达式1?表达式2:表达式3,注意事项:,如: x = 5? y = x * x : y = x + x,(1)条件表达式的值是表达式2或表达式3中一个的值,表达式的处理过程是: 先计算表达式1,若非0(真),则求表达式2的值;否则求表达式3的值,并把求得的值作为整个表达式的值,(2)可以把三项条件运算的结果赋给变量,图3-13 条件表达式,(3)三项条件表达式允许嵌套,如:flag = x % 2 ? 1 : 0;,如:x 0 ? 1 : x 0 ? -1 : 0,3.3 多路分支,图3-14 switch语句的代码格式,3.3.1 switch语句,switch分支又叫开关分支,带的部分可以带也可以不带,注意事项:,(1)switch后括号中的expression必须是整型表达式,括号后不能加分号,若有以下定义: int x = 100; float score = 99.5; 则以下的switch语句: switch( x ) /* 合法,x是整型 */ switch(score) /* 非法,score不是整型 */ switch((int)score) /* 合法,(int)score是整型 */,(2) 每个case后必须是整型常量表达式,且每个值必须不同,若有以下定义: #define N 2 int m = 3; 则下列的各case: case 2: /* 合法,2是整型常量 */ case 2 + 2: /* 合法,2 + 2是整型常量表达式 */,case A: /* 合法,A是整型常量表达式 */ case N: /* 合法, N是整型常量 */ case m: /* 非法, m是变量 */,(3)每个case后跟冒号,冒号后面是0条或多条语句,当case后跟多条语句时,可以不用括起来,这与if.else语句是截然不同的,(4)各case的顺序任意,(5)允许几个case使用同一语句,如: case 1: case 2: case 3: printf(“Hello Switch case!n”);,(6)default语句不是必须的,但建议使用,习惯上放在最后,(6)每个case后的break语句可有可无,但有与没有其执行效果大不相同,不带break语句,则执行的过程是: 先计算switch后expression的值,用这个值从前到后与每个case后面的值进行比较,若二者相等,则执行该case及其后面各个case所带的语句一次,包括default后的语句,若没有一个case的值与求得的值相等就执行default后的语句,图3-15 不带break的switch-case结构,带break语句,则执行的过程是: 先计算switch后expression的值,用这个值从前到后与每个case后面的值进行比较,若二者相等,则执行该case后面所带的语句退出整个结构,若没有一个case的值与求得的值相等就执行default后的语句,图3-16 带break的switch-case结构,图3-17 if.else-if 结构,3.3.2 if.else-if语句,1.掌握逻辑数据的表示方法; 2.掌握关系运算和逻辑运算及使用方法; 3.掌握条件运算和表达式求值的方法; 4.掌握if语句,ifelse语句的使用; 5.掌握分支嵌套的含义和使用方法; 6.掌握switch-case和ifelse-if分支的使用;,目的要求,1.C中的逻辑数据如何表示? 2.C中有哪些关系和逻辑运算? 3.逻辑运算的短路是什么含义? 4.使用switch语句时应该注意什么? 5.在switch语句中,break语句的作用是什么
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年压力容器工程师培训考试试题库
- 2025年健康食品加工与品牌塑造可行性研究报告及总结分析
- 2025年海洋资源开发与保护协调可行性研究报告及总结分析
- 2025年企业数字人服务合同
- 2025年在线医疗健康服务可行性研究报告及总结分析
- 电商会计考试题库及答案
- 在建工程变更合同名称(3篇)
- 2025年人工智能辅助决策平台可行性研究报告及总结分析
- 2025年旅游业数字化转型研究项目可行性研究报告及总结分析
- 2025年新型互联网广告平台建设项目可行性研究报告及总结分析
- 国防共同条令教育与训练
- 生涯发展报告 (第二版)
- E-R图绘制课堂教学课件
- 《郑和下西洋》课件
- 安全教育让孩子们健康快乐地成长
- 脊髓炎护理业务查房
- 国家开放大学学生成绩单
- 完整版全国行政区域身份证代码表(EXCEL版)TextMarkTextMark
- 基于CA6150普通车床的数控化改造
- 脑的动脉课件
- 离子的占位晶体磁晶各向异性课件
评论
0/150
提交评论