第5章 逻辑运算和选择结构程序设计优秀PPT.ppt
第5章 逻辑运算和选择结构程序设计现在学习的是第1页,共30页本次课程主要内容n关系运算符和关系表达式n逻辑运算符和逻辑表达式n条件运算符和条件运算nif语句nswitch语句和break语句现在学习的是第2页,共30页关系运算关系运算n关系运算:对两个运算量进行大小关系关系运算:对两个运算量进行大小关系比较的运算,运算结果为比较的运算,运算结果为1 1(逻辑真)或(逻辑真)或0 0(逻辑假)。(逻辑假)。n关系运算符(按从高到低顺序):关系运算符(按从高到低顺序):、=、=、=、!=!=n关系表达式,用关系运算符连接起来的关系表达式,用关系运算符连接起来的两个表达式:两个表达式:表达式表达式 关系运算符关系运算符 表达式表达式现在学习的是第3页,共30页优先级优先级:低于算术运算符低于算术运算符,高于赋值运算符高于赋值运算符n举例:xy!=z等价:(xy)!=zx=yz等价:x=(yyz等价:(xy)z zx+y等价:z (x+y)x=yz等价:x=(yz)现在学习的是第4页,共30页逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式n逻辑运算符:逻辑运算符:n&(逻辑与,也叫逻辑乘)(逻辑与,也叫逻辑乘)n|(逻辑或,也叫逻辑加)(逻辑或,也叫逻辑加)n!(逻辑非)(逻辑非)n逻辑表达式:逻辑表达式:n结果只有两种:结果只有两种:非非0:0:逻辑真逻辑真 0 :0 :逻辑假逻辑假现在学习的是第5页,共30页逻辑与的真值表逻辑与的真值表逻辑与运算:两个运算量都为非0,结果才为1(逻辑真)。现在学习的是第6页,共30页逻辑或的真值表逻辑或的真值表逻辑与运算:两个运算量中只要有一个运算量非0,结果就为1(逻辑真)。现在学习的是第7页,共30页逻辑非的真值表逻辑非的真值表逻辑非运算:使运算量的值变反,即非0值变0值。X!X非非0001现在学习的是第8页,共30页逻辑表达式运算的优先级n优先级(从高到低):!算术运算符 关系运算符&|赋值运算符n练习:6=!0811111现在学习的是第9页,共30页注意C程序中某些关系表达式的写法:axxbxa&xb&xaC程序中一定不要有连续“”的形式!现在学习的是第10页,共30页条件运算符和条件表达式条件运算符和条件表达式n条件运算符:条件运算符:?:n表达式的一般形式:表达式表达式的一般形式:表达式1?1?表达式表达式2:2:表达式表达式3 3如:如:max=max=(ab)?a:b(ab)?a:b条件表达式流程图说明:说明:条件运算符仅优先于条件运算符仅优先于赋值运算符。赋值运算符。条件运算符的结合方向条件运算符的结合方向为为“自右到左自右到左”。现在学习的是第11页,共30页【程序【程序5.15.1】输入一个字符,判别它是否大写字母。如果是,】输入一个字符,判别它是否大写字母。如果是,将它转换成小写字母;如果不是,不转换。将它转换成小写字母;如果不是,不转换。main()char ch;scanf(%c,&ch);ch=(ch=A&chb)t=a;a=b;b=t;/*a、b间的较小值存入间的较小值存入a*/if(ac)t=a;a=c;c=t;/*a、c 间的较小值存入间的较小值存入a*/if(bc)t=b;b=c;c=t;printf(%5.2f,%5.2f,%5.2fn,a,b,c);现在学习的是第15页,共30页if语句 之双分支选择结构n一般形式:一般形式:if(if(表达式表达式)语句语句1 1else else 语句语句2 2n说明:说明:当表达式的值为非当表达式的值为非0 0时,执行语句时,执行语句1 1,否则执行语句否则执行语句2 2。表达式表达式语句语句1语句语句2 0=0双分支选择结构流程图现在学习的是第16页,共30页【5.35.3】显示输出从终端输入的两个整数中绝对值较大的main()int x1,y1,x2,y2;scanf(%d,%d,&x1,&y1);if(x10)x2=-x1;else x2=x1;if(y1y2?x1:y1);条件表达式不能取代一般的条件表达式不能取代一般的ifif语句,只有在语句,只有在ifif语语句中内嵌的语句为赋值语句(且两个分支都给同一个变句中内嵌的语句为赋值语句(且两个分支都给同一个变量赋值)时才能代替量赋值)时才能代替ifif语句。语句。运行情况:23,3434现在学习的是第17页,共30页if语句 之多分支选择结构n一般形式:一般形式:ifif(表达式)语句(表达式)语句1 1else ifelse if(表达式)语句(表达式)语句2 2else ifelse if(表达式)语句(表达式)语句3 3else ifelse if(表达式)语句(表达式)语句n nelse else 语句语句n+1n+1n说明:各个表达式按顺序求值,如果某个表达式的说明:各个表达式按顺序求值,如果某个表达式的值为非值为非0 0,则执行与其相关的那条语句,并由此结束,则执行与其相关的那条语句,并由此结束整个整个ifif语句。语句。现在学习的是第18页,共30页多分支选择结构流程图现在学习的是第19页,共30页ifif语句的嵌套语句的嵌套格式一:if()if()语句1else语句2else if()语句3else 语句4格式二:if()if()语句1 elseif()语句2else 语句3含义:在if语句中又包含一个或多个if语句称为if语句的嵌套。注意if与else的配对关系。现在学习的是第20页,共30页【程序【程序5.45.4】判断输入的字符是数字、大写字母、小写字母或其判断输入的字符是数字、大写字母、小写字母或其他字符。他字符。#include main()char c;printf(Enter a character:);c=getchar();if(c=0&c=A&c=a&c0,有两个不等实根:b2-4ac0,有两个共轭实根。分析分析现在学习的是第22页,共30页一元二次方程 NS图现在学习的是第23页,共30页#include main()float a,b,c,d,x1,x2,p,q;scanf(%f,%f,%f,&a,&b,&c);printf(The equation);if(fabs(a)=1e-6)printf(is not quadratic.n);else d=b*b-4*a*c;if(fabs(d)1e-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);elsep=-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);现在学习的是第25页,共30页switchswitch语句和语句和breakbreak语句语句nswitch switch 语句:语句:是专门用于实现多分支选择的语句。nbreakbreak语句:语句:终止switch语句的执行。nswitchswitch语句的一般形式:语句的一般形式:switch(表达式)case 常量表达式 1:语句 1case 常量表达式 2:语句 2 case 常量表达式 n:语句 ndefault:语句 n+1现在学习的是第26页,共30页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”用来表示汽车的类型。用来表示汽车的类型。现在学习的是第27页,共30页说明:说明:nswitch switch 语句中的语句中的“表达式表达式”和和casecase后面的后面的“常量常量表达式表达式”的结果值的类型应该一致。的结果值的类型应该一致。n每一个每一个casecase的常量表达式的值必须互不相同,否的常量表达式的值必须互不相同,否则出现矛盾现象。则出现矛盾现象。n各个各个casecase的出现次序不影响执行结果。的出现次序不影响执行结果。n执行完一个执行完一个casecase后面的语句后,流程控制转移下后面的语句后,流程控制转移下一个一个casecase继续执行,除非有继续执行,除非有breakbreak语句跳出语句跳出switchswitch。ndefault default 语句为选择项,可有可无。另外,语句为选择项,可有可无。另外,default default 后面可以不加后面可以不加breakbreak语句。语句。现在学习的是第28页,共30页【程序【程序5.65.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(输入)85100b(输入)7084f(输入)error!现在学习的是第29页,共30页Homework在理解的基础上,上机运行本章所有程在理解的基础上,上机运行本章所有程序例题。序例题。习题习题笔答:笔答:3 31010(答案写在书上)(答案写在书上)编程:编程:12121515(上机调试后,存在磁盘上)(上机调试后,存在磁盘上)现在学习的是第30页,共30页