分支和循环语句(上)1
目录一、 if语句1.if2.else3.多条语句4.多分⽀5.嵌套if语句6.悬空else问题二、关系操作符三、条件操作符四、逻辑操作符 , || , 1.逻辑取反运算符 2.逻辑与运算符3.逻辑或运算符||4.练习1闰年的判断5.短路⽬标1. 掌握分支语句ifelseswitch2. 掌握关系操作符、条件操作符、逻辑操作符在代码中的应用能够熟练使用3. 掌握循环语句for、while、do.while以及break和continue4. 理解并熟练应用循环嵌套解决问题5. 锻炼自己阅读代码的能力注:不要让自己的懒惰和学校的扫盲式教育阻碍你的前进;“能不能…”、”…会不会更好”的问题尽量自己去敲代码试试只有亲自摸索出的答案才会印象深刻。C语⾔是结构化的程序设计语⾔这⾥的结构指的是顺序结构、选择结构、循环结构C语⾔是能够实现这三种结构的其实仔细分析,我们的⽇常事都可以拆分为这三种结构或者这三种结构的组合。我们可以使⽤if、switch实现分⽀结构使⽤for、while、do while实现循环结构。一、if语句1.ifif 语句的语法形式如下:表达式成⽴为真则语句执⾏表达式不成⽴为假则语句不执⾏。在C语⾔中0为假⾮0表⽰真也就是表达式的结果如果是0则语句不执⾏表达式的结果如果不是0则语句执⾏。例⼦输⼊⼀个整数判断是否为奇数思路:只要是奇数它除以二时一定余一※为判断相等2.else⼀个正整数不是奇数就是偶数。给定⼀个任意的正整数要判断是奇数还是偶数怎么表⽰呢就需要if...else...语句了语法形式如下:举例输⼊⼀个正整数如果是奇数打印是奇数否则打印偶数。练习:输⼊⼀个成绩成绩 60就输出拿捏拿捏否则就输出补考补考3.多条语句默认在 if 和 else 语句中默认都只控制⼀条语句⽐如:上⾯的代码你会发现输⼊的值不管是60 还是60庆祝⼀下 都会打印在屏幕上。这是因为if语句只能控制⼀条语句就是 printf(拿捏拿捏~\n); if语句为真则打印;if语句为假则不打印对于 printf(庆祝⼀下\n); 是独⽴存在的不管if语句的条件的真假都会被执⾏。那如果我们要if语句同时控制2条语句怎么办呢那就要使⽤{}将代码括起来 else 后也可以跟上⼤括号。如:4.多分⽀在 if else 语句中 else 可以与另⼀个 if 语句连⽤构成多分⽀的场景。⽐如总价“满50减15满30减8满20减5不满20元不参与活动”怎么实现练习暗恋对象回消息速度和⼼情指数如果回复时间⼩于等于1分钟秒回今天⼀定有戏如果回复时间在1分钟到10分钟还⾏ta可能在忙如果回复时间在10分钟到1⼩时ta可能没看到信息……我去打游戏了如果回复时间超过1⼩时别等了代码不香吗5.嵌套if语句有时候我们需要在if语句中嵌套if语句形成多层嵌套的判断。⽐如评奖学⾦资格1. 成绩 85没有挂科没有记过处分有奖学⾦2. 其中任意⼀个条件不满⾜都不能评奖怎么实现※嵌套的if语句是没有顺序要求的但当多项条件不满足时程序会输出相对最外层的理由,此处若全不满足会输出成绩不满足一栏。6.悬空else问题如果有多个if和else可以记住这样⼀条规则else总是与前⾯最近的、还没有配对的if结合。看下⾯代码执⾏的结果是空。为什么呢这就是悬空 else 的问题如果有多个 if 和 else 可以记住这样⼀条规则 else 总是与前⾯最近的、还没有配对的 if 匹配。上⾯的代码排版让 else 和第⼀个 if 语句对⻬让我们以为 else 是和第⼀个if匹配的当 if语句不成⽴的时候⾃然想到的就是执⾏ else ⼦句打印 haha 但实际上 else 是和第⼆个 if进⾏匹配的这样后边的 if...else 语句是嵌套在第⼀个 if 语句中的如果第⼀个 if 语句就不成⽴嵌套 if 和 else 就没机会执⾏了最终啥都不打印。※此处还要注意一种代码风格问题,不要因为凌乱的排版加重矫正代码的工作量:若想了解更多代码的书写风格记得看《高质量C/C编程指南》尤其是前三章。如果代码改成下⾯这样就更加容易理解了。或者如果我们希望else确实和第⼀个if匹配可以这样修改代码(用大括号把if二号隔离起来):当然也可以追求一下if一号和else的大括号对齐:只要带上适当的⼤括号代码的逻辑就会更加的清晰所以以后在写代码的时候要注意括号的使⽤让代码的可读性更⾼。二、关系操作符C语⾔⽤于⽐较的表达式称为 “关系表达式”relational expression⾥⾯使⽤的运算符就称为“关系运算符”relational operator主要有下⾯6个。关系表达式通常返回0或1表⽰真假。C 语⾔中 0 表⽰假所有⾮零值表⽰真。⽐如 20 12 返回 1 12 20 返回 0 。关系表达式常⽤于 if 或 while 结构。①相等运算符与赋值运算符是两个不⼀样的运算符不要混淆(具体含义往前翻)。※有个小技巧可以判断一下那就是互换一下变量与数字的位置通过观察代码能否运行来区分它们。不能再从右向左导致系统报错的是赋值。上⾯⽰例中原意是n 5但是不⼩⼼写成n 5。这个式⼦表⽰对变量n赋值5它的返回值为5所以if判断总是为真。为了防⽌出现这种错误有的程序员喜欢将变量写在等号的右边。这样的话如果把误写成编译器就会报错。②多个关系运算符不宜连⽤上⾯⽰例中连续使⽤两个⼩于运算符。这是合法表达式不会报错但是通常达不到想要的结果即不是保证变量 j 的值在 i 和 k 之间。因为关系运算符是从左到右计算所以实际执⾏的是下⾯的表达式。上面式子中ij返回0或1所以最终是0或1与变量k进行比较如果想要判断变量j的值是否存在i和k之间应该使用下面的写法:⽐如我们输⼊⼀个年龄如果年龄在18岁~36岁之间我们输出⻘年。如果我们这样写:当我们输⼊10的时候依然输出⻘年这是因为我们先拿18和age中存放的10⽐较表达式1810为假 18age 的结果是0再拿0和36⽐较036为真所以打印了 ⻘年 所以即使当age是10的时候也能打印 ⻘年 逻辑上是有问题这个代码应该怎么写呢以上就是关系操作符我们需要掌握的剩下的只要按照字⾯意思理解使⽤就⾏没有特别注意的。三、条件操作符条件操作符也叫三⽬操作符需要接受三个操作数形式如下。条件操作符的计算逻辑是如果 exp1 为真 exp2 计算计算的结果是整个表达式的结果如果exp1 为假 exp3 计算计算的结果是整个表达式的结果。练习使⽤条件表达式实现找两个数中较⼤值。将:变为:条件操作符也能嵌套使⽤但是不建议嵌套太深如果嵌套要注意换⾏对⻬的⽅式来写。四、逻辑操作符,||,逻辑运算符提供逻辑判断功能⽤于构建更复杂的表达式主要有下⾯三个运算符1.逻辑取反运算符这是一个单目操作符。⽐如我们有⼀个变量叫 flag ,如果flag为假要做⼀个什么事情就可以这样写代码如果 flag 为真 !flag 就是假如果 flag 为假 !flag 就是真2.逻辑与运算符 就是与运算符也是并且的意思 是⼀个双⽬操作符使⽤的⽅式是 ab , 都真才为真有假则为假。⽐如如果我们说⽉份是3⽉到5⽉是春天那如何使⽤代码体现这⾥表达的意思就是month既要⼤于等于3⼜要⼩于等于5必须同时满⾜3.逻辑或运算符|||| 就是或运算符也就是或者的意思 || 也是⼀个双⽬操作符使⽤的⽅式是 a || b ||两边的表达式只要有真就是真都为假才为假。⽐如我们说⼀年中⽉份是12⽉或者1⽉或者2⽉是冬天那么我们怎么使⽤代码体现呢4.练习1闰年的判断输⼊⼀个年份year判断year是否是闰年闰年判断的规则1. 能被4整除并且不能被100整除是闰年2. 能被400整除是闰年两规则的关系是:1可以单独判断就不用启动2判断;若1不行则启动2判断2也不行才不算闰年。※||两边的括号是可以去掉的但不建议。5.短路C语⾔逻辑运算符还有⼀个特点它总是先对左侧的表达式求值再对右边的表达式求值这个顺序是保证的。如果左边的表达式满⾜逻辑运算符的条件就不再对右边的表达式求值。这种情况称为“短路”。如前⾯的代码:表达式中 的左操作数是 month 3 右操作数是 month 5 ,当左操作数 month 3 的结果是0的时候即使不判断 month 5 整个表达式的结果也是0不是春季。所以对于操作符来说左边操作数的结果是0的时候右边操作数就不再执⾏。对于 || 操作符是一样的。如果month 12则不⽤再判断month是否等于1或者2整个表达式的结果也是1是冬季。所以 || 操作符的左操作数的结果不为0时就⽆需执⾏右操作数。像这种仅仅根据左操作数的结果就能知道整个表达式的结果不再对右操作数进⾏计算的运算称为短路求值。练习阅读代码计算代码输出的结果结果是a1b2c3d4另外i0。因为后置导致a0在让识别完后才会加1因此不会再向后运行。再看一个:结果是a2b2c3d4。因为a、b、c用或连接即一旦a1被系统赋给i使i1后后面都不再执行只有a会执行使a3。把a变为0:结果是a1b3c3d4。当代入a0时左边为假则右边有必要判断符号会使程序运行到右边也就是bb为真d就没必要运行。因此i2a、b运行使a1,b3。※阅读代码体会逻辑操作符和短路现象:游戏中同时持有‘钥匙’且血量30%或被诅咒了才能进入隐藏房间。

