C语言入门Day_18 判断和循坏的小结
目录
前言:
1.判断
2.循环
3.课堂笔记
4.思维导图
前言:
判断语句和循环语句都可以大致分为三个部分,第一个部分是固定的语法格式;第二部分是代码的执行顺序,第三部分是判断和循环成立与否的判断条件。

1.判断
1.1
我们来看看 if 的代码执行顺序:
if(5>1){prinrf("5>1\n");
}
if (1<5){prinrf("5>1\n");
}
1.先执行判断语句
if (5 > 1) {
2.判断成立,执行代码块中的语句
printf("5>1\n");
}
3.判断语句永远会被执行
if (1 < 5) {
4.判断条件不成立,不执行剩下的语句
printf("5>1\n");
}
1.2
然后是if-else的双向判断:
我们来看看if-else的代码执行顺序:
if(1>5){printf("1>5\n");
} else{printf("1<5\n");
}
1.if判断语句第一个执行
if (1 > 5) {
2.判断条件不成立,不执行if代码块中的代码
printf("1 > 5\n");
3.直接执行else语句
} else {
4.以及else代码块中的代码
printf("1 < 5\n");
}
1.3
最后是if-else if-else的多向判断/复杂判断:
我们看看多向判断的代码执行顺序:
if(1>5){printf("1>5\n");
}else if(1==5){printf("1==5\n");
} else {printf("1<5\n");
}
1.if判断语句首先执行,判断条件不成立
if (1 > 5)
2.跳过if语句的代码块,进入else-if的判断,仍然不成立
else if(1 == 5)
3.进入else判断语句
else
4.最后进入else判断语句的代码块
printf("1 < 5\n");
if,else if,else 是互斥关系,程序只会执行其中一个判读分支的代码块。
2.循环
首先是for循环,for循环中用两个分号分为了三个部分:
初始定义;判断条件;迭代操作
2.1
我们看看代码的执行顺序:
for(int i=0;i<3;i++){printf("%d\n",i);
}
1.第一次for循环,先初始定义,然后进行判断
for(int i =0;i < 3;i++) {
2.执行第一次循环代码块
printf("%d\n", i);
}
for(int i=0;i<3;i++){printf("%d\n",i);
}
3.第二次for循环,进行迭代操作,和条件判断
for(int i =0;i < 3;i++) {
4.执行第二次循环代码块
printf("%d\n", i);
for(int i=0;i<3;i++){printf("%d\n",i);
}
5.第三次for循环,进行迭代操作,和条件判断
for(int i =0;i < 5;i++) {
6.执行第三次循环代码块
printf("%d\n", i);
2.2
while循环和do-while循环也是类似的代码执行顺序。
do-while循环和while循环的核心差异在于do-while循环是先执行-再判断,while是先判断-再执行。
没有特殊情况的话,我们推荐while循环。
这是一个死循环,又叫无限循环,我们看看它的执行顺序:
while(true){printf("true!\n");
}
1.循环的判断条件,条件为真
while(true){
2.执行循环的代码块
printf("true!\n");
}
while(true){printf("true!\n");
}
3.循环的判断条件永远为真
while(true){
4.重复执行循环的代码块,永不结束
printf("true!\n");
}
2.3
作为判断和循环的核心之一,判断条件是个很重要的部分,判断条件为真,后续的代码块就会执行;判断条件为假,则不会执行后续的代码块。
判断条件无论是逻辑运算,还是比较运算,还是直接是一个布尔数,本质都是一个布尔数。
2.4
判断和判断之间可以进行嵌套,循环和循环之间也可以进行嵌套,循环和判断之间仍然可以进行嵌套。
嵌套可以无数层,但是我们为了代码可读性和代码简洁性,不推荐太多层的嵌套。
2.5
针对循环代码顺序,我们可以通过break和continue来进行更精细化的控制。
break是终结整体的循环结构,又称大循环;0.
continue是跳过当下的这一次循环,又称小循环。
3.课堂笔记
1.判断条件为真才会执行代码块里的代码
if判断
if (5 > 1) {
printf("5>1\n");
}
2.当if判断条件不为真时,执行else代码块
if-else 判断
if (1 > 5) {
printf("1 > 5\n");
} else {
printf("1 < 5\n");
}
3.当if判断条件不为真时,执行else if代码块
else if判断
if (1 > 5) { printf("1 > 5\n");
} else if(1 == 5) {printf("1 == 5\n");
} else {
printf("1 < 5\n");
}
4.使用for循环输出0,1,2,3,4
for循环
for(int i =0;i < 5;i++){
printf("%d\n", i);
}
5.while循环先判断再执行
while循环
while(true){
printf("true!\n");
}
6.break的作用为立即退出本层循环; continue语句的作用是跳过本循环中剩余的语句而强制执行下一次循环
break & continue
int i = 0;
while(true){ printf("true!\n");
}i++; if(i < 5){continue; } else { break;}
}
4.思维导图

在撰写这篇文章时,我参考了《白纸编程》这个app的观点和思想,我要感谢他们对我的启发和帮助。
相关文章:
C语言入门Day_18 判断和循坏的小结
目录 前言: 1.判断 2.循环 3.课堂笔记 4.思维导图 前言: 判断语句和循环语句都可以大致分为三个部分,第一个部分是固定的语法格式;第二部分是代码的执行顺序,第三部分是判断和循环成立与否的判断条件。 1.判断 1…...
mac 好用的工具推荐
mac 好用的工具推荐 落雪:全网的音乐畅听,下载地址:https://github.com/lyswhut/lx-music-desktopMotrix: 免费下载工具,下载地址:https://xclient.info/s/motrix.html#versionsDownie:视频下载工具&#x…...
星际争霸之小霸王之小蜜蜂(十二)--猫有九条命
系列文章目录 星际争霸之小霸王之小蜜蜂(十一)--杀杀杀 星际争霸之小霸王之小蜜蜂(十)--鼠道 星际争霸之小霸王之小蜜蜂(九)--狂鼠之灾 星际争霸之小霸王之小蜜蜂(八)--蓝皮鼠和大…...
【软件分析/静态分析】chapter8 课程11/12 指针分析—上下文敏感(Pointer Analysis - Context Sensitivity)
🔗 课程链接:李樾老师和谭天老师的: 南京大学《软件分析》课程11(Pointer Analysis - Context Sensitivity I)_哔哩哔哩_bilibili 南京大学《软件分析》课程12(Pointer Analysis - Context Sensitivity II&…...
时间复杂度与空间复杂度详解
时间复杂度与空间复杂度详解🦖 一、算法效率1.1 如何衡量一个算法的好坏1.2 算法的复杂度 二、时间复杂度2.1 时间复杂度的定义2.2 大O的渐进表示法2.3 如何记录表示算法复杂度 三、空间复杂度3.1 空间复杂度的定义3.2 小试牛刀 一、算法效率 1.1 如何衡量一个算法…...
目录操作函数
mkdir函数 rmdir函数 删除空目录 rename函数 换名 chdir函数 修改当前的工作目录 getcwd函数 获取当前工作的路径...
PlantUML入门教程:画时序图
软件工程中会用到各种UML图,例如用例图、时序图等。那我们能不能像写代码一样去画图呢? 今天推荐一款软件工程师的作图利器--PlantUML,它能让你用写代码的方式快速画出UML图。 一、什么是PlantUML? PlantUML是一个允许你快速作出…...
C#范围运算符
C#8.0语法中,范围运算符是一种用于快速截取序列的运算符,其语法为 “start…end”,表示从序列的 “start” 索引处开始,一直截取到"end" 索引处为止(包括 “end” 索引处的元素)。范围运算符主要…...
云数据库知识学习——云数据库产品、云数据库系统架构
一、云数据库产品 1.1、云数据库厂商概述 云数据库供应商主要分为三类。 ① 传统的数据库厂商,如 Teradata、Oracle、IBM DB2 和 Microsoft SQL Server 等。 ② 涉足数据库市场的云供应商,如 Amazon、Google、Yahoo!、阿里、百度、腾讯…...
C++中引用详解!
前言: 本文旨在讲解C中引用的相关操作,以及引用的一些注意事项!搬好小板凳,干货来了! 引用的概念 何谓引用呢?引用其实很容易理解,比如李华这个同学,他因为很调皮,所以…...
VUE3+TS项目无法找到模块“../version/version.js”的声明文件
问题描述 在导入 ../version/version.js 文件时,提示无法找到模块 解决方法 将version.js改为version.ts可以正常导入 注意,因为version.js是我自己写的模块,我可以直接该没有关系,但是如果是引入的其他的第三方包,…...
数据结构-堆的实现及应用(堆排序和TOP-K问题)
数据结构-堆的实现及应用[堆排序和TOP-K问题] 一.堆的基本知识点1.知识点 二.堆的实现1.堆的结构2.向上调整算法与堆的插入2.向下调整算法与堆的删除 三.整体代码四.利用回调函数避免对向上和向下调整算法的修改1.向上调整算法的修改2.向下调整算法的修改3.插入元素和删除元素函…...
Spring 条件注解没生效?咋回事
条件注解相信各位小伙伴都用过,Spring 中的多环境配置 profile 底层就是通过条件注解来实现的,松哥在之前的 Spring 视频中也有和大家详细介绍过条件注解的使用,感兴趣的小伙伴戳这里:Spring源码应该怎么学?。 从 Spr…...
96. 不同的二叉搜索树
class Solution { public:int numTrees(int n) {if (n0) {return 1;}vector<int> dp(n1, 0);dp[0] 1;dp[1] 0;for (int i 1; i < n; i) {for (int j 0; j < i; j) {dp[i] dp[j] * dp[i - 1 - j];}}return dp[n];} };...
Android Jetpack 中Hilt的使用
Hilt 是 Android 的依赖项注入库,可减少在项目中执行手动依赖项注入的样板代码。执行 手动依赖项注入 要求您手动构造每个类及其依赖项,并借助容器重复使用和管理依赖项。 Hilt 通过为项目中的每个 Android 类提供容器并自动管理其生命周期,…...
批量采集的时间管理与优化
在进行大规模数据采集时,如何合理安排和管理爬取任务的时间成为了每个专业程序员需要面对的挑战。本文将分享一些关于批量采集中时间管理和优化方面的实用技巧,帮助你提升爬虫工作效率。 1. 制定明确目标并设置合适频率 首先要明确自己所需获取数据的范…...
uniApp监听左右滑动事件
监听左右滑动事件的步骤 1. 添加需要监听滑动事件的元素 在你的页面中,添加需要监听滑动事件的元素。这可以是一个 view、swiper 或其他组件,取决于你的需求。例如: <template><view class"body" touchstart"touc…...
十八、MySQL添加外键?
1、外键 外键是用来让两张表的数据之间建立联系,从而保证数据的一致性和完整性。 注意,父表被关联的字段类型,必须和子表被关联的字段类型一致。 2、实际操作 (1)初始化两张表格: 子表: 父…...
图像文件的操作MATLAB基础函数使用
简介 MATLAB中的图像处理工具箱体统了一套全方位的标准算法和图形工具,用于进行图像处理、分析、可视化和算法开发。这里仅仅对常用的基础函数做个使用介绍。 查询图像文件的信息 使用如下函数 imfinfo(filename,fmt) 函数imfinfo返回一个结构体的infoÿ…...
【k8s】Kubernetes版本v1.17.3 kubesphere 3.1.1 默认用户登录失败
1.发帖: Kubernetes版本v1.17.3 kubesphere 3.11 默认用户登录失败 - KubeSphere 开发者社区 2. 问题日志: 2.1问题排查方法 : 用户无法登录 http://192.168.56.100:30880/ 2.2查看用户状态 kubectl get users [rootk8s-node1 ~]# k…...
深入OpenBMC散热控制:从IPMI命令到D-Bus,揭秘手动与自动模式切换
深入OpenBMC散热控制:从IPMI命令到D-Bus,揭秘手动与自动模式切换 在数据中心和服务器运维领域,散热控制一直是系统稳定性的关键因素。OpenBMC作为开源基板管理控制器,其散热管理机制直接影响到服务器的可靠性和能效比。本文将带您…...
智能家居控制中心:OpenClaw+Qwen3.5-9B语音指令中转
智能家居控制中心:OpenClawQwen3.5-9B语音指令中转 1. 为什么需要语音控制的智能家居中枢? 去年装修新房时,我装了十几款不同品牌的智能设备——从米家的灯泡到涂鸦的窗帘电机,再到HomeKit的温控器。每次想调整家居状态…...
基于MATLAB的模拟退火粒子群算法在含分布式电源配电网多目标优化中的应用
310.基于matlab的模拟退火粒子群算法对含分布式电源的配电网进行多目标优化,目标函数包括总有功网损、总投资与运行成本、电压稳定欲度。 和目标函数相关参数有单位分布式电源投资成本、运行成本,分布式电源设备使用年限、贴现率等。 经过优化得到最佳结…...
iPhone 抓包失败 4 种具体情况逐个解决方法
抓不到包这个描述太模糊了,在实际调试中,这句话至少对应四种完全不同的情况: 完全没有请求只有浏览器能抓到能抓到但 HTTPS 解不开能抓到但数据不完整 如果不先分清楚是哪一种,就会一直重复安装证书或改代理配置。一、先做一个验证…...
Arduino平台SX1280 2.4GHz LoRa轻量驱动库
1. 项目概述PlugAndPlayForLoRa 是一个面向 Arduino 生态的轻量级 LoRa 物理层(PHY)驱动库,专为 SX1280 射频芯片设计,工作于 2.4 GHz ISM 频段。该库并非协议栈(如 LoRaWAN),而是直接对接 SX12…...
嵌入式开发中的静态代码分析工具与应用
嵌入式代码静态分析工具深度解析1. 静态代码分析技术概述1.1 传统编译器的局限性标准C语言编译器通常只能检测代码中的语法错误和部分潜在缺陷,对于程序架构设计和逻辑层面的问题往往无能为力。这种局限性在嵌入式开发中尤为明显,因为嵌入式系统对代码质…...
MediaPipe Holistic实战效果:一张照片生成全身骨骼图,效果超乎想象
MediaPipe Holistic实战效果:一张照片生成全身骨骼图,效果超乎想象 1. 引言:当AI遇见全身感知 想象一下,你只需要上传一张普通的全身照片,AI就能自动识别出你的面部表情、手势动作和身体姿态,并生成一张精…...
AutoSar标准文档下载全攻略:从官网入口到模块选择(附命名规则解析)
AutoSar标准文档高效获取与深度解析指南 引言 在汽车电子系统开发领域,AutoSar标准已经成为行业公认的架构规范。无论是ECU开发工程师、系统架构师还是测试验证人员,都需要频繁查阅AutoSar官方文档。然而,面对庞大的文档体系和复杂的命名规则…...
西门子S7-1200 PLC如何通过EtherCat转Profinet网关实现高效IO控制?5步搞定配置
西门子S7-1200 PLC与EtherCat设备的高效集成:5步实现Profinet网关配置 在工业自动化领域,不同协议设备之间的无缝通信一直是工程师面临的挑战。当您需要将EtherCat设备接入西门子S7-1200 PLC的Profinet网络时,协议转换网关成为关键桥梁。本文…...
统信UOS 1060e内网离线安装Docker保姆级教程(附CentOS 8 RPM包下载)
统信UOS 1060e内网离线安装Docker全流程实战指南 在企业级IT基础设施中,内网环境下的软件部署一直是运维工程师面临的特殊挑战。当服务器完全隔离于互联网时,每一个依赖包、每一条配置指令都可能成为阻碍系统正常运行的潜在障碍。本文将深入探讨在统信UO…...
