04_逻辑运算和判断选取控制.doc_第1页
04_逻辑运算和判断选取控制.doc_第2页
04_逻辑运算和判断选取控制.doc_第3页
04_逻辑运算和判断选取控制.doc_第4页
04_逻辑运算和判断选取控制.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四讲 第五章 逻辑运算和判断选取控制内容:5.1 关系运算符和关系表达式5.2 逻辑运算符和逻辑表达式5.3 if语句5.1 关系运算符和关系表达式在程序设计中,我们经常会遇到对两个数据进行比较.比如说,在上节的最后例3.12中,如果我们在计算三角形的面积之前,能够对判别式disc的值进行判断,对于disc0的情况进行另外的理,就不会出现令人啼笑皆非的结果了。 在计算机中程序设计中,比较运算是通过关系运算实现的.所谓关系运算实际上就是比较运算,即判断结果是否符合给定的条件。一、关系运算符及其优先等级1. 关系运算符: = = != 小于 大于 小于等于 大于等于 等于 不等于2. 关系运算符的优先次序: 、= =、!= 高 低3. 关系运算符与其它运算符的优先次序:关系运算符的优先等级低于算术运算符,高于赋值运算符。二、关系表达式1. 关系表达式:用关系运算符将两个表达式(算术、关系、逻辑、赋值表达式均可)连起来的式子叫关系表达式。2. 关系表达式的取值: 关系表达式的值是一个逻辑值,即真或假,条件成立取值为真,以1代表真;条件不成立,取值为假,以0代表假。 5.2 逻辑运算符和逻辑表达式除了关系运算之外,我们还会遇到这样的问题:若干个开关并联,在何种条件下,电路接通;若干个开关串联,在何种条件下,电路接通.这类问题就是我们上个学期讲过的逻辑运算问题。一、逻辑运算符1. 逻辑运算符: & | ! 逻辑与 逻辑或 逻辑非 (双目) (双目) (单目)2. 逻辑运算符的优先次序: ! & | (非) (与) (或) 高低逻辑运算符与其它运算符的优先次序: 逻辑运算符中的!(非)运算符的优先等级高于算术运算符;|(或)和&(与)运算符的优先等级低于关系运算符但高于赋值运算符。3. 逻辑运算的取值: !(非) 假为真,真为假&(与) 全真为真,其余为假|(或) 全假为假,其余为真二、逻辑表达式1. 逻辑表达式:用逻辑运算符将表达式(算术、关系、逻辑、)连起来的式子叫逻辑表达式。2. 逻辑运算的几个注意事项:(1) 逻辑表达式中的操作对象可以是任何0(假)和非0(真)数据;(2) 逻辑表达式中的操作对象还可以是其它任何类型的数据,系统最终以0和非0来判断它们属于假还是真;(3) 在逻辑运算中并非所有的逻辑运算符都被全部执行。5.3 if 语句在我们上一章的例题中,计算二元一次方程的根时,没有考虑判别式b*b-4*a*c0的情况;在计算三角形面积时,也没有考虑s*(s-a)*(s-b)*(s-c)b)printf(na=%f b=%f n,a,b); /* 此处的花括号去掉,会出错: else Misplace in main function*/ /* main函数中的else放错位置 */ printf(%f %fn,a,b);elseprintf(na=%f b=%f n,a,b); printf(%f %fn,b,a);运行时,输入a,b的值为1和6,结果如下:a=1.000000 b=6.0000006.000000 1.000000再次运行,输入a,b的值为-56.9和45.2,结果如下:a=-56.900002 b=45.20000145.200001 -56.900002请注意第二次运行时的结果不精确,这是因为Turbo C的单精度数只提供7位有效数字,第8位以后的输出不能保证精度。三、if 语句的嵌套 在if语句中又包含一个或多个if语句,称为if语句的嵌套。1. 一般形式: if () if () 语句1 else 语句2 else if () 语句3 else 语句42. 注意事项(1) 注意if 与 else 的配对关系,从最内层开始,else 总是与它上面最近的且尚未配对的if配对。(2) 在书写的时候,具有配对关系的if 和 else 的物理位置最好对应,以便检查和分析程序,但书写的位置关系并不影响它们的配对关系。(3) 如果if 和 else 数量不同(如某个内嵌的if结构只有if而没有else),应用花括号将该if结构括起来,以确定配对关系。请看如下程序: -1 (x0)对于一个分段函数 y= 0 (x=0) 1 (x=0) if (x0) y=1; else y=0;else y=-1;printf(x=%d,y=%dn,x,y);main () /* 教材P55 程序3结果不对,应在内嵌if语句中加入如本程序 */int x,y;scanf(%d,&x);y=-1;if (x!=0) if (x0) y=1; /* 此行应有一对花括号,改变配对关系,否则结果不正确 */else y=0;printf(x=%d,y=%dn,x,y);main () /* 教材P55 程序4结果不对,应在内嵌if语句中加入如本程序 */int x,y;scanf(%d,&x);y=0;if (x=0) if (x0) y=1; /* 此行应有一对花括号,否则结果不正确 */else y=-1;printf(x=%d,y=%dn,x,y);三、条件运算符 在if语句中又包含一个或多个if语句,称为if语句的嵌套。1. 条件运算符(三目): ? :2. 条件运算符的结合性: 自右向左3. 条件运算符的优先等级: 高于赋值和逗号运算符,比其它运算符都低4. 条件表达式: 表达式1?表达式2:表达式3条件表达式的执行及条件表达式的值:先计算表达式1之值,若条件表达式的值非0(条件成立),计算表达式2之值并将该值作为条件表达式之值;若表达式1的值为0(条件不成立),计算表达式3之值将表达式3之值作为整个条件表达式的值。请看下面的程序/* 输入一个字符,若为大写,转换成小写;若为小写,不变 */m

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论