C语言(第04章).pptVIP

  • 1
  • 0
  • 约5.69千字
  • 约 28页
  • 2018-03-27 发布于江西
  • 举报
C语言(第04章).ppt

第四章 选择结构程序设计 关系运算符和关系表达式 逻辑运算符和逻辑表达式 if语句 switch语句 程序举例 选择结构程序设计 选择型程序所解决的问题称为判断问题,它描述的求解规则是:在不同的条件下所应进行的相应操作。 书写选择结构的步骤是: 首先确定要判断的是什么条件 进一步再确定判断结果为不同的情况(“真”或“假”)时应该分别执行什么样的操作。 C语言中可用三种语句来实现选择结构。 4.1 关系运算符与关系表达式 关系运算是指对两个运算量之间的大小比较。 C语言中提供的关系运算符有6个: (大于) =(大于等于) ==(等于) (小于) =(小于等于) !=(不等于) ==和!=的优先级小于其它四个。并且,它们都低于纯算术类,高于赋值类。它们都是从左向右的结合方式。 关系表达式的值只有两个: 表达式成立,即为“真”,以“1”表示; 表达式不成立,即为“假”,以“0”表示 关系运算注意事项 要说明x在区间[a,b]中,数学中使用表达式 a≤x≤b,但C语言中的表达式 a=x=b的含义与之不同。为了判别x是否在[a,b]范围内应写成:a=x x=b 由于关系表达式的值是整型数0或1,故也可以将其看成是一种整型表达式。 由于字符数据按ASCII码存储,所以可以把它作为整数参加运算和比较。 在判定两个浮点数是否相等时,由于存储上的误差,会得出错误的结果。例如:1.0/3.0*3.0==1.0并不成立。应避免对两个实数表达式作“相等”或“不相等”的判别,而改用判断两数差的绝对值是否小于某值。 4.2 逻辑运算符和逻辑表达式 C语言有三个逻辑运算符: (逻辑与) || (逻辑或) ! (逻辑非) C语言不提供逻辑型数据“真”和“假”,在进行关系运算时,结果为“真”用1表示,“假”用0表示。在进行逻辑时则把所有“非零”值当作“真”,只把0当作“假”。 和||是二元运算符,结合方向为自左至右;!为一元运算符,结合方向为自右至左。 运算的优先级别高与||运算,但都低于关系运算符,而!运算的优先级别高于关系运算符。 逻辑运算中的规律 0 || a ? a 1 a ? a 1 || a ? 1 0 a ? 0 a || !a ? 1 a !a ? 0 a || a ? a a a ? a !(a || b) ?!a !b !(a b) ?!a || !b ! ( !a ) ? a 掌握上述规律能使复杂的逻辑运算简化、清晰 若逻辑表达式中有函数或赋值性质的运算,则由于编译器对代码的优化作用,可能在提前知道表达式结果的情况下,短路表达式的求值过程,不再调用后面的函数或进行赋值。 逻辑表达式优化的基本规则 “真”和任何逻辑值进行“或”(||)运算总是“真”,当运算符“||”左边的部分为“真”(不为0)时,其右的表达式就不再计算; 如:x=y=z=1;? ++x||++y||++z; 中,因++x值为2(真),无论++y||++z 为何值,最终结果肯定是“真”,所以++y||++z 就不再求值;? “假”和任何逻辑值进行“与”()运算总是“假”,当运算符“”左边的部分为“假”(为0)时,其右的表达式也不再计算;? 如:x=y=z=-1;? ++x||++y++z; 中,因++x||++y的值为0,无论++z为何值,最终结果都是“假”,所以++z也没有执行; 条件运算符 条件运算是一种在两个表达式的值中选择一个的操作。它的一般形式为: 它也称为“条件表达式”,操作过程为:若e1为真(非0),则此条件表达式的值为e2的值;若 e1为假(0),则表达式取e3的值。若e2和e3值的类型不一致,则取二者中类型较高的。 条件运算符“? :”共要求三个运算量,是C语言中唯一的三元运算符。 例:输入两数,输出大者 void main( ) { float a,b,max; printf(input 2 reals please:); scanf(%f%f,a,b); max = ab ? a:b; printf(The max is%f\n,max); } if...else结构的应用 if...else语句是C语言选择型结构的基本形式。它构成如图所示的“二选一”控制结构。 if...else结构的应用 它的工作过程是:先对条件表达式进行判断,若为真(成立,值为非零),就执行if分结构(S1);否则(不成立,值为0),就执行else分结构(S2)。 条件表达式可以是关系表达式、逻辑表达式,也可以是算术表达式。因为判断主要以其值是否为0为准。 例4.1 求一个数的绝对值 设有任意数x,它的绝对值为 判断内容:x0是否成立。

文档评论(0)

1亿VIP精品文档

相关文档