C语言-ch04-1-关系、逻辑和条件表达式教程.ppt

上传人:豆**** 文档编号:24475701 上传时间:2022-07-05 格式:PPT 页数:31 大小:276.50KB
返回 下载 相关 举报
C语言-ch04-1-关系、逻辑和条件表达式教程.ppt_第1页
第1页 / 共31页
C语言-ch04-1-关系、逻辑和条件表达式教程.ppt_第2页
第2页 / 共31页
点击查看更多>>
资源描述

《C语言-ch04-1-关系、逻辑和条件表达式教程.ppt》由会员分享,可在线阅读,更多相关《C语言-ch04-1-关系、逻辑和条件表达式教程.ppt(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、2022-7-52第四章 选择结构程序设计Conditional Operator and ExpressionsBranching2022-7-53To be or not to be, this is a question.2022-7-54n4.1 选择结构和条件判断选择结构和条件判断n4.2 用用if语句语句实现选择结构实现选择结构n4.3 关系关系运算符和关系表达式运算符和关系表达式n4.4 逻辑逻辑运算符和逻辑表达式运算符和逻辑表达式n4.5 条件条件运算符和条件表达式运算符和条件表达式n4.6 选择结构的嵌套选择结构的嵌套n4.7 用用switch语句语句实现多分支选择结构实现多

2、分支选择结构n4.8 选择结构程序综合举例选择结构程序综合举例内容2022-7-55ifif (x % 2 =0) printf(Yesn); n如果条件为真,输出如果条件为真,输出Yesn否则,什么也不做否则,什么也不做2022-7-56输入两个整数,交换这两个数后输出int a, b, t;scanf(%d %d, &a, &b);t = a;a = b;b = t;printf(%d %dn, a, b);2022-7-57 例4.3 输入3个整数a,b,c,要求按由小到大的顺序输出。n解题思路:可以先用伪代码写出算法:解题思路:可以先用伪代码写出算法:nif ab,a和和b对换对换 (

3、a是是a、b中的小者)中的小者)nif ac,a和和c对换对换 (a是三者中最小者)是三者中最小者)nif bc,b和和c对换对换 (b是三者中次小者)是三者中次小者)n顺序输出顺序输出a,b,c排序问题2022-7-58int a, b, c, t;scanf(%d %d %d, &a, &b, &c);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; pri

4、ntf(%d %d %dn, a, b, c); 独占一行独占一行如果没有这个如果没有这个,会发,会发生什么?生什么?2022-7-59else关键字if (x%2 = 0)y = x/2; else y = (x+1)/2; n如果条件为真,执行第一个分支如果条件为真,执行第一个分支n如果条件为假,执行第二个分支如果条件为假,执行第二个分支2022-7-510输入一个整数,输出绝对值int a; scanf(%d,&a); if (a0) printf(%dn,a); else printf(%dn,-a); 11else if 关键字if (x%2 = 0) y = x/2; else i

5、f (x%4 = 1) y= 2 (x+3)/4);elsey = (x+1)/2;12关系运算符和表达式n,=, 条件为真条件为真(true)nif (a1)nif (1) if (100)2022-7-513优先级 P378n( ) - .n! + - +(正号正号) - * & (类型类型) sizeofn* / %n+ -nn =n= !=n&nn|n&n|n? :n= += -= *= /= %= &= = |= =n,2022-7-514关系、算术、赋值运算符的优先级nint a = 3, b = 2, c = 1;nca+b n等效于等效于c(a+b)nab=c n等效于等效于

