您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 选择结构设计程序设计
1第五章选择结构设计程序设计2选择结构设计程序设计1.关系运算符和关系表达式2.逻辑运算符和逻辑表达式3.if语句4.switch语句5.程序举例3关系运算符和关系表达式4关系运算符关系运算实际上是两个量的比较,比较的结果只有两种可能:真(1)、假(0)。例如:a3?当a=5时,比较的结果为真;当a=1时,结果为假。C语言提供6种关系运算符①(小于)②=(小于或等于)③(大于)④=(大于或等于)⑤==(相等)⑥!=(不等)选择结构程序设计关系运算符和关系表达式优先级相同(高)优先级相同(低)等式运算符5选择结构程序设计关系运算符和关系表达式关系运算符合法的4=6A+b=c+dch==‘A’count!=-2x+y==2*z-5不合法的a=ba=baba=ba==b-1(x+y)=!446关于优先次序,=,,=为同一级别,==和!=为同一级别。在同一级别中,采取由左至右的结合方向。算术运算符关系运算符赋值运算符高低[例]ca+bc(a+b)ab!=c(ab)!=ca==bca==(bc)a=bca=(bc)等式运算符选择结构程序设计系运算符和关系表达式7选择结构程序设计关系运算符和关系表达式关系表达式用关系运算符将或者等式运算符两个表达式连接起来,叫关系表达式。合法的关系表达式:ab,a+bb+c,(a=3)(b=5),(a==3)(b==5),‘a’‘b’,(ab)(bc)关系表达式的值是一个逻辑值,非真即假.关系表达式5==3的值为假(在计算机中记为0);5=0的值为真(在计算机中记为1)。8选择结构程序设计关系运算符和关系表达式关系表达式例:a=3,b=2,c=1,则:(1)ab的值为1(2)(ab)==c的值为真(即1)ab的值为1,c也为1,(ab)==c相当于1==1,结果为真,即(ab==c)的值为1。(3)b+ca的值为0(4)d=ab中d的值为ab的值,为1。(5)f=abc中f的值为1c的值,为0。9课堂练习inti=1,j=2,k=3;doublex=5.5,y=7.7ij-k-i+5*j=k+1x-y=j-k-1x+k+7y/k10课堂练习答案inti=1,j=2,k=3;doublex=5.5,y=7.7ij-ki(j-k)0-i+5*j=k+1((-i)+(5*j))=(k+1)1x-y=j-k-1(x-y)=((j-k)-1)1x+k+7y/k((x+k)+7)(y/k)011课堂练习inti=1,j=2,k=3i==ji!=ji+j+k==-2*-k12课堂练习答案inti=1,j=2,k=3i==jj==i0i!=jj!=I1i+j+k==-2*-k((i+k)+k)==((-2)*(-k))113逻辑运算符和逻辑表达式14逻辑运算符逻辑运算:产生真假值的运算。C语言提供的逻辑运算符:①&&逻辑与②||逻辑或③!逻辑非“&&”和“||”是双目运算符,它要求两个运算量。如:(ab)&&(xy),(ab)||(xy)“!”是一元运算符,只要求一个运算量。如:!(ab)错误的例子a!a!ba&&a||ba&b选择结构程序设计逻辑运算符和逻辑表达式15逻辑运算符逻辑运算举例如下:a&&ba,b同时为真,则表达式为真a||ba,b只要有一个为真,表达式为真!aa为真,则表达式为假真值表ab!a!ba&&ba||bTTFFTTTFFTFTFTTFFTFFTTFF选择结构程序设计逻辑运算符和逻辑表达式16逻辑运算符的优先级!&&||逻辑运算符“&&”和“||”低于关系运算符,“!”高于算术运算符ab&&xy相当于:(ab)&&(xy)a==b||x==y相当于:(a==b)||(x==y)!a||ab相当于:(!a)||(ab)!算术关系逻辑赋值选择结构程序设计逻辑运算符和逻辑表达式17逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起来就是逻辑表达式。在C语言中,当判断一个量的真假时,一切非0数均被当成‘真’来处理。例如:若a=4,则!a的值为0若a=4,b=5,则a&&b的值为1a||b的值为1!a||b的值为14&&0||2的值为1选择结构程序设计逻辑运算符和逻辑表达式18逻辑表达式逻辑运算的结果非0即1,参加逻辑运算的量可以是0和非0数。区分下面的表达式中算术运算量,关系运算量和逻辑运算量:53&&2||84-!0结果为153是两个数值间的比较,结果为11&&2是两个非0值(逻辑量)间的运算,结果为11||84-!0,根据优先级,先计算!0,结果为11||84-1--1||83--1||0结果为1你是否对逻辑量有概念了?对于一个变量,做算术运算时,关心的是它的实际数值;做逻辑判断时,关心的是0还是非0。选择结构程序设计逻辑运算符和逻辑表达式19!(a&&b)等价于!a||!b!(a||b)等价于!a&&!b写出下列式子的等价逻辑表达式!(ab)!(a=b&&c=d)!(a+1==b+1)!(a1||b2&&c3)ab!(a&&b)!a||!b!(a||b)!a&&!bTTFFFFTFTTFFFTTTFFFFTTTT选择结构程序设计逻辑运算符和逻辑表达式20课堂练习inti=3,j=3,k=3;doublex=0.0,y=2.3;i&&j&&kx||i&&j-3ij&&xyij||xy-1||0inta=1,b=2,c=3;doublex=1.0;ab&&cba!b||!!aa+b!c+ca-x||b*c&&b/a21课堂练习答案inti=3,j=3,k=3;doublex=0.0,y=2.3;i&&j&&k(i&&j)&&k1x||i&&j-3x||(i&&(j-3))0ij&&xy(ij)&&(xy)0ij||xy(ij)||(xy)1-1||01inta=1,b=2,c=3;doublex=1.0;ab&&cb0a!b||!!a1a+b!c+c0a-x||b*c&&b/a122短路求值计算含有&&和||的运算数的表达式时,只要得到了结果的真或者假,求值的过程就停止,这样的计算的过程就停止,这样的计算过程是短路求值(short-circleevaluation)对于exp1&&exp2求值的时候当exp1的值是0的时候,不论exp2为何值,整个表达式为0,计算机不会也没有必要去计算exp2对于exp1||exp2求值的时候当exp1的值是1的时候,不论exp2为何值,整个表达式为1,计算机不会也没有必要去计算exp223短路求值例子#includestdio.hmain(){inti,j;i=2&&(j=2);printf(%d%d\n,i,j);(i=0)&&(j=3);printf(%d%d\n,i,j);i=0||(j=4);printf(%d%d\n,i,j);(i=2)||(j=5);printf(%d%d\n,i,j);}24课堂练习当程序执行下面代码时会显示什么?仔细分析结果#includestdio.hmain(){inta=1,b=2,c=3;floatx=3.3,y=5.5;printf(%d%d\n,!a+b/c,!a+b/c);printf(%d%d\n,a==-b+c,a*bc==a);printf(%d%d\n,!!xa+b+c,!!x+!!!y);printf(%d%d\n,a||b==x&&y,!(x||!y));}0010111025[例]判断某一年是否是闰年。条件是:能被4整除,但不能被100整除;能被4整除,又能被400整除。用year表示年份,判断闰年的逻辑表达式为:(year%4==0&&year%100!=0)||(year%400==0)如果给year输入一个值,使上面的表达式的值为1时,则year所代表的年份就是闰年。变换一下角度,如何判断year不是闰年?!((year%4==0&&year%100!=0)||(year%400==0))!(year%4==0&&year%100!=0)&&!(year%400==0)(year%4!=0)||(year%100==0&&year%400!=0)当year的值使表达式的值为1时,则year所代表的就不是闰年。选择结构程序设计逻辑运算符和逻辑表达式26[课堂练习]1.判断一个点是否落入圆形中。2.判断一个点是否落入阴影部分。(小圆的半径为1。)1010-10-10-222-2x*x+y*y=100(sqr(x-2)+sqr(y-2)=1)||(sqr(x-2)+sqr(y+2)=1)||(sqr(x+2)+sqr(y-2)=1)||(sqr(x+2)+sqr(y+2)=1)选择结构程序设计逻辑运算符和逻辑表达式27if语句28选择结构程序设计if语句if语句的三种形式if用来判断给定的条件的真假,并决定执行哪一种操作。1.if表达式语句条件满足时执行表达式后面的语句,然后继续执行以下的语句。条件不满足时,越过if表达式后面的语句,往下执行。表达式语句真(非0)假(0)例如:如果输入的是正数,则打印出来。if(x0)printf(%d,x);错误:ifb==aarea=a*a;29合并if(jk)min=j;if(jk)printf(jissmallerthank);if(jk){min=j;printf(jissmallerthank);}30选择结构程序设计if语句if语句的三种形式2.if表达式语句1else语句2条件满足时执行语句1,然后继续执行if以下的语句。条件不满足时,执行语句2,然后继续执行if以下的语句。表达式语句1语句2真假例如:输出两个数中较大的一个。if(xy)printf(%d,x)elseprintf(%d,y);31注意的问题if(a!=b){a+=1;b+=2;};//errorelsec+=3;32选择结构程序设计if语句if语句的第三种形式if表达式1语句1;elseif表达式2语句2;elseif表达式3语句3;elseif表达式4语句4;else语句5表达式1表达式2表达式3表达式4语句1语句2语句3语句4语句5假假假假真真真真33选择结构程序设计if语句if语句的三种形式例如:商场促销,购物500元以上,8折;购物300元以上,85折;购物100元以上,9折;购物50元以上,95折;购物50元以下,不打折。根据消费量,计算优惠率。设:消费量为money;折扣为cost;实际花费priceif(money500)cost=0.2;elseif(money300)cost=0.15;elseif(money100)cost=0.1;elseif(money50)cost=0.05;elsecost=0;price=money-(money*cost);34选择结构程序设计if语句if语句的说明1.If后面的表达式一般为关系表达式或逻辑表达式,但也可以是其它类型的数值;2.在每个else前面有一分号,整个语句结束处有一分号;3.if和else后面的语句可以是简单的也可以是复合语句(用{}扩起来的语句)。例:if((a+bc)&&(b+aa)&&(c+ab)){s=0.5*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf(area=%6.2f,area);}elseprintf(itisnotatrilateral);35[例]输入两个数,按数值大小次序排列输出.main(){floata,b,t;scanf(%f,%f,&a,&b);if(ab){t
本文标题:选择结构设计程序设计
链接地址:https://www.777doc.com/doc-3107591 .html