第五章 选择结构设计程序设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1选择结构设计程序设计1.关系运算符和关系表达式2.逻辑运算符和逻辑表达式3.if语句4.switch语句5.程序举例2关系运算符和关系表达式3关系运算符关系运算实际上是两个量的比较,比较的结果只有两种可能:真(1)、假(0)。例如:a3?当a=5时,比较的结果为真;当a=1时,结果为假。C语言提供6种关系运算符①(小于)②=(小于或等于)③(大于)④=(大于或等于)⑤==(相等)⑥!=(不等)选择结构程序设计关系运算符和关系表达式优先级相同(高)优先级相同(低)等式运算符4选择结构程序设计关系运算符和关系表达式关系运算符合法的4=6A+b=c+dch==‘A’count!=-2x+y==2*z-5不合法的a=ba=baba=ba==b-1(x+y)=!445关于优先次序,=,,=为同一级别,==和!=为同一级别。在同一级别中,采取由左至右的结合方向。算术运算符关系运算符赋值运算符高低[例]ca+bc(a+b)ab!=c(ab)!=ca==bca==(bc)a=bca=(bc)等式运算符选择结构程序设计系运算符和关系表达式6选择结构程序设计关系运算符和关系表达式关系表达式用关系运算符将或者等式运算符两个表达式连接起来,叫关系表达式。合法的关系表达式:ab,a+bb+c,(a=3)(b=5),(a==3)(b==5),‘a’‘b’,(ab)(bc)关系表达式的值是一个逻辑值,非真即假.关系表达式5==3的值为假(在计算机中记为0);5=0的值为真(在计算机中记为1)。7选择结构程序设计关系运算符和关系表达式关系表达式例: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。8课堂练习inti=1,j=2,k=3;doublex=5.5,y=7.7ij-k-i+5*j=k+1x-y=j-k-1x+k+7y/k9课堂练习答案inti=1,j=2,k=3;doublex=5.5,y=7.7ij-ki(j-k)0-i+5*j=k+1((-i)+(5*j))=(k+1)1x-y=j-k-1(x-y)=((j-k)-1)1x+k+7y/k((x+k)+7)(y/k)010课堂练习inti=1,j=2,k=3i==ji!=ji+j+k==-2*-k11课堂练习答案inti=1,j=2,k=3i==jj==i0i!=jj!=I1i+j+k==-2*-k((i+k)+k)==((-2)*(-k))112逻辑运算符和逻辑表达式13逻辑运算符逻辑运算:产生真假值的运算。C语言提供的逻辑运算符:①&&逻辑与②||逻辑或③!逻辑非“&&”和“||”是双目运算符,它要求两个运算量。如:(ab)&&(xy),(ab)||(xy)“!”是一元运算符,只要求一个运算量。如:!(ab)错误的例子a!a!ba&&a||ba&b选择结构程序设计逻辑运算符和逻辑表达式14逻辑运算符逻辑运算举例如下:a&&ba,b同时为真,则表达式为真a||ba,b只要有一个为真,表达式为真!aa为真,则表达式为假真值表ab!a!ba&&ba||bTTFFTTTFFTFTFTTFFTFFTTFF选择结构程序设计逻辑运算符和逻辑表达式15逻辑运算符的优先级!&&||逻辑运算符“&&”和“||”低于关系运算符,“!”高于算术运算符ab&&xy相当于:(ab)&&(xy)a==b||x==y相当于:(a==b)||(x==y)!a||ab相当于:(!a)||(ab)!算术关系逻辑赋值选择结构程序设计逻辑运算符和逻辑表达式16逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起来就是逻辑表达式。在C语言中,当判断一个量的真假时,一切非0数均被当成‘真’来处理。例如:若a=4,则!a的值为0若a=4,b=5,则a&&b的值为1a||b的值为1!a||b的值为14&&0||2的值为1选择结构程序设计逻辑运算符和逻辑表达式17逻辑表达式逻辑运算的结果非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。选择结构程序设计逻辑运算符和逻辑表达式18!(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选择结构程序设计逻辑运算符和逻辑表达式19课堂练习inti=3,j=3,k=3;doublex=0.0,y=2.3;i&&j&&kx||i&&j-3ij&&xyij||xy-1||0inta=1,b=2,c=3;doublex=1.0;ab&&cba!b||!!aa+b!c+ca-x||b*c&&b/a20课堂练习答案inti=3,j=3,k=3;doublex=0.0,y=2.3;i&&j&&k(i&&j)&&k1x||i&&j-3x||(i&&(j-3))0ij&&xy(ij)&&(xy)0ij||xy(ij)||(xy)1-1||01inta=1,b=2,c=3;doublex=1.0;ab&&cb0a!b||!!a1a+b!c+c0a-x||b*c&&b/a121短路求值计算含有&&和||的运算数的表达式时,只要得到了结果的真或者假,求值的过程就停止,这样的计算的过程就停止,这样的计算过程是短路求值(short-circleevaluation)对于exp1&&exp2求值的时候当exp1的值是0的时候,不论exp2为何值,整个表达式为0,计算机不会也没有必要去计算exp2对于exp1||exp2求值的时候当exp1的值是1的时候,不论exp2为何值,整个表达式为1,计算机不会也没有必要去计算exp222短路求值例子#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);}23课堂练习当程序执行下面代码时会显示什么?仔细分析结果#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));}0010111024[例]判断某一年是否是闰年。条件是:能被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所代表的就不是闰年。选择结构程序设计逻辑运算符和逻辑表达式25[课堂练习]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)选择结构程序设计逻辑运算符和逻辑表达式26if语句27选择结构程序设计if语句if语句的三种形式if用来判断给定的条件的真假,并决定执行哪一种操作。1.if表达式语句条件满足时执行表达式后面的语句,然后继续执行以下的语句。条件不满足时,越过if表达式后面的语句,往下执行。表达式语句真(非0)假(0)例如:如果输入的是正数,则打印出来。if(x0)printf(%d,x);错误:ifb==aarea=a*a;28合并if(jk)min=j;if(jk)printf(jissmallerthank);if(jk){min=j;printf(jissmallerthank);}29选择结构程序设计if语句if语句的三种形式2.if表达式语句1else语句2条件满足时执行语句1,然后继续执行if以下的语句。条件不满足时,执行语句2,然后继续执行if以下的语句。表达式语句1语句2真假例如:输出两个数中较大的一个。if(xy)printf(%d,x)elseprintf(%d,y);30注意的问题if(a!=b){a+=1;b+=2;};//errorelsec+=3;31选择结构程序设计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假假假假真真真真32选择结构程序设计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);33选择结构程序设计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);34[例]输入两个数,按数值大小次序排列输出.main(){floata,b,t;scanf(%f,%f,&a,&b);if(ab){t=a;a=b;b=t;}pri

1 / 53
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功