相关新闻

Sunshine 自托管游戏串流主机:10 分钟搭好低延迟串流服务器

Sunshine 自托管游戏串流主机:10 分钟搭好低延迟串流服务器

Sunshine 自托管游戏串流主机:10 分钟搭好低延迟串流服务器 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine 是一款自托管的游戏串流宿主程序,配合…

2026/10/14 1:59:17 阅读更多 →
2026最新6款Copilot平替工具实测深度对比

2026最新6款Copilot平替工具实测深度对比

花了两个周末,我把主流的几款 AI 编程工具挨个装了一遍。起因是我的 GitHub Copilot 年费刚好到期,续费前想看看市面有没有性价比更高的选择——毕竟一个月 $10 说多不多,一年下来也得七百多块。更关键的是,我这半年接手了一个电商…

2026/10/14 1:59:17 阅读更多 →
FastAPI高性能API实战:异步、缓存与部署优化

FastAPI高性能API实战:异步、缓存与部署优化

1. 先理思路:一个高性能API到底在“高”什么在日常的后端开发里,接口性能永远是绕不开的话题。FastAPI 这几年能火起来,不光是因为它写起来爽、自带文档,更重要的是它在“高性能”和“开发效率”之间找到了一个非常难得的平衡点。…

2026/10/14 1:59:17 阅读更多 →

