文章目录
一、逻辑运算符和逻辑表达式
优先次序:!(非)→&&(与)→‖(或), 即“!”为三者中最高的; 逻辑运算符中的“&&”和“‖”低于关系运算符,“!”高于算术运算符
在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。
举个小例子
判别用year表示的某一年是否闰年,可以用一个逻辑表达式来表示。闰年的条件是符合下面二者之一: ①能被4整除,但不能被100整除,如2008。②能被400整除,如2000。
(year % 4 == 0 && year % 100 != 0) ‖ year % 400 == 0
二、条件运算符和条件表达式
表达式1 ? 表达式2 : 表达式3
条件运算符的执行顺序: 先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。
举例2.1
输入一个字符,判别它是否为大写字母,如果是,将它转换成小写字母;
如果不是,不转换。然后输出最后得到的字符。
#include <stdio.h>
int main()
{
char ch;
scanf("%c",&ch);
ch=(ch>='A'&&ch<='Z')?(ch+32):ch;
printf("%c\n",ch);
return 0;
}
三、选择结构的嵌套
if与else的配对关系。
else总是与它上面的最近的未配对的if配对。
编程序者把else写在与第1个if(外层if)同一列上,意图是使else与第1个if对应,但实际上else是与第2个if配对,因为它们相距最近。
如果if与else的数目不一样,为实现程序设计者的思想,可以加花括号来确定配对关系。
举例3.1
算法步骤
S1:输入x
S2:若x<0,则y=-1
S3:否则
S4:若x=0,则y=0
S5:否则(即x>0),则y=1
S6:输出y
方法1.无嵌套
#include <stdio.h>
int main()
{
int x,y;
scanf("%d",&x);
if(x<0) y=-1;
if(x==0) y=0;
if(x>0) y=1;
printf("x=%d,y=%d\n",x,y);
return 0;
}
方法2.嵌套
#include <stdio.h>
int main()
{
int x,y;
scanf("%d",&x);
if(x<0)
y=-1;
else
if(x==0) y=0;
else y