【分支结构】

本文详细介绍了C语言中的if语句、嵌套if、关系表达式(包括运算符和计算顺序)、条件操作符、逻辑操作符(如&&,||,!),以及switch语句的使用,强调了break和default在控制流程中的作用。
摘要由CSDN通过智能技术生成

我们可以用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 = 0if(!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语言中还是蛮重要的,希望看到小伙伴有些收获,有哪里没做好的可以评论区指出,会及时调整

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值