我们可以用if语句,switch语句,来实现分支结构
文章目录
一、if语句
1. if语句的形式
if(表达式)
语句;
当表达式为真(非0),执行语句,当表达式为假(0),不执行语句。
判断一个数是否是奇数,上代码:
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if(num % 2 == 1)
printf("%d 是奇数\n",num);
return 0;
}
只要表达式成立,就会打印出来,不成立则不打印
2. else
if(表达式)
语句1;
else
语句2;
else是和if连用的,表示除去if(表达式)成立的结果,但是else不能够单独用。
一个数不是奇数就是偶数怎么判断
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if(num % 2 == 1)
printf("%d 是奇数\n",num);
else
printf("%d 是偶数\n",num);
return 0;
}
当你任意输入一个整数,if(表达式)成立就打印这个数为奇数,没成立就打印出这个为偶数
说明一点:if和else后面只能执行一条语句,要想执行多条语句的话要在后面加 {} 把想要执行的语句括起来,来看看例子。
这里就出矛盾了,这里充分的说明了if()后只执行一条语句(else也是同理),第二个printf是不受if()影响的
所以想要在if()else后执行多条语句一定要加 {} 哦
3. 嵌套if
在使用if()else语句时,else可以和if()连用,构成多重判断,来看看例子
先判断三条边是否能构成三角形,能的话就进行下面的if()else的嵌套,判断三条边是否都相等,都相等的话它就是等边三角形,不行就在判断是否有一对边相等(这里代码的注释写的时候写错了应该是一对边而不是一条边),再不行那它只能是普通三角形了
还有一个重要的点就是: else是只和它最近的if匹配的, 而不是和哪个对齐就匹配哪个
二、关系表达式
1. 关系运算符
在关系表达式里使用的运算符叫关系运算符,主要有下面这6个
大于(>), 小于(<), 等于(==), 大于等于(>=), 小于等于(<=), 不等于(!=)
a > b;
a < b;
a == b;
a >= b;
a <= b;
a != b;
这些关系表达式返回的值的1或者0(表示真假)
if(a == 5)
{
printf("haha\n");
}
当a的值真等于5的时候返回值为1,表示真执行下面的语句,当a的值不为5的时候返回值为0,不执行下面语句
说明一下: == 和 = 的区别
= 是赋值运算符,a = 5;
是把5的值给a,而 == 是关系运算符,a == 5;
是判断a的值是否为5,不要搞混了,搞混了程序是会报错的!
在添加一个小建议:多个关系运算符不宜连用
2. 条件操作符
条件操作符也叫三目操作符,形式是:
表达式1 ? 表达式2 : 表达式3
逻辑是当表达式1为真(1),执行表达式2,不执行表达式3
当表达式1为假(0),执行表达式3,不执行表达式2
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int m = a > b ? a : b;
printf("%d\n", m);
return 0;
}
如果a > b就输出a的值,否则就输出b的值
3. 逻辑操作符
3.1 逻辑与(&&)
&&:逻辑与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假),形式是:
表达式1 && 表达式2
&&是双目操作符,只有&&两边的表达式都为真时,整个表达式才为真,否则整个表达式为假
int a = 3;
int b = -2;
if(a > 0 && b < 0)
printf("haha\n");
这里表达的是只有a > 0 并且 b < 0同时成立时才会打印haha
3.2 逻辑或( || )
|| : 逻辑或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假) ,形式是:
表达式1 || 表达式2
|| 是双目操作符,只要一边表达式成立,整个表达式就为真,两边表达式都为假的时候,整个表达式才为假
int a = 3;
int b = -2;
if(a > 0 || b > 0)
printf("haha\n");
这里只要a > 0成立,就可以打印haha,因为这里b > 0是不成立的
3.3 逻辑非(!)
! : 逻辑取反运算符(改变单个表达式的真假),形式是:
!表达式
把真的变成假,把假的变成真
int flag = 0;
if(!flag)
printf("haha\n");
这里定义了flag为0(假),所以 !flag 就为真,会打印haha
3.4 计算顺序
逻辑操作符的计算顺序是从左到右求值,如果左边已经满足了就不对右边的表达式求值了
对于&&来说,左边表达式为假了,整个表达式就直接为假,不对后面的表达式求值,如果左边的表达式为真,才会对下一个表达式求值
对于 || 来说,左边的表达式为真,整个表达式就直接为真,不对后面的表达式求值,如果左边的表达式为假,才会对下一个表达式求值
像这种仅仅通过左边就可以知道整个结果的的运算称为短路求值
三、switch语句
1. switch语句的形式
switch(表达式)
{
case value1 : 语句;
case value2 : 语句;
default : 语句;
}
表达式必须是整型表达式,或者是字符型表达式
case后面必须是整型常量表达式,或者是字符型
case和后面的数字中间一定要加空格
如果想跳出switch语句就需要在case结束后加break
计算表达式的结果,结果是多少就执行哪个case语句,不然就执行default语句,注意:在没有break的情况下,表达式计算出哪个值它就从哪个case执行下去,看看例子:
因为7 % 3的结果为1,所以从case1开始执行,又因为没break语句,所以case1后面的case语句也会执行
2. switch语句中的break
想要只想执行一条语句怎么办呢?
就要在case语句后加break就行啦,要不要加break要根据需求来定
3. switch语句中的default
default语句是在表达式计算后没有匹配到的case之后执行default语句,它的位置和case的位置是没有顺序要求的,只要在switch语句中就行,不影响最终结果,但是一般把它放在最后面
四、总结
分支结构在C语言中还是蛮重要的,希望看到小伙伴有些收获,有哪里没做好的可以评论区指出,会及时调整