版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、关键内容:关系运算、逻辑运算、二路和多路分支.挑选结构:依照前提决意履行二路或多路分支中的一路. 二路分支 if else 语句 多路分支 switch语句 第第4 4章章 挑选分支结构程序设计挑选分支结构程序设计例例: :从键盘上输入从键盘上输入x x、y y、z z三个整形变量三个整形变量, ,输出其中的最小输出其中的最小值值: :#include main() int x,y,z,min; scanf(“%d,%d,%d”, &x,&y,&z); if(xz) min = z; printf(“The least is:%dn”, min);举例举例 前提:是关系表达式或逻辑表达式,值为
2、逻辑值:真或假. C语言用1示意真,用0示意假; 推断时非0为真.4.1 4.1 关系运算符和关系表达式关系运算符和关系表达式 大于大于 = 大于等于大于等于 小于小于 = 小于等于小于等于 = 等于等于 ! = 不等于不等于关系运算符关系运算符讲明讲明: :(1) (1) 六个关系运算符根基上双目运算符六个关系运算符根基上双目运算符, , 似似:int a=2,b=3;:int a=2,b=3; a b a100 j100 结论为假结论为假. . 运算对象为字符信息时运算对象为字符信息时, ,对比按其对比按其ASCIIASCII码履行码履行 似似: : 表达式表达式:ab :ab 值为假值为
3、假(5)(5)与数学表达式的区不与数学表达式的区不 似: 3x100数学解讲: 推断x是否在区间(3,100)之内 C语言解讲: 按从左向右的次序履行统计 如果 x=0 先统计(3x)得值0,再统计(0100)得值1 整个表达式结论为1(3)(3)关系表达式的值能够做为整数值介入运算关系表达式的值能够做为整数值介入运算(4)(4)优先级次序优先级次序: : 算术运算符、关系运算符、赋值运算符算术运算符、关系运算符、赋值运算符. . 要示意推断x是否在区间(3,100)之内 (3x100),能够用逻辑运算符“&”毗邻两个关系表达式来示意,用逻辑运算符毗邻两个运算对象形成逻辑表达式. 似: 3x
4、& x100 在C语言中有三个逻辑运算符 & 逻辑与 | 逻辑或 ! 逻辑非意义:a & b 当a和b同时为真时,表达式的值为真. a | b 当a和b之一为真时,表达式的值为真. ! a 当a的值为真,那么表达式的值为假. 4.2 4.2 逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式讲明讲明: :(1 1)&和和|是双目运算符是双目运算符 !是单目运算符!是单目运算符(2 2)&和和|的运算级不低于关系运算符的运算级不低于关系运算符, , ! !的运算级不高于关系运算符和算术运算符的运算级不高于关系运算符和算术运算符, , 注重注重: !: !的联合方向是从右向左的联合方向是从右向左. .
5、& &和和|的联合方向是从左向右的联合方向是从左向右, ,(3 3)不能确定的情况下)不能确定的情况下, ,添加括号保证运算次序添加括号保证运算次序. .完量幸免复杂烦琐的逻辑表达式完量幸免复杂烦琐的逻辑表达式. .优先次序优先次序: : ! 算术运算算术运算 = = = != = != & & | | 赋值运算赋值运算(4 4)介入逻辑运算的运算对象能够是介入逻辑运算的运算对象能够是0 0(“假假”)或)或任何非任何非0 0的数值(的数值(“真真”);但运算后的结论和);但运算后的结论和关系运算的结论一样关系运算的结论一样, ,只能是逻辑值只能是逻辑值0 0和和1.1.C C语言无特意的逻辑
6、类型语言无特意的逻辑类型, ,其它类型的信息也可其它类型的信息也可 以介入逻辑运算以介入逻辑运算, ,在判不时在判不时,“,“非非0”0”做为做为“真真”,”, “0” “0”做为做为“假假”.”.(5 5)在逻辑表达式的求解中)在逻辑表达式的求解中, ,同时不是全部的逻辑运同时不是全部的逻辑运 算符都被履行算符都被履行, ,只有在必须履行下一个逻辑运只有在必须履行下一个逻辑运 算符才能求出表达式的解时算符才能求出表达式的解时, ,才履行该运算符才履行该运算符. .例例: int x=-1; 履行了履行了+x|+x|+x 后后,x的值是?的值是? x=1例 如果a=0; b=0.5; x=0.
7、3; 那么 a=x0 结论为1 A100 结论为0例 注重辨识=与=的差不 int a=0,b=1; if(a=b) printf(a equal to b); else printf(a not equal to b);例 应幸免对实数作相等或不等的推断 似 1.03.0*3.0=1.0 结论为0 可改写为:fabs(1.03.0*3.0-1.0)y) max=x; else max=y;4.3 4.3 二路分支二路分支:if:if语句语句简单简单ifif语句语句语句形式语句形式: :if (if (表达式表达式) ) 语句语句; ;履行环节履行环节: : 似果表达式值非似果表达式值非0,0
8、,履行该语句履行该语句, , 接着履行接着履行ifif的下一个语句的下一个语句; ; 否那么直截了当履行否那么直截了当履行ifif的下一个语句的下一个语句. .例例: main() int a,b,max; printf(”n 请输入两个数请输入两个数: ”); scanf(”%d%d”,&a,&b); max=a; if (maxzxz交流交流x,yx,yxyxy输入输入x,y,zx,y,zY YN NY YN N交流交流y,zy,zyzyzY YN N#include main() int x,y,z,t; printf(“Please input the x,y,z: ”); scanf
9、(“%d%d%d”,&x,&y,&z); if (xy) t=x; x=y; y=t; if (xz) t=x; x=z; z=t; if (yz) t=y; y=z; z=t; printf(“Small to big:%d%d%dn”,x,y,z);if-elseif-else语句语句语句形式语句形式: :if (if (表达式表达式) ) 语句语句1;1;else else 语句语句2;2;履行流程履行流程: : 似果表达式值非似果表达式值非0,0,履行语句履行语句1 1; 否那么否那么, ,履行语句履行语句2 2; 不管履行了哪一路分支之后不管履行了哪一路分支之后, ,都履行都履行if
10、if的下一条语的下一条语句句. .例例 if(xy) max=x; else max=y; printf(”max=%d”,max););例例.推断给定的某一年是否是闰年推断给定的某一年是否是闰年. 对比对比: :似果某年能被似果某年能被4 4整除而不能被整除而不能被100100整除整除, , 大概能被大概能被400400整除整除, ,那么该年便是闰年那么该年便是闰年, , 否那么便是平年否那么便是平年. . if(year%4=0&year%100!=0|year%400=0) #includemain() int year,leap=0; printf(n请输入年份(请输入年份(yyyy)
11、:); scanf(%d,&year); *推断该年是否是闰年推断该年是否是闰年* if(year%4=0&year%100!=0|year%400=0) leap=1; if(leap) *leap=1,即该年是闰年即该年是闰年* printf(%d年是闰年年是闰年.n,year); else *leap=0,即该年是平年即该年是平年* printf(%d年是平年年是平年.n,year); if-else-if形式语句形式: if (表达式1) 语句1; else if (表达式2) 语句2; else if(表达式3) 语句3; else if(表达式m) 语句m; else 语句n;例例
12、: :有一个函数似下有一个函数似下: x (x1) y= 2x+1 (1x10) 5x-17 (x10)编程序编程序, 输入输入x值值, 输出输出y值值 main( ) float x,y; printf(Input x:); scanf(%f,&x); if (x1) y=x; else if (x10) y=2*x+1; else y=5*x-17; printf(y=%fn,y); 如果将如果将if语句改为语句改为:if (x1) y=x;else if (1=x10) y=2*x+1;else y=5*x-17;在在x10时时y值错误值错误因因 1=x10 永为真永为真对比对比: :依
13、照输入字符的依照输入字符的ASCIIASCII码来判不类型码来判不类型. . 例例. .编写程序编写程序, ,要求判不键盘输入字符的类不要求判不键盘输入字符的类不. .#includestdio.hmain() char c; printf(n Please input a character :n); c=getchar(); if(c=0&c=A&c=a&c=z) printf( It is a lower letter!n); else printf( It is other character!n);讲明讲明:(1) (1) 三种形式的三种形式的ifif语句中都表现的语句中都表现的“表
14、达式表达式”,”,不仅只限不仅只限 于逻辑和关系表达式于逻辑和关系表达式, ,还能够是任何类型的;还能够是任何类型的;(2) if(2) if语句中语句中, ,推断前提表达式必须用推断前提表达式必须用( )( )括起来括起来, , 前提背面不加分号前提背面不加分号, ,但语句之后有分号;但语句之后有分号;(4) if (4) if 和和else else 后的语句能够只有一条后的语句能够只有一条, ,也能够使用也能够使用 包罗的几条语句构成的复合语句包罗的几条语句构成的复合语句. .(3) else(3) else不是语句不是语句, ,不能单独使用不能单独使用, ,与与ifif配对使用;配对使
15、用;(5) if(x) (5) if(x) if(x!=0) if(x!=0)(6) if(!x) (6) if(!x) if(x=0) if(x=0)例例 思考下面程序的输出结论思考下面程序的输出结论#include main() int x,y,t; scanf(“%d%d”,&x,&y); if (xy) t=y; y=x; x=t; else x+; y+; printf(“%d,%dn”,x,y);Compile Error!if if 语句的嵌套语句的嵌套在在ifif语句中语句中: : if ( if (表达式表达式) ) 语句语句1 1 else else 语句语句2 2语句语句
16、1 1和语句和语句2 2都能够是另外一条都能够是另外一条ifif语句语句if (if (表达式表达式1)1) if ( if (表达式表达式2) 2) 语句语句1 1 else else 语句语句2 2else else if ( if (表达式表达式3) 3) 语句语句3 3 else else 语句语句4 4if (if (表达式表达式1) 1) 语句语句1 1else else if ( if (表达式表达式2) 2) 语句语句2 2 else else 语句语句3 3if (if (表达式表达式1)1) if ( if (表达式表达式2) 2) 语句语句1 1 else else 语句
17、语句2 2 else else 语句语句3 3讲明讲明:(1) else (1) else 老是与近来的老是与近来的ifif匹配匹配; ;(2) else(2) else不能单独表现不能单独表现, ,老是与老是与ifif配对使用配对使用. .main( ) int x=2,y=-1,z=2; if(xy) if(y0) z=0; else z+=1; printf(“z=%dn”,z); z=2编写原那么编写原那么: :1 1、次序履行的语句对齐;、次序履行的语句对齐;2 2、挑选体向内缩进、挑选体向内缩进3 34 4字符;字符;3 3、如果挑选体内嵌套、如果挑选体内嵌套ifif语句语句, ,
18、那么那么该该 if if语句的挑选体亦接着向内缩语句的挑选体亦接着向内缩进进; ;4 4、如果挑选体内的语句多于、如果挑选体内的语句多于1 1条条, ,那么那么 必须使用必须使用 括起来;括起来;5 5、原那么上、原那么上, ,挑选体内只有一条语句挑选体内只有一条语句 时时, ,能够不使用能够不使用 括起来括起来, , 但似果该语句分成多行编写时但似果该语句分成多行编写时, , 那么使用那么使用 具有更强的可读性具有更强的可读性. .main( ) ; if ( ab ) ; if( cb)?a:b例: (a=b) ? Y: N (x%2=1) ? 1: 0 (x=0) ? x: -x (c=
19、a & c=z) ? c-a+A: c4.4 4.4 前提运算符和表达式前提运算符和表达式形式: switch (表达式) case 常量1:语句序列1 ; break; case 常量2:语句序列2 ; break; case 常量n:语句序列n ; break; default: 语句序列n+1 ; 4.5 4.5 多路分支多路分支-Switch-Switch语句语句 switch语句的履行环节是语句的履行环节是: 第一步统计表达式的值第一步统计表达式的值,如果该值与某个如果该值与某个case背面的背面的常量相等常量相等, 那么履行其后的语句序列那么履行其后的语句序列, 遇到遇到break
20、语句时语句时, 跳出跳出switch 语句语句; 似果表达式的值与全部常量都不相等似果表达式的值与全部常量都不相等, 如果存在如果存在default那么履行其后的语句序列那么履行其后的语句序列,否那么啥也否那么啥也不做不做.讲明讲明: 1. switch语句中的表达式能够为任何类型语句中的表达式能够为任何类型, 一样一样为整型或字符型为整型或字符型, 相应地常量的类型应与其一样相应地常量的类型应与其一样. 2. 同一同一switch语句的各语句的各case常量值常量值, 必须互不一样;必须互不一样; 3. 多个多个case常量能够共用一组履行语句常量能够共用一组履行语句,但常量应该分但常量应该
21、分开来写开来写,不能写在同一不能写在同一case语句中;语句中;case A:case B:case C: printf(“examplen”);break; 3. case常量相当于语句标号常量相当于语句标号; 履行履行switch语句时语句时, 寻寻到与表达式值相等的某到与表达式值相等的某case常量常量,从此标号最先履行从此标号最先履行下去下去, 对往后的标号不再对比对往后的标号不再对比,直到直到“”为止为止; 一样一样应该在每个应该在每个case后的语句序列跟一个后的语句序列跟一个break 语句以语句以便跳出便跳出switch正的确现多分支正的确现多分支, 可信任可信任break语句是语句是case中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 财务审计保密协议书
- 乡村旅游服务成本控制规范考核试卷
- 2025年服装行业服装产业可持续发展模式研究报告及未来发展趋势预测
- 2025年智慧医疗认证考试-智慧医院应急救援能力建设考核试卷
- 环境影响评价卫星遥感技术应用考核试卷
- 2025年公诉环节检务督察实务考核试卷
- 城市更新中的传统节日文化空间营造考核试卷
- 2025年航海航运行业航海技术发展与航运产业研究报告及未来发展趋势预测
- 2025年旅游市场旅游演艺活动监管政策考核试卷
- 2025年物流自动化医药生产车间拣选工业机器人视觉定位技师考核试卷
- 职业技术学校《医疗设备质量控制与检测技术》课程标准
- 管理经济学:理论与案例 第2版 课件全套 毛蕴诗 第1-14章 企业性质与环境、企业目标 -政府与企业
- 股权代持与股权合作协议书范本
- 医院肺功能室进修出科小结
- 网络传播概论(彭兰第5版) 课件全套 第1-8章 网络媒介的演变-网络传播中的“数字鸿沟”
- 智能医疗的法律与伦理问题研究
- 盒马鲜生财政报告分析
- 被执行人生活费申请书范文
- TSM5514G 丰田试验测试标准
- 厂房施工方案包括
- 放弃继承权声明书(模板)
评论
0/150
提交评论