第五章 逻辑运算和判断选取控制 §5.1 关系运算符和关系表达式 第五章 逻辑运算和判断选取控制 §5.1 关系运算符和关系表达式 关系运算本质上是“比较运算”。通过比较看比较的结果。如:9<3,结果为假。 5.1.1 关系运算符、优先级与结合性 分为两组:左结合性 < <= > >= 如:a>b == != 如:a>b!=c
5.1.2 关系表达式 用关系运算符将两个表达式(算术、关系、逻辑、赋值、逗号、字符表达式)连接起来的式子,称为关系表达式,其结果是一个逻辑值,即“真”或“假”。 如:a+b>b*c (a=3)<(b=5) (a>b)==c f=a>b>c 计算当:a=3,b=2,c=1时各表达式的值
关于逻辑型值,一定要注意的是“C语言中没有逻辑型数据”,在C中,“假”就表示为0、“真”就是1(非0)。 §5.2 逻辑运算符和逻辑表达式 概念:用逻辑运算符将关系表达式或逻辑量连接起来,并能计算出一个逻辑值的式子。如:(9<3) AND (x>y) 5.2.1 逻辑运算符、优先级与结合性 提供了三种逻辑运算符:左结合性
&& 逻辑与AND、双目运算符 || 逻辑或OR、双目运算符 ! 逻辑非NOT、单目运算符 看表,体会逻辑运算的含义。 优先级不同。 5.2.2 逻辑表达式求值过程 设:a=3,b=4,c=5求值 1、a+b>c&&b==c 2、!(a>b)&&!c||1
§5.3 选择控制语句--if if语句可用于实现,根据条件从两组语句中选择其一执行的结构。 5.3.1 if语句的三种形式 1、 if(表达式)语句 if(x>y)printf(“%d\n”,x); 2、 if(表达式)语句1 else 语句2 else pintf(“%d\n”,y);
3、 if(表达式1)语句1 else if(表达式2)语句2 else if(表达式3)语句3 …… else if(表达式n)语句n else 语句m 解决多支函数的问题的实现 若干说明问题: 1、表达式 2、语句中的分号 3、复合语句
例1、输入两个数,按由小到大次序输出这两个数。 #include “stdio.h” main() {int a1,a2,c; scanf(“%d,%d”,&a1,&a2); if(a1>a2){c=a1;a1=a2;a2=c;} printf(“%d %d”,a1,a2); }
例2、输入三个数,按小大顺序输出 main() {float a,b,c,t; scanf(“%f,%f,%f”,&a,&b,&c); if(a>b){t=a;a=b;b=t;} /*a<b*/ if(a>c){t=a;a=c;c=t;} /*a<c*/ if(b>c){t=c;c=b;b=t;} /*b<c*/ printf(“%f,%f,%f”,a,b,c); }
5.3.2 if语句的嵌套--解决多支问题 在一个if语句是又包含一个或多个if语句的称为if语句的嵌套 if(条件1) if( 条件2)语句1 else 语句2 else if(条件3)语句3 else 语句4 应注意if与else的配对关系。从最内层开始,else总是与它上面最近的 (未曾配对
的)if配对。不能期望通过在书写程序时对齐if与else单词来实现配对。 例5.3,并观察流程图 5.3.3 条件运算符 若if语句中,当表达式为0或为1时,且都执行一个赋值语句给同一变量赋值时,可以用简单的条件运算符来处理。如: if( a>b)max=a; else max=b; 可用条件运算符来处理:
max= ( a>b)? a:b; 其中( a>b)? a:b叫“条件表达式”。表达式求值过程为: 条件运算符是? : 它是个三目运算符 条件表达式的一般形式为: 表达式1?表达式2:表达式3 说明: 1、条件表达式求值过程 2、条件运算符的优先级 3、条件运算符的结合方向:右结合性
4、条件表达式不能取代一般的if语句 5、三个表达式的类型问题 §5.4 switch语句 switch语句是个多分支选择语句。 C语言中用于处理多支问题,可用嵌套if语句,也可用带else if的语句来完成。 但switch语句以更简洁的形式实现多分支选择。语句的一般形式为:
switch(表达式) { case 常量表达式1:语句1 case 常量表达式2:语句2 …… case 常量表达式n:语句n default :语句n+1 } 举例说明其执行过程。 说明:
1、 switch后面表达式类型可是int与char 2、执行过程, default 的执行 3、n个常量表达式应各不相同 4、case出现的次序可以不同,不影响结果 5、执行完一个case后面的语句后,流程控制转移到下一个case继续执行。利用break语句实现跳出switch语句。 6、多个case可以共用一组执行语句。
§5.5 程序举例 例:习题5.5 重点内容 1、三类运算符与表达式 2、实现两支与多支选择控制结构 习题 5.4、5.5、5.6