计算机工程学院伍俊明
本章教学内容:
关运算符和关系表达式
逻辑运算符和逻辑表达式
if语句
switch语句
程序举例
本章教学内容:
关系表达式
逻辑运算
if语句
switch语句
选择结构程序设计
第5章选择结构程序设计
关系运算符和关系表达式
关系运算实际上就是“比较运算”,判断两个值的大小或是否相等。
一、关系运算符
< <= > >= == !=
关系运算符的优先级低于算术运算,但高于赋值运算
分析:c>a+b,a>b==c,a=b>c的运算顺序
关系表达式:
用关系运算符连接两个表达式而成
关系表达式的结果:逻辑真(1),逻辑假(0)
例:a=3, b=2, c=1,分析d=a>b、f=a>b>c之值
计算机工程学院伍俊明
优先级相同(高)
优先级相同(低)
逻辑运算符与逻辑表达式
逻辑表达式就是用逻辑运算符将若干关系表达式或逻辑量连接而成的式子。
一、逻辑运算符:!(非)、&&(与)、||(或)
计算机工程学院伍俊明
||
假(0)
真(1)
假(0)
假(0)
真(1)
真(1)
真(1)
真(1)
&&
假(0)
真(1)
假(0)
假(0)
假(0)
真(1)
假(0)
真(1)
!
假(0)
真(1)
真(1)
假(0)
逻辑运算符与逻辑表达式
二、逻辑运算符的优先级
!(非)->&&()->||()
“&&”和“||”低于关系运算符,
“!”高于算术运算符
分析:(x>=0) && (x<10) ,(x<1) || (x>5) ,! (x= =0)的含义
计算机工程学院伍俊明
!(非) 高
算术运算
关系运算
&&
||
赋值运算低
逻辑运算符与逻辑表达式
三、逻辑表达式
逻辑表达式的结果也是真(1)或假(0)
逻辑表达式的计算需考虑各种运算符的优先级
任何非零(0)的数值都认作为真。
例:若a=4,!a得0。4&&0||2得1。
分析表达式5>3 && 8<4-!0
先!0得1,然后4-1得3,5>3得1,8<3得0,1&&0得0
分析某年year是否为闰年
(year % 4==0 && year % 100 != 0) !! (year % 400 == 0)
短路运算:a && b中a若为假,运算中止得假;a||b中若a为真,运算中止得真。
计算机工程学院伍俊明
if语句
if语句的三种形式
形式1: if (表达式) 语句
执行过程
计算机工程学院伍俊明
语句
语句
真1
假0
表达式必须写在括号内
内嵌语句,可为:
赋值语句
函数调用语句
控制语句
复合语句
空语句
计算表达式的值,如果是一个非0值(即逻辑真),就执行内嵌语句,否则(即逻辑假)跳过内嵌语句,顺序执行后续语句。
例:输入一个三角形的三条边长,判断它能否构成一个直角三角形。
#include <>
main() {
float a,b,c;
printf(“请输入a,b,c:”);/*增加有益提示*/
scanf(“%f,%f,%f”,&a, &b, &c);
if (a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a)
printf(“三条边构成一个直角三角形!\n ”) ;
}
if语句
形式2:if (表达式) 语句1 else 语句2
执行过程
表达式
语句1
语句2
真
假
计算表达式的值,如果它的值是一个非0值(逻辑真),就执行内嵌语句1,之后跳过内嵌语句2,执行后续语句;否则跳过内嵌语句1,执行内嵌语句2,之后执行后续语句。
例:输入三角形三边之长,判断能否构成三角形。
#include <>
void main() {
float a, b, c;
printf(“请输入三条边的长度:”);
scanf(“%f,%f,%f”, &a, &b, &c);
if (a+b>c || a+c>b || b+c>a)
printf(“可以构成三角形!\n ”);
else
printf(“无法构成三角形!\n ”);
}
if语句
形式3:
if (表达式1) 语句1
else if (表达式2) 语句2
else if (表达式3) 语句3
……
else if (表达式n) 语句m
else 语句n
执行过程
if语句
形式3的执行过程
语句1
表达式1
真
假
表达式2
真
语句2
假
表达式3
真
语句3
表达式m
真
语句m
逻辑运算符 来自淘豆网www.taodocs.com转载请标明出处.