3、
4、逻辑或!逻辑非两个操作对象同时为真时,表达式的值为真。两个操作对象之一为真时,表达式的值为真。当操作对象的值为真,则表达式的值为假。说明:(1)&&和
5、
6、是双目运算符,!是单目运算符(2)&&和
7、
8、的运算级别低于关系运算符,!的运算级别高于关系运算符和算术运算符,注意:!的结合方向是从右向左。&&和
9、
10、的结合方向是从左向右,(3)不能确定的情况下,添加括号保证运算次序。尽量避免复杂烦琐的
11、逻辑表达式。例:a=10;b=20;c=30;a=(--b<=a)
12、
13、(a+b!=c);a=?b=?a=1b=19(5)在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只有在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。例:intx=-1;执行了++x
14、
15、++x
16、
17、++x后,x的值是?x=1(4)参加逻辑运算的运算对象可以是0(“假”)或任何非0的数值(“真”);但运算后的结果和关系运算的结果一样,只能是逻辑值0和1。1.简单的if语句形式:if(表达式)语句执行过程:如果表达式值非0,执行该语句,然后执行if的下一个语句;否则直接
18、执行if的下一个语句。例:main(){inta,b,max;printf(”请输入两个数:”);scanf(”%d%d”,&a,&b);max=a;if(maxz交换x,yx>y输入x,y,zYNYN交换y,zy>zYN#includemain(){intx,y,z,t;printf(“Pleaseinputthex,y,z:”);scanf(“%d%d%d”,&x,&y,&z)
19、;if(x>y){t=x;x=y;y=t;}if(x>z){t=x;x=z;z=t;}if(y>z){t=y;y=z;z=t;}printf(“Smalltobig:%d%d%d”,x,y,z);}if语句2.if/else语句形式:if(表达式)语句1else语句2执行流程:如果表达式值非0,执行语句1;否则,执行语句2;无论执行了哪一路分支之后,都执行if的下一条语句。例if(x>y)max=x;elsemax=y;printf(”max=%d”,max);例.判断给定的某一年是否是闰年。分析:如果某年能被4整除而不能被100整除,或者能被400
20、整除,那么该年就是闰年,否则就是平年。if(year%4==0&&year%100!=0
21、
22、year%400==0)#includemain(){intyear,leap=0;printf("请输入年份(yyyy):");scanf("%d",&year);/*判断该年是否是闰年*/if(year%4==0&&year%100!=0
23、
24、year%400==0)leap=1;if(leap)/*leap=1,即该年是闰年*/printf("%d年是闰年.",year);else/*leap=0,即该年是平年*/printf("%d
25、年是平年.",year);}例.制作简单的猜数字游戏。程序运行时自动产生1~5之间的随机数,接着等待键盘输入猜的数字。如果猜对了,显示“猜对了”相关信息;否则,如果猜错了,则显示“猜错了”相关信息。分析:如何产生1~5之间的随机数?1)随机数产生:C语言提供srand()函数,配合rand()函数可产生介于0~32767之间的随机数(函数均包含在stdlib.h中)。srand((unsigned)time(NULL));/*以做随机数产生器的种子,time()函数包含在time.h中*/guess=rand();/*以上面得到的种子产生0~3276
26、7的整数*/2)1~5之间的随机数:首先用rand()函数产生的随机数,然后对5