(1):if语句
(2):关系条件符
(3):逻辑条件符
(4):switch循环语句
(一):if else语句
(1):表达式为真执行,为假不执行
(2):==此操作符是判断是否相等,注意与=赋值操作符区分
//code1:判断是否为奇数
int main()
{
int n = 0;
scanf("%d", &n);
if (n % 2 == 1)
{
printf("是奇数\n");
}
else
{
printf("不是奇数\n");
}
return 0;
}
(3)分支中有多条语句
注:C语言规定,一条if或else语句只能控制一条语句
若想控制多条语句可以使用大括号{ }
{ }大括号中的内容称为:程序块或代码块(属于复合语句)
//code2:输入代码大于18岁可以谈恋爱成年,反之
int main()
{
int age = 0;
printf("请输入您的年龄\n");
scanf("%d", &age);
if (age >= 18)
{
printf("成年了,可以谈恋爱了\n");
}
else
{
printf("虽然未成年,但也可以谈恋爱\n");
}
return 0;
}
(4):嵌套if
1:else中套if 可以改进为 else if(见下面代码)
//code3:输入一个数判断是0\正数\负数
int main()
{
int n = 0;
printf("请输入一个数\n");
scanf("%d", &n);
if (n == 0)
{
printf("这个数是0\n");
}
else if (n < 0)
{
printf("这个数是负数\n");
}
else
{
printf("这个数是正数\n");
}
return 0;
}
练习:
//code4:输入年龄
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
{
printf("青年\n");
}
else if (age < 44)
{
printf("青壮年\n");
}
else if (age < 60)
{
printf("中老年\n");
}
else if (age < 89)
{
printf("中老年\n");
}
else
{
printf("老寿星\n");
}
return 0;
}
(5)悬空else问题
C语言中else总是与离的最近的if进行匹配
//code5:题目,判断输出结果
int main()
{
int a = 0;
int b = 2;
if (a == 1)//此时条件为假,进入不了if语句
if (b == 2)
printf("hehe\n");
else
printf("haha\n");//C语言中else只与最近的else进行匹配,所以也进入不了
return 0;
}
(二)关系操作符 > < >= <= == !=
(1)关系操作符通常会返回0或者1;
(2)当变量与常量比较相等时,建议将常量放在=左侧,万一将==写为=可以及时的发现错误所在
(3)多个关系操作符不适宜连用 想一起用可以与逻辑操作符一起使用
(三)条件操作符 exp1 ? exp2 : exp3
(1):C语言中唯一的一个三目操作符
(2):exp1表达式执行若为真,输出exp2表达式;若为假,则输出exp3表达式
(3):实例
//code6:b大于5输出3,否则输出-3
int main()
{
int a = 0;
int b = 0;
scanf("%d", &a);
b = a > 5 ? 3 : -3;
printf("%d\n", b);
return 0;
}
//code7:求出a 与 b中的较大值
int main()
{
int a = 0;
int b = 0;
int c = 0;
scanf("%d %d", &a, &b);
c = a > b ? a : b;
printf("%d\n", c);
return 0;
}
(四):逻辑操作符 && || !
(1):逻辑取反操作符:!
可将真变为假;假变为真
//code8:flag为假做一些事
int main()
{
int flag = 0;
scanf("%d", &flag);
if (!flag)//当这个条件为反时会进入
{
printf("do something");
}
return 0;
}
(2)逻辑与运算符: &&
一假则假,全真则真
(3)逻辑或操作符: ||
一真则真,全假则假
(4)闰年判断:
//code9:闰年判断
int main()
{
int year = 0;
scanf("%d", &year);
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
{
printf("是闰年\n");
}
else
{
printf("不是闰年\n");
}
return 0;
}
(5)逻辑运算符中的短路现象
1:逻辑运算符的特点总是先对左侧表达式进行求值,若作表达式满足要求,就不计算后面的表达式
//code10:关于短路的题目:
int main()
{
int i = 0, a = 0, b = 2, c = 3, d = 4;
i = a++ && ++b && d++;
//后置++,先使用再++。a=0时表达式结果为假,根据&&一假全假,无需进行后续计算
//表达式为假则i=0,abcd结果为 1,2,3,4
printf("a=%d\n b=%d\n c=%d\n d=%d\n", a, b, c, d);
printf("%d\n", i);
return 0;
}
(四)swich case语句
(1):switch后面必须是整型表达式
(2):case后面必须是整型常量
(3):default:在case不能匹配输入时进入default
//code11:输入1——7,对应输出星期一到星期天
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期天\n");
break;
}
return 0;
}
//code12:输入1——5输出工作日,输入6——7,输出休息日
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
default:
printf("输入错误\n");
break;
}
return 0;
//并不是所有的case后边必须跟着break,根据自身需要随时调整
}