最新新闻

单片机毕设选题推荐:基于STM32的婴儿摇篮哭泣尿床监测与环境联动控制系统设计 基于物联网的婴儿床温湿度自动调节与哄睡装置设计(032707)

单片机毕设选题推荐:基于STM32的婴儿摇篮哭泣尿床监测与环境联动控制系统设计 基于物联网的婴儿床温湿度自动调节与哄睡装置设计(032707)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/10/14 2:44:28 阅读更多 →
Lua数值类型全解析:整数浮点与整除取余避坑指南

Lua数值类型全解析:整数浮点与整除取余避坑指南

很多朋友第一次接触 Lua程序设计,是在某个配置文件或者游戏模组里。打开一个脚本,想改个数值看看效果,结果被注释符号、表达式、类型转换这些基础概念卡住了。我最初接触Lua也是因为类似场景——某项目的规则引擎用Lua做嵌入式脚本&#xff0…

2026/10/14 2:44:28 阅读更多 →
Workerman 5.x 完整实战指南:基于事件驱动的 PHP 异步网络框架

Workerman 5.x 完整实战指南:基于事件驱动的 PHP 异步网络框架

后端 【免费下载链接】workerman An asynchronous event driven PHP socket framework. Supports HTTP, Websocket, SSL and other custom protocols. 项目地址: https://gitcode.com/gh_mirrors/wo/workerman 点击查看 免费下载 Workerman 是一个使用纯 PHP 编写…

2026/10/14 2:44:28 阅读更多 →
uniPush离线推送实战:厂商通道配置与到达率优化指南

uniPush离线推送实战:厂商通道配置与到达率优化指南

1. 离线推送到底在解决什么问题做移动端应用的人迟早会撞上这个需求:用户把App划掉了、手机锁屏了、后台进程被系统回收了,这时候业务侧发出一条通知,用户还能不能在通知栏看到?答案就是离线推送要解决的核心命题。uniPush这套方案…

2026/10/14 2:44:28 阅读更多 →
单片机计算机毕设之基于物联网的婴儿床环境自动调节与哄睡联动装置设计 基于单片机的智能婴儿摇篮温湿度调节与远程监控系统设计(032707)

单片机计算机毕设之基于物联网的婴儿床环境自动调节与哄睡联动装置设计 基于单片机的智能婴儿摇篮温湿度调节与远程监控系统设计(032707)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/10/14 2:44:28 阅读更多 →
Java异步编程进阶:CompletableFuture任务编排与线程池实战

Java异步编程进阶:CompletableFuture任务编排与线程池实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 2:43:28 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →