资源描述
1,第5章 逻辑运算和选择结构程序设计,2,本次课程主要内容,关系运算符和关系表达式 逻辑运算符和逻辑表达式 条件运算符和条件运算 if语句 switch语句和break语句,3,关系运算,关系运算:对两个运算量进行大小关系比较的运算,运算结果为1(逻辑真)或0(逻辑假)。 关系运算符: 、 =、 = =、 != 关系表达式,用关系运算符连接起来的两个表达式: 表达式 关系运算符 表达式,优先级:低于算术运算符,高于赋值运算符,举例: xy!=z等价: (xy) != z x= = yyz等价: (xy) z zx+y等价: z (x+y) x=yz等价: x = (yz),5,逻辑运算符和逻辑表达式,逻辑运算符: scanf(%c, ,14,1.逻辑“异或”运算可描述为a xor b,其中a和b为参加运算的两个操作数,运算结果为当且仅当a、b两个操作数中只有一个为真时才为真,其他情况下均为假。以下表达式中_表达式可以正确表示逻辑“异或”运算。 A. a|b B. a ,则表达式!a+a%b的值是_。,3.已知有声明“ int x=1, y=2, z=3; ”,则执行语句“xy?(z-=-x):(z+=+x);”后,变量x、y、z的值分别是_。,4.以下表示数学式 a=b) scanf(%f%f%f, ,19,if语句 之双分支选择结构,一般形式: if(表达式) 语句1 else 语句2 说明: 当表达式的值为非0时,执行语句1,否则执行语句2。,双分支选择结构流程图,【5.3】显示输出从终端输入的两个整数中绝对值较大的,main() int x1,y1,x2,y2; scanf(%d,%d, ,条件表达式不能取代一般的if语句,只有在if语句中内嵌的语句为赋值语句(且两个分支都给同一个变量赋值)时才能代替if语句。,运行情况: 23,34 34,21,if语句 之多分支选择结构,一般形式: if(表达式1)语句1 else if(表达式2)语句2 else if(表达式3)语句3 else if(表达式n)语句n else 语句n+1 说明:各个表达式按顺序求值,如果某个表达式的值为非0,则执行与其相关的那条语句,并由此结束整个if语句。,多分支选择结构流程图,23,if语句的嵌套,格式一: if( ) if( )语句1 else语句2 else if()语句3 else 语句4,格式二: if () if()语句1 else if()语句2 else 语句3,含义:在if语句中又包含一个或多个if语句称为if语句的嵌套。,注意if与else 的配对关系。,【程序5.4】判断输入的字符是数字、大写字母、小写字母或其他字符。,#include main() char c; printf(Enter a character:); c=getchar(); if(c=0 ,【程序5.5】解一元二次方程ax2+bx+c=0。,一元二次方程的解的情况有下列几种可能: a=0,不是二次方程; b2-4ac=0,有两个相等实根: b2-4ac0,有两个不等实根: b2-4ac0,有两个共轭实根。,分析,一元二次方程 NS图,#include main() float a,b,c,d,x1,x2,p,q; scanf(%f,%f,%f,源程序:,未完,待续,else if(d1e-6) x1=(-b+sqrt(d)/(2*a); x2=(-b-sqrt(d)/(2*a); printf(has distinct real roots:%8.4f and %8.4fn,x1,x2); else p=-b/(2*a); q=sqrt(-d)/(2*a); printf(has complex roots:n); printf(%8.4f+%8.4fin,p,q); printf(%8.4f-%8.4fin,p,q); ,switch语句和break语句,switch 语句:是专门用于实现多分支选择的语句。 break语句:终止switch语句的执行。 switch语句的一般形式: switch(表达式) case 常量表达式 1: 语句 1 case 常量表达式 2: 语句 2 case 常量表达式 n: 语句 n default:语句 n+1 ,语句标号,30,switch(表达式) case 常量表达式1:语句1 case 常量表达式2:语句2; case 常量表达式n:语句n default:语句n+1 ,其流程为: 先计算表达式的值,然后顺序地与case子句中所列出的各个常量进行比较,若表达式的值与常量中的值相等,就由此开始进入相应的case语句执行程序,遇到case和default也不再进行判断,直至switch语句结束。如果要使其在执行完相应的语句后中止执行下面其它语句,可以在语句后加break。,入口,break;,出口,Switch(t_type) case A:printf(“RMB60.00”);break; /*大客车*/ case B:printf(“RMB50.00”);break; /*大货车*/ case C:printf(“RMB40.00”);break; /*面包车*/ case D:printf(“RMB20.00”);break; /*小轿车*/ default: printf(“RMB10.00”); /*其他车辆*/ ,例:公路收费站的车辆收费问题。,说明:变量“t_type”用来表示汽车的类型。,说明:,switch 语句中的“表达式”和case后面的“常量表达式”的结果值的类型应该一致。 每一个case的常量表达式的值必须互不相同,否则出现矛盾现象。 各个case的出现次序不影响执行结果。 执行完一个case后面的语句后,流程控制转移下一个case继续执行,除非有break语句跳出switch。 default 语句为选择项,可有可无。另外,default 后面可以不加break语句。,【程序5.6】根据考试成绩的等级打印出百分制分数段:,#include main() char grade; grade=getchar(); switch(grade) case A:printf(85100n);break; case B:printf(7084n);break; case C:printf(6069n);break; case D:printf(60n);break; default:printf(error!n); ,程序执行结果: A(输入) 85100 B(输入) 7084 F(输入) error!,34,作业,在理解的基础上,上机运行本章所有程序例题。 习题 笔答:13(答案写在书上) 编程:48(上机调试后,存在磁盘上),
展开阅读全文