6、(ab)=cna=bc n等效于等效于 a=(bc n等效于等效于 a=(bc)nwhile(c=getchar() != EOF)nwhile (c=getchar() != EOF)算术运算符算术运算符 (高高)赋值运算符赋值运算符 (低低)关系运算符关系运算符 2022-7-515分清= 和 =nint a = 1;if (a = 0)printf(OK);nint a = 0;if (a = 0)printf(OK);nint a = 1;if (a = 1)printf(OK);nint a = 0;if (a = 0)printf(OK);2022-7-516分清= 和 =n常量放

7、左边,能起点小作用:常量放左边,能起点小作用:nint a = 0;if (0 = a)printf(OK);nint a = 0;if (0 = a)printf(OK);2022-7-5174.4 逻辑运算符n逻辑运算,运算结果为逻辑运算,运算结果为1和和0n&n与运算,只有左右都为真,结果才是真与运算,只有左右都为真,结果才是真n(ab & bc);a大于大于b,并且,并且b大于大于cn|n或运算,只有左右都为假,结果才是假或运算,只有左右都为假,结果才是假n(ab | bc); a大于大于b,或者,或者b大于大于cn!n求反,非求反,非n(!a);如果如果a是是0,结果非,结果非0,即

8、,即1;如果如果a是是非非0,结果,结果是是0n并不改变并不改变a的值的值if (abc)?2022-7-518修改后的逻辑运算真值表ab! aa & ba | b 非非0非非0011非非000010非非0101001002022-7-519逻辑运算符的优先级n! & | (非(非与与或)或)n与其他运算符的优先次序与其他运算符的优先次序 ! (高)(高)算术运算符算术运算符关系关系运算符运算符 & 和和 |赋值运算符赋值运算符 (低)(低)2022-7-520逻辑表达式举例n若若a=4,则,则!a的值为的值为n0n若若a=4,b=5,则,则a & b的值为的值为n1n a和和b值分别为值分别

9、为4和和5,则,则a|b的值为的值为n1na和和b值分别为值分别为4和和5,则,则!a|b的值为的值为n1n4 & 0 | 2的值为的值为n1n5 3 & 8 4 - !0n02022-7-521n怎么表示怎么表示如果分数如果分数80小于等于小于等于grade且小于且小于90,则五则五分制分数为分制分数为A?nif (80 = grade =80 & grade=80) & (gradeb) & (n=cd)2022-7-523判断闰年n判别某一年是否闰年,用逻辑表达式表示判别某一年是否闰年,用逻辑表达式表示n闰年的条件是符合下面二者之一:闰年的条件是符合下面二者之一:P20能被能被4整除,但

10、不能被整除,但不能被100整除,如整除,如2008能被能被400整除,如整除,如2000n(year % 4 = 0 & year % 100 !=0) | (year % 400 = 0)n如果表达式值为如果表达式值为1,则闰年,则闰年;否则为非闰年否则为非闰年244.4.3 逻辑型变量n与与C+C+或或JavaJava不同不同, , 没有没有booleanboolean类型类型 (in C89/C90) (in C89/C90)nin C99, in C99, 增加增加_Bool _Bool 类型类型n如果想用如果想用boolbool类型,使用类型,使用stdbool.hstdbool.h

11、2022-7-5254.5 条件表达式n条件表达式的一般形式为条件表达式的一般形式为n表达式表达式?表达式表达式: 表达式表达式n把把a和和b中的最大值赋值给中的最大值赋值给maxnif (a b) max = a;else max = b;nmax = (a b) ? a : b; n这种表达式切忌用得过于繁杂这种表达式切忌用得过于繁杂2022-7-526条件表达式的执行顺序n表达式表达式?表达式表达式: 表达式表达式n求解表达式求解表达式1n若为非若为非0(真)则求解表达式(真)则求解表达式2,此时表达式,此时表达式2的值就的值就作为整个条件表达式的值作为整个条件表达式的值n若表达式若表达

12、式1的值为的值为0(假),则求解表达式(假),则求解表达式3,表达式,表达式3的值就是整个条件表达式的值的值就是整个条件表达式的值2022-7-527优先级n( ) - .n! + - + - * & (类型类型) sizeofn* / %n+ -nn =n= !=n&nn|n&n|n? :n= += -= *= /= %= &= = |= =n,2022-7-528n结合方向结合方向自右至左自右至左n以下为合法的使用方法,但不推荐。以下为合法的使用方法,但不推荐。nab ? (max=a):(max=b);nmax = (ab?a:b);nab ? printf(%d,a): printf(%d,b);2022-7-529n例例4.4 输入一个字符,判别它是否大写字母,如果是,输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母将它转换成小写字母;如果不是,不转换。然后输出如果不是,不转换。然后输出最后得到的字符。最后得到的字符。char ch;printf(请输入一个字符,按回车结束:请输入一个字符,按回车结束:);scanf(%c, &ch);ch = (ch=A & ch,=,=,=,!=n=和和=的区别的区别n逻辑运算符和表达式逻辑运算符和表达式n& | !n?:nif

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