前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【C语言】分支语句详解

【C语言】分支语句详解

作者头像
TANGLONG
发布2024-10-15 18:57:43
发布2024-10-15 18:57:43
21000
代码可运行
举报
运行总次数:0
代码可运行

一、if语句

  1. if语句使用格式如下:
代码语言:javascript
代码运行次数:0
运行
复制
 if (表达式)
    语句

    表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏,C语言中0为假,非0为真     接下来我们举个例子就懂了,我们试着来实现:输入一个整数,判断是否为奇数,首先判断方法就是让这个整数模2,如果返回1,那么它就是一个奇数,示例如下:

  1. else 如果⼀个数不是奇数,那就是偶数了,如果任意⼀个整数,我们要清楚的判断是奇数还是偶数怎么表⽰呢?就要用上else(其他的情况),在这里也可以翻译为否则,写法如下:
代码语言:javascript
代码运行次数:0
运行
复制
if (表达式)
 语句1 
else

具体示例:其含义为,输入一个整数,判断是否为奇数,是奇数就打印,否则为偶数,再打印

  1. 分支语句中包含多条语句: 默认if和else都只能控制一条语句,比如:

可以发现,虽然输入的年龄小于18,可是还是会打印“可以谈恋爱了”,但是不会打印“成年了”,这就是上面说的if默认只能控制一条语句,那怎么可以让它控制多条语句呢,只需要把要一起控制的语句用大括号括起,如图:

这下输入15就不会打印“可以谈恋爱了”。同理,如果else后想要控制多条语句,也要用大括号括起。

  1. 嵌套if: 在 if else 语句中,else 可以与另⼀个 if 语句连⽤,构成多重判断。⽐如:要求输⼊⼀个整数,判断输⼊的整数是0,还是正数或者负数。请看如下代码:

上面的if语句就嵌套在else语句中。再比如实现这样的程序:输⼊⼀个整数,如果是正数,再判断是奇数还是偶数,并输出;如果不是正数则输出:⾮正数,如图:

如上就是对if语句进行了嵌套。

if语句练习

输⼊⼀个⼈的年龄 如果年龄<18岁,打印"少年" 如果年龄在18岁⾄44岁打印"⻘年" 如果年龄在45岁⾄59岁打印"中⽼年" 如果年龄在60岁⾄89岁打印"⽼年" 如果90岁及以上打印"⽼寿星"

答案放在本文最下方

二、关系操作符

C 语⾔⽤于⽐较的表达式,称为 “关系表达式”,⾥⾯使⽤的运算符就称为“关系运算符”,主要有下⾯6个

  1. 运算符分类 • >是大于运算符 • < ⼩于运算符 • >= ⼤于等于运算符 • <= ⼩于等于运算符 • == 相等运算符 • != 不相年龄在表达等运算符
  2. 关系表达式返回值:一般返回逻辑值,默认返回0表示假,返回1表示真,也就是如果表达式成立返回1,不成立返回0。要注意的一点是:C语言中0是假,非0为真,这里只是用1表示真,并不表示真就是1
  3. 注意事项: (1)不要把相等操作符==写成了赋值操作符=,容易出现逻辑错误,比如if( n = 3),原本想判断n是否等于3,现在的含义是把3赋值给n,是永远为真的条件 (2)多个关系符不能连用,比如想表达年龄在18到30岁之间时,不能写成18=<age<=30,编译器会报错,要写成age >=18 && age <=30,在后面的逻辑操作符会详细讲到

三、条件操作符

条件操作符属于三目操作符,也是C语言唯一一个三目操作符,需要用三个操作数,大致用法是: 条件 ?表达式1 : 表达式2,如果条件成立,即条件为真,那么执行表达式1,条件不成立,即条件为假,执行表达式2,比如将如下代码改造为使用条件操作符的表达式:

解析:b后面用的赋值操作符,就是把表达式a >5 ? 3 : -3的结果赋给b,如果输入的值大于5,那么就执行表达式1,结果就为3,如果输入的值小于等于5,那么执行表达式2,结果就为-3。     从该例子可以看出,一些简单的条件判断就可以使用条件操作符,会比if语句简单一些

条件操作符练习

使⽤条件表达式实现找两个数中较⼤值

答案在本文最后

四、逻辑操作符

逻辑运算符提供逻辑判断功能,⽤于构建更复杂的表达式,主要有下⾯三个运算符 • ! :逻辑取反运算符(改变单个表达式的真假) • && :逻辑与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假) • || :逻辑或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假) 接下来我们进行一一介绍:

  1. 逻辑取反操作符!:可以将原表达式的逻辑值取反,比如原表达式为真,那么取反后就为假,原表达式为假,取反后为真,例如:

