2、”5>3”的值为“真”,表达式的值为1。d=5>4>6;d的值为0.C语言中没有专用的逻辑值,1代表真,0代表假5.2逻辑运算符和逻辑表达式(一).逻辑运算符及其优先次序&&(逻辑与)相当于其他语言中的AND
3、
4、(逻辑或)相当于其他语言中的OR!(逻辑非)相当于其他语言中的NOT例:a&&b若a,b为真,则a&&b为真。a
5、
6、b若a,b之一为真,则a
7、
8、b为真。!a若a为真,则!a为假。优先次序:!(非)>&&(与)>
9、
10、(或)逻辑运算符中的“&&”和“
11、
12、”低于关系运算符,“!”高于算术运算符5.2逻辑运算符和逻辑表达式(二)逻辑表达式用逻辑运算符将关系表达式或逻辑量连
13、接起来的式子就是逻辑表达式逻辑表达式的值是一个逻辑量“真”或“假”例:设a=4,b=5:!a的值为0a&&b的值为1a
14、
15、b的值为1!a
16、
17、b的值为14&&0
18、
19、2的值为1任何非零的数值被认作“真”5.2逻辑运算符和逻辑表达式例:5>3&&8<4-!0自左向右运算1&&0逻辑值为08<3逻辑值为04-1值为3!0逻辑值为15>3逻辑值为1表达式值为0在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行。(1)a&&b&&c只有a为真时,才需要判断b的值,只有a和b都为真时,才需要判断c的值。(2)a
20、
21、b
22、
23、c只要a为真,就不必判断b和c的值,只有a为假,才判断b。a和
24、b都为假才判断c例:(m=a>b)&&(n=c>d)当a=1,b=2,c=3,d=4,m和n的原值为1时,由于“a>b”的值为0,因此m=0,而“n=c>d”不被执行,因此n的值不是0而仍保持原值1。5.2逻辑运算符和逻辑表达式用逻辑表达式来表示闰年的条件能被4整除,但不能被100整除。能被400整除答(year%4==0&&year%100!=0)
25、
26、year%400==0案值为真(1)是闰年,否则为非闰年。5.3if语句一.If语句的三种基本形式(1)if(表达式)语句例:if(x>y)printf(“%d”,x);表达式语句真(非0)假(0)5.3if语句(2)if
27、(表达式)语句1else语句2例:if(x>y)printf(“%d”,x);elseprintf(“%d”,y);条件语句1语句2YN5.3if语句(3)if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3……elseif(表达式m)语句melse语句n例:if(number>500)cost=0.15;elseif(number>300)cost=0.10;elseif(number>100)cost=0.075;elseif(number>50)cost=0.05;elsecost=0;说明:(1).3种形式的if语句中在if后面都有表
28、达式,一般为逻辑表达式或关系表达式(值非零就执行)。(2).第二,第三种形式的if语句中,在每个else前面有一个分号,整个语句结束处有一个分号。(3).在if和else后面可以只含有一个内嵌的操作语句,也可以由多个操作语句,此时用花括号{}将几个语句括起来成为一个复合语句。例5.1输入两个实数,按代数值由小到大的顺序输出这两个数。#includevoidmain(){floata,b,t;scanf(“%f,%f”,);if(){t=a;a=b;b=t;}printf(“%5.2f,%5.2f”,a,b);}yna>bt=aa=b
29、b=t&a,&ba>b例5.2输入三个数a,b,c,要求按由小到大的顺序输出。Ifa>b将a和b对换Ifa>c将a和c对换Ifb>c将b和c对换a>ba>cb>ca和b交换a和c交换c和b交换yyynn#includevoidmain(){floata,b,c,t;scanf(“%f,%f,%f”,&a,&b,&c);if(a>b){t=a;a=b;b=t;}if(){t=a;a=c;c=t;}if(){t=b;b=c;c=t;}printf("%5.2f,%5.2f,%5.2f",a,b,c