江苏工业学院计算机系运算符与选择结构设计计算机系软件教研室关系、等式和逻辑运算符选择结构设计计算机系软件教研室1关系运算符和关系表达式2逻辑运算符和逻辑表达式关系、等式和逻辑运算符计算机系软件教研室关系、等式和逻辑运算符关系运算符小于大于小于等于=大于等于=等式运算符相等==不等!=逻辑运算符非!逻辑与&&逻辑或||计算机系软件教研室运算符的优先级和结合性运算符结合性()++(后缀)--(后缀)从左到右+(一元)-(一元)++(前缀)--(前缀)从右到左*/%从左到右+-从左到右===从左到右==!=从左到右&&从左到右||从左到右?:从左到右=+=-=*=/=等从右到左,从左到右计算机系软件教研室关系、等式和逻辑运算符关系运算符关系运算实际上是两个量的比较,比较的结果只有两种可能:真(1)、假(0)。例如:a3?当a=5时,比较的结果为真;当a=1时,结果为假。C语言提供4种关系运算符①(小于)②=(小于或等于)③(大于)④=(大于或等于)不合法的a=ba=bab计算机系软件教研室关系、等式和逻辑运算符等式运算符相等==不等!=合法的ch==‘A’count!=-2x+y==2*z-5不合法的a=ba==b-1(x+y)=!44计算机系软件教研室关系、等式和逻辑运算符关系表达式用关系运算符将或者等式运算符两个表达式连接起来,叫关系表达式。合法的关系表达式:ab,a+bb+c,(a=3)(b=5),(a==3)(b==5),‘a’‘b’,(ab)(bc)关系表达式的值是一个逻辑值,非真即假.关系表达式5==3的值为假(在计算机中记为0);5=0的值为真(在计算机中记为1)。计算机系软件教研室关系、等式和逻辑运算符关系表达式例: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。计算机系软件教研室关系、等式和逻辑运算符关于优先次序,=,,=为同一级别,==和!=为同一级别。在同一级别中,采取由左至右的结合方向。算术运算符关系运算符赋值运算符高低[例]ca+bc(a+b)ab!=c(ab)!=ca==bca==(bc)a=bca=(bc)等式运算符计算机系软件教研室课堂练习inti=1,j=2,k=3;doublex=5.5,y=7.7ij-k-i+5*j=k+1x-y=j-k-1x+k+7y/k计算机系软件教研室课堂练习答案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)0计算机系软件教研室课堂练习inti=1,j=2,k=3i==ji!=ji+j+k==-2*-k计算机系软件教研室课堂练习答案inti=1,j=2,k=3i==jj==i0i!=jj!=I1i+j+k==-2*-k((i+k)+k)==((-2)*(-k))1计算机系软件教研室关系、等式和逻辑运算符逻辑运算符逻辑运算:产生真假值的运算。C语言提供的逻辑运算符:①&&逻辑与②||逻辑或③!逻辑非“&&”和“||”是双目运算符,它要求两个运算量。如:(ab)&&(xy),(ab)||(xy)“!”是一元运算符,只要求一个运算量。如:!(ab)错误的例子a!a!=ba&&a||ba&b计算机系软件教研室关系、等式和逻辑运算符逻辑运算符逻辑运算举例如下:a&&ba,b同时为真,则表达式为真a||ba,b只要有一个为真,表达式为真!aa为真,则表达式为假真值表ab!a!ba&&ba||bTTFFTTTFFTFTFTTFFTFFTTFF计算机系软件教研室关系、等式和逻辑运算符逻辑运算符的优先级!&&||逻辑运算符“&&”和“||”低于关系运算符,“!”高于算术运算符ab&&xy相当于:(ab)&&(xy)a==b||x==y相当于:(a==b)||(x==y)!a||ab相当于:(!a)||(ab)!算术关系逻辑赋值计算机系软件教研室关系、等式和逻辑运算符逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起来就是逻辑表达式。在C语言中,当判断一个量的真假时,一切非0数均被当成‘真’来处理。例如:若a=4,则!a的值为0若a=4,b=5,则a&&b的值为1a||b的值为1!a||b的值为14&&0||2的值为1计算机系软件教研室关系、等式和逻辑运算符逻辑表达式逻辑运算的结果非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。计算机系软件教研室逻辑运算符的一些概念!(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计算机系软件教研室课堂练习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/a计算机系软件教研室课堂练习答案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/a1计算机系软件教研室短路求值计算含有&&和||的运算数的表达式时,只要得到了结果的真或者假,求值的过程就停止,这样的计算的过程就停止,这样的计算过程是短路求值(short-circleevaluation)对于exp1&&exp2求值的时候当exp1的值是0的时候,不论exp2为何值,整个表达式为0,计算机不会也没有必要去计算exp2对于exp1||exp2求值的时候当exp1的值是1的时候,不论exp2为何值,整个表达式为1,计算机不会也没有必要去计算exp2计算机系软件教研室短路求值例子#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);}计算机系软件教研室课堂练习当程序执行下面代码时会显示什么?仔细分析结果#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));}计算机系软件教研室[例]判断某一年是否是闰年。条件是:能被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的值使表达式的值为1时,则year所代表的就不是闰年。关系、等式和逻辑运算符计算机系软件教研室[课堂练习]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)计算机系软件教研室思考如何改进?如果判别式小于0的时候怎么处理?计算机系软件教研室作业1、证明a!=b等价与!(a==b)2、为下列逻辑表达式创建真值表b1||b2||b3||b4!(!b1||b2)&&(!b3||b4)3、写出下列的逻辑值(可以等价的步骤)(假设inta=1,b=2,c=3;)a&&b&&ca&&b||ca||b&&ca||!b&&!!c+4a+=!b&&c==!54、P104,5.3江苏工业学院计算机系选择结构设计计算机系软件教研室1if语句2switch语句3程序举例选择结构程序设计计算机系软件教研室选择结构程序设计if语句if语句的三种形式if用来判断给定的条件的真假,并决定执行哪一种操作。1.if表达式语句条件满足时执行表达式后面的语句,然后继续执行以下的语句。条件不满足时,越过if表达式后面的语句,往下执行。表达式语句真(非0)假(0)例如:如果输入的是正数,则打印出来。if(x0)printf(%d,x);错误:ifb==aarea=a*a;计算机系软件教研室合并if(jk)min=j;if(jk)printf(jissmallerthank);if(jk){min=j;printf(jissmallerthank);}计算机系软件教研室选择结构程序设计if语句if语句的三种形式2.if表达式语句1else语句2条件满足时执行语句1,然后继续执行if以下的语句。条件不满足时,执行语句2,然后继续执行if以下的语句。表达式语句1语句2真假PYNAB例如:输出两个数中较大的一个。if(xy)printf(%d,x)elseprintf(%d,y);计算机系软件教研室注意的问题if(a!=b){a+=1;b+=2;};//errorelsec+=3;计算机系软件教研室选择结构程序设计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假假假假真真真真计算机系软件教研室选择结构程序设计if语句if语句的三种形式例如:商场促销,购物500元以上,8折;购物300元以上,85折;购物100元以上,9折;购物50元以上,95折;购物50元以下,不打折。根据消费量,计算优惠率。设:消费量为m