版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言ch041关系逻辑和条件表达式教程第四章 选择构造程序设计Conditional Operator and ExpressionsBranching2022/8/222To be or not to be, this is a question.2022/8/2234.1 选择构造和条件判断4.2 用if语句实现选择构造4.3 关系运算符和关系表达式4.4 逻辑运算符和逻辑表达式4.5 条件运算符和条件表达式4.6 选择构造的嵌套4.7 用switch语句实现多分支选择构造4.8 选择构造程序综合举例内容2022/8/224ifif (x % 2 =0) printf(Yesn); 如果
2、条件为真,输出Yes否那么,什么也不做2022/8/225输入两个整数,交换这两个数后输出int a, b, t;scanf(%d %d, &a, &b);t = a;a = b;b = t;printf(%d %dn, a, b);2022/8/226 例4.3 输入3个整数a,b,c,要求按由小到大的顺序输出。解题思路:可以先用伪代码写出算法:if ab,a和b对换 a是a、b中的小者if ac,a和c对换 a是三者中最小者if bc,b和c对换 b是三者中次小者顺序输出a,b,c排序问题2022/8/227int a, b, c, t;scanf(%d %d %d, &a, &b, &c
3、);if (a b) / a是a、b中的小者 t = a; a = b; b = t; if (a c) / a是三者中最小者 t = a; a = c; c = t; if (b c) / b是三者中次小者 t = b; b = c; c = t; printf(%d %d %dn, a, b, c); 独占一行如果没有这个,会发生什么?2022/8/228else关键字if (x%2 = 0)y = x/2; else y = (x+1)/2; 如果条件为真,执行第一个分支如果条件为假,执行第二个分支2022/8/229输入一个整数,输出绝对值int a; scanf(%d,&a); if
4、 (a0) printf(%dn,a); else printf(%dn,-a); 2022/8/2210else if 关键字if (x%2 = 0) y = x/2; else if (x%4 = 1) y= 2 (x+3)/4);elsey = (x+1)/2;11关系运算符和表达式,=, 条件为真(true)if (a1)if (1) if (100)12优先级 P378( ) - .! + - +(正号) - * & (类型) sizeof* / %+ - = !=&|&|? := += -= *= /= %= &= = |= =,2022/8/2213关系、算术、赋值运算符的优先级
5、int a = 3, b = 2, c = 1;ca+b 等效于c(a+b)ab=c 等效于 (ab)=ca=bc 等效于 a=(bc 等效于 a=(bc)while(c=getchar() != EOF)while (c=getchar() != EOF)算术运算符 (高)赋值运算符 (低)关系运算符 2022/8/2214分清= 和 =int a = 1;if (a = 0)printf(OK);int a = 0;if (a = 0)printf(OK);int a = 1;if (a = 1)printf(OK);int a = 0;if (a = 0)printf(OK);2022/
6、8/2215分清= 和 =常量放左边,能起点小作用:int a = 0;if (0 = a)printf(OK);int a = 0;if (0 = a)printf(OK);编译出错2022/8/22164.4 逻辑运算符逻辑运算,运算结果为1和0&与运算,只有左右都为真,结果才是真(ab & bc);a大于b,并且b大于c|或运算,只有左右都为假,结果才是假(ab | bc); a大于b,或者b大于c!求反,非(!a);如果a是0,结果非0,即1;如果a是非0,结果是0并不改变a的值if (abc)?2022/8/2217修改后的逻辑运算真值表ab! aa & ba | b 非0非0011
7、非000010非0101001002022/8/2218逻辑运算符的优先级! & | 非与或与其他运算符的优先次序 ! 高算术运算符关系运算符 & 和 |赋值运算符 低2022/8/2219逻辑表达式举例假设a=4,那么!a的值为0假设a=4,b=5,那么a & b的值为1 a和b值分别为4和5,那么a|b的值为1a和b值分别为4和5,那么!a|b的值为14 & 0 | 2的值为15 3 & 8 4 - !002022/8/2220怎么表示如果分数80小于等于grade且小于90,那么五分制分数为A?if (80 = grade =80 & grade=80) & (gradeb) & (n=
8、cd)2022/8/2222判断闰年判别某一年是否闰年,用逻辑表达式表示闰年的条件是符合下面二者之一:P20能被4整除,但不能被100整除,如2021能被400整除,如2000(year % 4 = 0 & year % 100 !=0) | (year % 400 = 0)如果表达式值为1,那么闰年;否那么为非闰年2022/8/22234.4.3 逻辑型变量与C+或Java不同, 没有boolean类型 (in C89/C90)in C99, 增加_Bool 类型如果想用bool类型,使用244.5 条件表达式条件表达式的一般形式为表达式?表达式: 表达式把a和b中的最大值赋值给maxif
9、(a b) max = a;else max = b;max = (a b) ? a : b; 这种表达式切忌用得过于繁杂2022/8/2225条件表达式的执行顺序表达式?表达式: 表达式求解表达式1假设为非0真那么求解表达式2,此时表达式2的值就作为整个条件表达式的值假设表达式1的值为0假,那么求解表达式3,表达式3的值就是整个条件表达式的值2022/8/2226优先级( ) - .! + - + - * & (类型) sizeof* / %+ - = !=&|&|? := += -= *= /= %= &= = |= =,2022/8/2227结合方向自右至左以下为合法的使用方法,但不推荐。ab ? (max=a):(max=b);max = (ab?a:b);ab ? printf(%d,a): printf(%d,b);2022/8/2228例4.4 输入一个字符,判别
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 动词短语训练课件
- 2026湖北恩施州宣恩县园投人力资源服务有限公司招聘外包服务人员10人备考题库及答案详解(易错题)
- 2026上半年四川成都市温江区考核招聘副高级及以上职称教师7人备考题库及参考答案详解(培优)
- 2026山东烟台市中级人民法院招聘聘用制司法辅助人员8人备考题库附答案详解(研优卷)
- 2026贵州毕节大方大山乡人民政府招聘沙土村安置点自管委主任的1人备考题库及参考答案详解(模拟题)
- 酒店餐饮仪容仪表规范
- 2026广西玉林市北流市妇幼保健院招聘编外人员43人备考题库及参考答案详解(巩固)
- 精神疾病抑郁症治疗方案
- 2026广东清远市英德市人民武装部招聘专项临聘人员1人备考题库附参考答案详解(培优b卷)
- 2026广东珠海市拱北海关缉私局警务辅助人员招聘6人备考题库带答案详解(考试直接用)
- 艺术课程标准(2022年版)
- 妇幼健康服务工作评分细则
- JJG 968-2002烟气分析仪
- GB/T 2522-2017电工钢带(片)涂层绝缘电阻和附着性测试方法
- GB/T 193-2003普通螺纹直径与螺距系列
- GB/T 1149.3-2010内燃机活塞环第3部分:材料规范
- 七年级语文部编版下册第单元写作抓住细节课件
- 高校教师培训高等教育法规概论课件
- 基坑钢板桩支护计算书计算模板
- 焦聚优点-发现不一样的自己 课件-心理健康
- 【精品】东南大学逸夫建筑馆施工组织设计
评论
0/150
提交评论