




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章 选择结构程序设计4.1 选择结构和条件判断4.2 用if语句实现选择结构4.2.1 用if语句处理选择结构4.2.2 if语句的一般形式if语句一般有三种形式:1)if( 条件 )/若干条语句2)if( 条件 )/若干条语句else/若干条语句3)if( 条件1 )/若干条语句else if( 条件2 )/若干条语句 else if( 条件3 )/若干条语句else/若干条语句如:1)if( ab )t=a;a=b;b=t;2)if( ab )c=a;elsec=b;3)if( ab )d=a;else if(bc)d=b;elsed=c;注意:在上面的一对大括号构成了一条复合语句,如果里面有多条语句,则不得省略,如果里面只有一条语句,则可以省略。4.3 关系运算符和关系表达式4.3.1 关系运算符及其优先次序C语言中有6种关系运算符(1)(2)(4)=(5)等于(6)!= 不等于其中前面四个优先相同,后面两个优先级相同,且前面四个高于后面两个,可用()来改变其优先级。4.3.2 关系表达式以C语言中,没有所谓的逻辑类型数据(boolean),只用非0来表示真,用0来表示假,通常用1表示真,用0表示假。一个数据,只要不是0,哪怕是0.00004也是真。而在C语言中,凡是经过关系运算符计算后的关系表达式,得到的结果只有1或0.其中如果为真,则得到结果1,如果为假,则得到结果0.如:int a=5,b=-3,c=-7;if(ab)其中ab就是一个关系表达式,其结果取决于a是否大于b,如果成立(真),那么ab的结果就是1,反之就是0。还可以写出以下奇怪的语句:if(ab)-(ac)其结果:由于ab为真得到1,而ac也得到1,再将1-1得到0(假),整个if语句的结果为假。4.4 逻辑运算符和逻辑表达式4.4.1 逻辑运算符及优先次序在C语言中有3种逻辑运算符:&:逻辑与|:逻辑或!:逻辑非需要注意的是,凡是用逻辑运算符计算后的结果仍然像上面关系表达式一样,结果为1或0.4.4.2 逻辑表达式仍然要特别注意的是:短路规则。举一个小例子:int a=5,b=-3,c=-7;if( (a+0) | (b+0) | (c+0) )由于a+0直接得到1(真),而后面又是用|连接起来的,故后面不会进行计算,从而a+0将后面短路了,所以b+和c+都不会运行,从而最后结果:a=6,b=-3,c=-74.4.3 逻辑型变量在新的C规范中,引入了一个所谓的逻辑型类型数据:_Bool4.5 条件运算符和条件表达式C语言中有唯一的一个三目运算符:表达式1 ? 表达式2 : 表达式3其含义为,先计算表达式1,测试其结果是非0还是0,如果得到非0,则到表达式2的值,否则取表达式3的值。如:int a=5,b,c;b=a0 ? 100:-10;含义为先测试a0是否为真,为真取100,否则取-10;条件运算符可以嵌套,如:int a=5,b-3,c-7,d;d=a0 ? (b0? (c0? 10:100):100):1000;最后d的结果为100.实际上,条件运算符,相当于一个if-else语句。小练习:利用嵌套的条件运算符找出a、b、c三个整数中的最大数。4.6 选择结构的嵌套if-else语句嵌套的一般形式:if(条件1)if(条件2)if(条件3)/语句1else/语句2else/语句3elseif(条件4)/语句4else/语句5如:int a=5,b=-3,c=-7,d=9,e;if(a0)if(c0)if(d0)e=d;elsee=-d;elsee=c;elseif(b0)e=b;elsee=-b;在写嵌套if-else语句时,两个良好的习惯:1)加来将对应的if-else正确配对及隔开2)用锯齿型来书写程序。需要注意的问题:if-else的配对问题;如:if( a0 )if(b0)e=b;elsee=a;则else语句只能与外层的if(a0)进行配对,因为if(b0)被包住了。4.7 用switch语句实现多分支选择结构用if-else语句可以实现任何选择结构,但是,如果if-else太多,程序可读性会变差,这时,可以使用switch来取代部分的if-else语句。switch语句的一般格式:switch( 表达式 )case 常量1:语句1;case 常量2:语句2;.default:语句n+1;说明:1)switch(表达式)中的表达式,只能是整型数据(int、long、short、char),不能是float和double2)case 常量中的常量,必须是明确值的常量,不能是变量。3)case中的语句,可以是多条语句,且可以不加4)多条case没有顺序关系,其常量值的顺序可以任意,default语句可以位于任何位置。5)一般在case中应该有一条break语句,来表示执行完本case后,应该跳到switch后面执行,如果没有break,则会沿着这个case继续执行下面的case,直到遇到一个break。6)case 常量中的常量,应该唯一,也就是说,不能出现两个相同的case。switch的执行过程是:1)先计算表达式的值2)到下面查找对应的case,如果某个case的常量值与计算得到的值相同,则程序跳到该case中进行执行3)如果没有任何case的值与该表达式的值相同,则执行default语句4)但是如果在第三种情况下,没有default语句,则switch结束的执行。例如,根据用户的选择(1、2、3、4),进行不同的处理:4.8 程序流程图对于if-else语句来讲,可用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论