第四章选择结构程序设讣
第四章 选择结构程序设计
C ★4.1关系运算符和表达式 语 ◇关系运算符 言程序 种类:a+b//c>(a+b) a>b!=c/(a>b)!=c 关系表滷式敏值:臭辑竄真”或“假”,用1和0表 9=h> //a=(h>) 例inta=3.b=2.c=1df 第 表达式值1 (a>b)=C∥表达式值1 b+cb/|d=1 fa>b>c //f0
4.1关系运算符和表达式 ❖关系运算符 ⚫种类:= > != ⚫结合方向:自左向右 ⚫优先级别: >= == != 优先级6(高) 优先级7(低) 例 c>a+b //c>(a+b) a>b!=c //(a>b)!=c a==bc //a=(b>c) ⚫关系表达式的值:是逻辑值“真”或“假”,用1和0表 示 例 int a=3,b=2,c=1,d,f; a>b (a>b)==c b+cb f=a>b>c //表达式值1 //表达式值1 //表达式值0 //d=1 //f=0 C 语 言 程 序 设 计 第 四 章 选 择 结 构 C
●关系运算注意 例若a=0:b=0.5;x=0.3 则a0结果为 第 A2>100结果为0 章选择结构
⚫关系运算注意: 例 若a=0; b=0.5; x=0.3; 则 a2>7>8在C中是允许的, 值为 0 例 int i=1, j=7,a; a=i+(j%4!=0); 则a= 2 例 ‘a’>0 结果为 ‘A’>100 结果为 1 0 语 言 程 序 设 计 第 四 章 选 择 结 构 C
●关系运算注意: 例应避免对实数作相等或不等的判断 如1.0/3.0*3.0==1.0结果为0 可改写为:fabs(1.0/30*30-1.0)<1e-6 例注意区分“”与“” int a=0.b=1 if(a b) printf(a equal to b' 第 else printf( a not equal to b”) 章选择结构
⚫关系运算注意: 例 注意区分“=”与“==” int a=0,b=1; if(a=b) printf(“a equal to b”); else printf(“a not equal to b”); 例 应避免对实数作相等或不等的判断 如 1.0/3.0*3.0==1.0 结果为 可改写为:fabs(1.0/3.0*3.0-1.0)<1e-6 0 语 言 程 序 设 计 第 四 章 选 择 结 构 C
★4.2逻辑运算符和表达式 ◆逻辑运算符 ●种类:!&&‖ ●逻辑运算真值表 b a&&b allb 真真 假 假 真假 假真 假 真真假 假 假 真 真 第 ●C语言中, 0表示“假 非0表示“真 章 运算结果:0表示“假” 1表示“真” 择 结 构
a b !a !b a&&b a||b 真 假 真 假 假 假 真 真 4.2逻辑运算符和表达式 ❖逻辑运算符 ⚫种类: ! && || ⚫逻辑运算真值表 ⚫C语言中,运算量: 0表示“假” , 非0表示“真” , 运算结果: 0表示“假” , 1表示“真” , 真 假 假 假 假 假 真 真 假 假 真 真 真 假 真 真 语 言 程 序 设 计 第 四 章 选 择 结 构 C
●优先级 从右向左 ●结合方向: &&(11) & ‖(12)低 例ab&&x>y a==blx=y 第 章选择结构
! (2) && (11) || (12) 高 低 例 ab&&x>y a==b||x==y !a||a>b ⚫优先级: ⚫结合方向: ! :从右向左 && :从左向右 || :从左向右 // (ab)&&(x>y) //(a==b)||(x==y) //(!a)||(a>b) 语 言 程 序 设 计 第 四 章 选 择 结 构 C
●优先级 从右向左 ●结合方向 &&(11 & 2)低 例a=4:b=5 a&&b alb ab 4&&0|2 5>3&&2|8<4-!0 c&&d
! (2) && (11) || (12) 高 低 ⚫优先级: ⚫结合方向: ! :从右向左 && :从左向右 || :从左向右 例 a=4;b=5; !a a&&b a||b !a||b 4&&0||2 5>3&&2||8 值为1 值为0 值为1 值为1 值为1 值为1 //(5>3)&&2||(8<(4-(!0))) 值为1 语 言 程 序 设 计 第 二 章 数 据 描 述 C
●优先级 从右向左 ●结合方向 &&(11 & 2)低 短路特性:逻辑表达式求解时,并非所有的逻辑运算 符都被执行,只是在必须执行下一个逻辑远算符才能 求出表达式的解时,才执行该运算符 例a&&b&&c 例alb|c 例a=1;b=2;c=3;d=4;m=1;n= (m=a>b)&&(n=c>d)
! (2) && (11) || (12) 高 低 ⚫优先级: ⚫结合方向: ! :从右向左 && :从左向右 || :从左向右 ⚫短路特性:逻辑表达式求解时,并非所有的逻辑运算 符都被执行,只是在必须执行下一个逻辑运算符才能 求出表达式的解时,才执行该运算符 例 a&&b&&c //只在a为真时,才判别b的值; 只在a、b都为真时,才判别 c的值 例 a||b||c //只在a为假时,才判别b的值; 只在a、b都为假时,才判别 c的值 例 a=1;b=2;c=3;d=4;m=1;n=1; (m=a>b)&&(n=c>d) //结果m=0,n=1 语 言 程 序 设 计 第 二 章 数 据 描 述 C
§43选择型程序设计 ★i语句(条件选择语旬) expr 8if语旬的三种形式 非0 ●形式 statement ◆格式:if( expression) statement ◆执行过程 例:f(x>y) print f( a. SIon expr statement el statement l statement2 statement2 ◆执行过程 if(xy) max-X max-y
§4.3 选择型程序设计 if语句(条件选择语句) ❖if语句的三种形式 ⚫形式一: ◆格式:if (expression) statement ◆执行过程: expr statement 非0 =0 例:if (x>y) printf(“%d”,x); expr statement1 statement2 ⚫形式二: 非0 =0 ◆格式:if (expression) statement1 else statement2 ◆执行过程:例:if (x>y) max=x; else max=y;
if( expr1 statement 1 ●形式三 ◆格式 else if(expr 2) statement2 else if (expr3) statements ◆执行过程: [else statement 例:if( salary>1000) index=0.4 else if (salary>800) index=0.3 else if (salary>600) index.2 else if (salary> 400) index=0. 1 else index=0 statemnt1 statemnt2 statemnt3statemntn
⚫形式三: ◆格式: if ( expr1 ) statement1 else if (expr2 ) statement2 else if (expr3 ) statement3 …... [ else statementn ] expr1 statemnt1 非0 =0 expr2 expr3 statemnt2 statemnt3 statemntn 非0 非0 =0 =0 ◆执行过程: 例:if (salary>1000) index=0.4; else if (salary>800) index=0.3; else if (salary>600) index=0.2; else if (salary>400) index=0.1; else index=0;