解析:a的值为10,b的值为20,a>b,返回的就是假,然后取反过后就是真,那么以上表达式!(a>b)返回值就是真,那么满足了if语句的判断,就在屏幕上打印了“hello world”

  1. 逻辑与操作符&&:它的意思就是并且,比如表达式1 && 表达式2,它的含义就是既要满足表达式1,也要满足表达式2,即两个表达式同时为真,结果才为真,比如我们想表达3月到5月是春天,那么月份必须满足大于等于3月,并且小于等于5月,否则就不满足题意,举例为:

解析:我们输入的月份必须必须满足大于等于3月,并且小于等于5月,即表达式1和2都要为真才行,如果有一个为假那么就不会打印“春天”,故我们可以总结出规律: • 真 && 真结果为真 • 真 && 假结果为假 • 假 && 真结果为假 • 假 && 假结果为假

  1. 逻辑或操作符||:它的含义是或者,比如表达式1 || 表达式2,只需要其中一个表达式满足条件,即其中一个表达式为真,那么结果为真,比如同样表达3月到5月之间是春天,使用逻辑或表达如下:

解析:这里有三个条件,要么月份等于3,要么月份等于4,要么月份等于5,只要其中一个成立就会打印春天,只有都不满足这三个条件的月份才不会打印春天,即只有所有表达式为假,才会返回假,其余都返回真,可以总结规律如下: • 真 || 真结果为真 • 真 || 假结果为真 • 假 || 真结果为真 • 假 || 假结果为假

逻辑操作符练习

输⼊⼀个年份year,判断year是否是闰年 闰年判断的规则:

  1. 能被4整除并且不能被100整除是闰年
  2. 能被400整除是闰年

答案在文末

五、switch语句

    除了 if 语句外,C语⾔还提供了 switch 语句来实现分⽀结构。switch 语句是⼀种特殊形式的 if…else 结构,⽤于判断条件有多个结果的情况。它把多重的 else if 改成更易⽤、可读性更好的形式,特点就是大部分情况需要知道表达式准确的返回值,其语法为: switch (表达式) {         case 值1: statement         case 值2: statement         default: statement                                 } 上⾯代码中,根据表达式 expression 不同的值,执⾏相应的 case 分⽀。如果找不到对应的值, 就执⾏ default 分⽀

  1. switch语句和if语句对比:比如要实现:输⼊任意⼀个整数值,计算除2之后的余数,使用if语句为:

使用Switch语句为:

上述的代码中,我们要注意的点有: (1)case 和后边的数字之间必须有空格 (2)每⼀个 case 语句中的代码执⾏完成后,需要加上 break ,才能跳出这个switch语句。

  1. Switch语句中的break: 如果前面的代码我们去掉break会怎么样呢?

    我们会发现原本余数是0,结果还继续打印了余数是1,原因是 switch 语句也是分⽀效果的,只有在 switch 语句中使⽤ break 才能在跳出 switch 语句,如果某⼀个 case 语句的后边没有 break 语句,代码会继续往下执⾏,有可能执⾏其他 case语句中的代码,直到遇到 break 语句或者 switch 语句结束。就⽐如上⾯的代码就执⾏了case 0 的语句,还执行了case 1 中的语句

  1. Switch语句中的default: 如果我们输入的值不在我们的case中,那么我们就会用到default,用来排除其他情况,比如:输⼊⼀个1~7的数字,打印对应的星期⼏,例如输入1就打印星期一,代码如下:

试想如果用户没有按要求输入1~7的数字呢?此时就可以使用default,比如:

此时如果用户输入1~7之外的数字,也就是不在case中的数字,就会显示输入错误,相当于一个提示信息

  1. default的顺序: 不少人认为default必须放在最后,实际上default和case语句没有严格的顺序要求,只不过习惯将default放在最后,实际上是可以放在前面,甚至放在第一个也可以

Switch语句练习

如果上述需求发⽣变化,变为:

  1. 输⼊1~5,输出的是“⼯作⽇”
  2. 输⼊6~7,输出“休息⽇”
  3. 如果输入其他数字,那么打印输入错误

如何简便地将要求完成 答案在本文末尾

六、答案

  1. if语句练习答案:
  1. 条件操作符练习答案:
  1. 逻辑操作符练习答案:
  1. Switch语句练习答案:

    这里我们利用了Switch语句中如果没有break,那么从对应case进入,并且实现对应语句后,并不会直接停下来,而是继续执行代码。输入1,2,3,4,5都会打印工作日,那么不如直接将打印工作日放在case 5,然后用break结束,假设从case 1进入,什么也没有,就会往下面继续执行,知道碰见了case 5,打印了工作日后,break停止了,输入2~4也是同理。根据这个逻辑,输入6,7都会打印休息日,就直接把打印休息日放在case 7,然后用break结束,原理同上。     由此可见,我们可以根据需求,灵活使用break,不能太呆板

如果有什么疑问,欢迎在评论区留言。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-09-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、if语句
    • if语句练习
  • 二、关系操作符
  • 三、条件操作符
    • 条件操作符练习
  • 四、逻辑操作符
    • 逻辑操作符练习
  • 五、switch语句
    • Switch语句练习
  • 六、答案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档