版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、关系运算符和表达式1、关系运算符 在程序中经常需要比较两个量的大小关系, 以决定程序下一步的工作。比较两个量的运算符称为关系运算符。 在语言中有以下关系运算符: 小于 大于 = 大于或等于 = 等于 != 不等于 关系运算符都是双目运算符,其结合性均为左结合。 关系运算符的优先级低于算术运算符,高于赋值运算符。 在六个关系运算符中,,=的优先级相同,高于=和!=,=和!=的优先级相同。第五章 选择结构程序设计12、关系表达式 关系表达式的一般形式为: 表达式 关系运算符 表达式 例如:a+bc-d,x3/2 a+1(bc),a!=(c=d)等。关系表达式的值是“真”和“假”,用“1”和“0
2、”表示。 如: 50的值为“真”,即为1。 (a=3)(b=5)由于35不成立,故其值为假,即为0。 2 #include main() char c=k; int i=1,j=2,k=3; float x=3e+5,y=0.85; printf(%d,%dn,a+5=k+1); printf(%d,%dn,1j5,x-5.25b & cd等价于(ab) & (cd) !b=c|da等价于(!b)=c)|(dc & x+yc) & (x+y)0 & 42 由于50为真,42也为真,&结果为真。 加速法则:若0&x,则x不进行运算。 2.或运算| 参与运算的两个量只要有一个为真,结果就为真。 两
3、个量都为假时,结果为假。 例如:50|58,由于50为真,|结果也就为真。 加速法则:若1|x,则x不进行运算。53.非运算! 参与运算量为真时,结果为假;参与运算量为假时,结果为真。例如:!(50)的结果为假。 虽然编译在给出逻辑运算值时,以“1”代表“真”,“0 ”代表“假”。 但反过来在判断一个量是为“真”还是为“假”时,以“0”代表“假”,以非“0”的数值作为“真”。例如:由于5和3均为非“0”因此5&3的值为“真”,即为1。又如:5|0的值为“真”,即为1。 63、逻辑表达式 逻辑表达式的一般形式为: 表达式 逻辑运算符 表达式 其中的表达式可以又是逻辑表达式,从而组成了嵌套的情形。
4、例如: (a&b)&c 根据逻辑运算符的左结合性,上式也可写为: a&b&c 逻辑表达式的值是式中各种逻辑运算的最后值,以“1”和“0”分别代表“真”和“假”。 7 #include main() char c=k; int i=1,j=2,k=3; float x=3e+5,y=0.85; printf(%d,%dn,!x*!y,!x); printf(%d,%dn,x|i&j-3,ij&xy); printf(%d,%dn,i=5&c&(j=8),x+y|i+j+k); 本例中!x和!y分别为0,!x*!y也为0,故其输出值为0。由于x为非0,故!x的逻辑值为0。对x| i & j-3式,
5、先计算j-3的值为非0,再求i & j-3的逻辑值为1,故x|i&j-3的逻辑值为 1。对ij&xy式,由于ij的值为1,而xy为0.故表达式的值为1,0相与,最后为0,对i=5&c&(j=8)式,由于i=5为假,即值为0,该表达式由两个与运算组成,所以整个表达式的值为0。对于式x+ y|i+j+k由于x+y的值为非0,故整个或表达式的值为1。8三、条件语句 用if语句可以构成分支结构。它根据给定的条件进行判断, 以决定执行某个分支程序段。语言的if语句有三种基本形式。1.第一种形式为基本形式 if(表达式) 语句; 其语义是:如果表达式的值为真,则执行其后的语句, 否则不执 行该语句。 #i
6、ncludemain() int a,b,max; printf(n input two numbers:); scanf(%d%d,&a,&b); max=a; if (maxb) printf(max=%dn,a); else printf(max=%dn,b);例:103.第三种形式为if-else-if形式 前二种形式的if语句一般都用于两个分支的情况。 当有多个分支选择时,可采用if-else-if语句,其一般形式为: if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; else if(表达式m) 语句m; else 语句n; 其语
7、义是:依次判断表达式的值,当出现某个值为真时, 则执行其对应的语句。然后跳到整个if语句之外继续执行程序。 如果所有的表达式均为假,则执行语句n 。 然后继续执行后续程序。11 #include main() char c; printf(input a character:); c=getchar(); if(c= 0 &c=A&c=a&cb) a+; b+; else a=0; b=10; 155、语句的嵌套 当if语句中的执行语句又是if语句时,则构成了if 语句嵌套的情形。其一般形式可表示如下: if(表达式) if语句; 或者为 if(表达式) if语句; else if语句; 16
8、 在嵌套内的if语句可能又是if-else型的,这将会出现多个if和多个else重叠的情况,这时要特别注意if和else的配对问题。例如: if(表达式1) if(表达式2) 语句1; else 语句2; 应该理解为: 还是应理解为: if(表达式1) if(表达式1) if(表达式2) if(表达式2) 语句1; 语句1; else 语句2; else 语句2; 为了避免这种二义性,语言规定,else 总是与它前面最近的if配对,因此对上述例子应按前一种情况理解。 17 #include main() int a,b; printf(please input A,B:); scanf(%d%
9、d,&a,&b); if(a!=b) if(ab) printf(ABn); else printf(AB、AB或A=B。这种问题用if-else-if语句也可以完成。而且程序更加清晰。因此,在一般情况下较少使用if语句的嵌套结构。 以使程序更便于阅读理解. 18小结 if 条件语句一. 条件语句的一般形式为:真 if (表达式) 语句1; else 语句2;语句语句表达式假19例:求任一实数的绝对值#include stdio.hmain( )double x, xabs;printf(input a data :);scanf(%lf,&x);if(x20|x-10) if (yx) pr
10、intf(Good); else printf(Bad); C规定: else语句与它最近的一个if配对 若为了使else与if(x20|x20|x-10) if (yx) printf(Good); else printf(Bad);22. 可用阶梯式if-else-if结构来实现多种条件的选择 阶梯式结构的一般形式为: if (表达式1) 语句1; else if (表达式2) 语句2; else if (表达式3) 语句3; . . else 语句n;这种结构是从上到下逐个对条件进行判断, 一旦发现条件满足就执行与它有关的语句, 并跳过其它剩余阶梯; 若没有一个条件满足, 则执行最后一个
11、else语句n。最后这个else常起着缺省条件的作用。23四. 条件运算符和条件表达式1. 条件运算符 ? : 是 C语言唯一的一个三目运算符, 其功能为:若在 If 语句中,无论条件表达式为真或为假,均是用赋值语句对同一个变量赋值时,可用条件运算符处理。即? if (ab) max = a ; else max = b ; 等价于 max = (ab) ? a: b ;242条件表达式一般形式是: ? : 求值过程是: 先求表达式1的值, 若为真, 则求表达式2 的值并把它作为整个表达式的值; 若表达式1 的值为假, 则求表达式3 的值并把它作为整个表达式的值。253说明:) 条件运算符的优
12、先级算术运算符关系运算符条件运算符赋值运算符(高)(低)max = (ab) ? a : b ;与max = ab ? a : b ;等价y= ab ? a : (b+1) ; 与 y = ab ? a : b+1 ;等价2) 条件运算符的结合性: 自右向左例: a=1 , b=2 ,c=3 ,d=4, 则条件表达式a b ? a : c d ? c: d 的值为4263) 条件表达式不能取代一般的 if 语句,只能取代if 语句中特殊的一种.例: if (a b) printf (%d, a); else printf (%d, b);可用 printf(%d, a b ? a: b );取
13、代.) 条件表达式中,表达式的类型可与表达式及不同,表达式和 表达式的类型也可不同,而条件表达式值的类型取表达式和中的较高者例:int x, y; x ? a:b 值为字符型 x y ? 1 : 1.5 值为实型 27例:求a,b,c中的绝对值最大的数#include #include main()float a,b,c,max;printf(“input three data:n”);scanf(“%f%f%f ”,&a,&b,&c);if(fabs(a)fabs(b) max = fabs(a)fabs(c)? a : c ; else max = fabs(b)fabs(c)? b :
14、c ;printf(“a=%.2f,b=%.2f,c=%.2f,max=%.2f”,a,b,c,max); 28一般形式为: switch(表达式) case 常量表达式1: 语句1或空; case 常量表达式2: 语句2或空; . . case 常量表达式n: 语句n或空; default: 语句n+1或空; 说明: 1.执行switch语句时, 将表达式的值逐个与case后的常量进行比较, 若与其中一个相等, 则执行该常量下的语句, 若不与任何一个常量相等, 则执行default 后面的语句。五、 switch语句292. switch中表达式与case后的常量可为任何类型3. 每一个ca
15、se后常量表达式的值必须互不相同,否则出现矛盾。4. 每个case或default后的语句可以是复合语句, 但不需要使用和括起来。执行完一个case后面语句后,流程控制转移到下一个case 继续执行因此,若想在不同情况下执行不同的语句,必须使用break语句。break语句的功能:将程序流程控制跳出整个switch语句,执行switch语句的下一条语句30switch(grade) case A: printf(85100n);break; case B: printf(7084n); break; case C: printf(6069n); break; case D: printf(60
16、n); break; default: printf(Errorn);6.多个 case 可共用一组执行语句例: case A: case B: case C: printf(60n); break;例:31选择结构程序设计举例 例: 将任意三个整数按从大到小的顺序输出。 #include stdio.hvoid main()int x,y,z,t;scanf(%d,%d,%d,&x,&y,&z);if(xy) t=x;x=y;y=t; /*交换x,y的值*/if(xz) t=x;x=z;z=t; /*交换x,z的值*/if(yc&a+cb&b+ca) if(a=b&b=c) printf(e
17、qualateral triangle.n); else if(a=b|a=c|b=c) printf(isoscelestriangle.n); else printf(other triangle.n); else printf(can notn);34例: 从键盘输入一个年份,判断是否是闰年。#include stdio.hvoid main()int year; scanf(%d,&year); if(year%400=0|(year%4=0&year%100!=0) printf(%d is a leap yearn,year);else printf(%d is not a leap yearn,year);351.main() int x=1,y=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗数据安全区块链保护的应用场景分析
- 医疗数据安全共享的区块链激励案例剖析
- 胆肠吻合课件
- 医疗数据安全保险互操作机制
- 山东省决胜新2026届生物高一上期末联考试题含解析
- 2026届天津市滨海新区七所重点中学高三生物第一学期期末学业水平测试模拟试题含解析
- 医疗数据安全FMEA防护策略
- 东莞市重点中学2026届数学高三第一学期期末达标检测试题含解析
- 医疗数据区块链共识机制:效率与安全平衡
- 医疗数据区块链共享的存证机制
- 高二电磁学考试题及答案
- 2025下半年贵州遵义市市直事业单位选调56人笔试考试参考题库及答案解析
- 2025鄂尔多斯达拉特旗第二批事业单位引进28名高层次、急需紧缺人才考试笔试模拟试题及答案解析
- 甲状腺癌放射性碘抵抗机制研究
- 包治祛痘合同范本
- 门窗的代理合同范本
- 2025年秋国家开放大学《思想道德与法治》终考大作业试卷一附答案【供参考】
- 20252025年(完整版)三级安全教育真题试卷含答案
- 人教版2025-2026学年八年级上册数学期末考试模拟试卷
- 挂名法人代表协议合同
- 《软件工程》机考题库
评论
0/150
提交评论