【C语言】循环语句(语句使用建议)
文章目录
- **while循环**
- **while循环的实践**
- **补充:if语句与while语句区别**
- **for循环(使用频率最高)**
- **for循环的实践**
- **while循环和for循环的对比**
- **Do-while循环**
- **break和continue语句**
- **循环的嵌套**
- **goto语句(不常用)**
- **循环语句的效率(来自于高质量的C/C++编程书籍)**
循环语句
循环结构:允许一段代码重复执行直到满足某个特定条件,循环语句有效地编写代码,避免复杂度–>使用for、while、do while等实现循环结构使用for、while、do while等实现循环结构
本次开始循环结构的学习,会有习题加深理解

while循环
语法:
while(循环条件)循环体语句块
- (1) 判断循环条件是否满足,不满足就退出循环体。
- (2) 执行循环体。
- (3) 返回第(1)步
如果循环条件根本不能成立,则不执行循环体,若循环条件总是成立,则成为死循环。根据不同实际需要来控制循环条件和控制循环变量数值
//如果条件一直满足,就会出现死循环
while(1)
{ printf("死循环\n");
}
while循环的实践
在屏幕上打印1~10的数值
int mian()
{int i=0;while(i<=10){printf("%d ", i);i = i+1;}return 0;
}
补充:if语句与while语句区别
if和while语句在语法结构是十分相似的
if(条件表达式)语句块
while(循环条件)语句块
区别:虽然if和while语句都是通过循环条件,判断是否执行语句块,但是while语句是循环语句,意味着while中的语法块可以多次执行,直到不满足条件表达式。
for循环(使用频率最高)
语法:
for(表达式1;表达式2;表达式3)循环体语句块
-
表达式1:用于循环变量的初始化–省略不对循环控制变量赋值
-
表达式2:用于循环结束条件判断–省略进入死循环
-
表达式3:用于循环变量调整–省略不对循环控制变量经行调整
-
(1)计算初始表达式。
-
(2)判断循环条件,若满足,则执行;否则,退出循环。
-
(3)执行循环。
-
(4)返回第(2)步。
整个循环过程中,表达式1初始化部分只被执行1次,剩下就是表达式2、循环语句、表达式3在循环。
for循环的实践
在屏幕上打印1~10的数值
int main()
{for(int i=0;i<10;i++){printf("%d\n",i);}return 0;
}
while循环和for循环的对比

while和for在实现循环中,都有三个部分:循环变量初始化、条件表达式、控制循环变量大小。从形式来说for循环的三个部分非常集中,方便代码的维护,而while循环的三个部分比较分散
当需要使用循环语句时,while循环和for循环都是不错的选择。
小技巧:当不知道for循环判断条件怎么设定,可带入个临界值对比预期效果,再进行调整判断条件
重点还是放在上面的循环语句
Do-while循环
语句:
do循环体语句块while(循环条件);//不要忘记;号
Do-while语句属于当型循环结构,至少循环一次循环体语句再经行判断循环条件是否继续进入循环中
- (1) 执行一次循环体。
- (2) 判断是否满足循环条件,若满足,则循环,转到(1)继续执行;否则,执行随后的语句。
break和continue语句
在循环执行过程中,可能会出现状况,需要提前终止循环。C语言提供了break和continue关键字。
break:是终止本级循环,常用于for,while,do以及switch语句中。当执行一个循环体时,break被执行将立刻跳出循环体,且只退出本级循环
continue:是跳过(不执行)本次循环continue后面的代码,转为继续执行下一次循环体。for循环和while循环中有所差异,在于受到调整循环变量大小位置上的影响

循环的嵌套
前面学习for、while、Do-while循环,这三种循环往往嵌套在一起可以更好的解决问题
比如:实现排序,做题
练习:打印100~200之间的素数(素数⼜称质数,只能被1和本身整除的数字)
int main()
{for (int i = 101; i <= 200; i=i+2)//产生100到200的数字--偶数一定是素数{int flag = 1;for (int j = 2; j < i; j++)//能被2到N-1整除的不是素数{if (i % j == 0){flag = 0;break;}}if(flag==1)printf("%d ",i);}return 0;
}
goto语句(不常用)
如果需要实现在同一个函数内跳转到设置好的标号处的效果,可以用到goto语句和跳转标号。
int mian()
{printf("准备开始\n");goto next;printf("被跳过");next;printf("程序来到这里");return 0;
}
这里就像goto next与next中内容被注释掉,既然goto语句具有跳转的效果,如果使用不当,可能会打乱程序执行的流程。
使用场景:适用于跳出多层循环,比如嵌套三层for循环需要提前跳出循环,需要三个break才能跳出循环,而goto可以更加快捷跳出循环
建议:自从提倡结构化设计以来,goto就成为有争议的语句,goto语句能不用就不使用
循环语句的效率(来自于高质量的C/C++编程书籍)
这里主要提及了三个方面
- 长短循环在不同层循环的效率问题
- 循环体中逻辑判断设计的效率问题
- for循环变量范围的书写问题
1.尽量应当将最长的循环放在最内层,最短的循环放在最外层,为了减少CPU切换循环层的次数,以便于提高程序效率

2.如果循环体内存在逻辑判断,并且循环次数很大,应将逻辑判断移到外面
3.for语句中循环控制变量循环体的外面,目的为了高效保持循环"流水线"作业,使得编译器能对循环进行优化处理,提高效率。如果N非常大,推荐右边的写法,可以提高效率,如果N非常小,两者效率差别并不明显,建议采用左边的写法,因为程序可读性更强

个人理解:如果需要多次使用判断语句,这样子会导致流水线会停下来,影响到效率,将判断放外面先经行判断,再高效地循环"流水线"工作
3.1不能在for循环体内修改循环变量,可以调整循环变量大小,防止for循环失控
3.2 for循环中循环控制变量的取值采用“半开半闭区间”写法,这样的写法更加直观知道起点到终点的间隔为多少,循环次数为多少
1.for(int i=0;i<N;i++) 2.for(int i=0;i<=N-1;i++)
个人理解:两者的功能是相同的,不管上面的那一种写法并不是固定的,还是根据实际需要选择,如果是实现一样的效果,还是推荐"半开半闭区间",不要忘记循环判断条件取值得小妙招!
感谢各位的观看,本店先更新完C语言章节,C++系列,在C语言系列结束更新。
相关文章:
【C语言】循环语句(语句使用建议)
文章目录 **while循环****while循环的实践****补充:if语句与while语句区别****for循环(使用频率最高)****for循环的实践****while循环和for循环的对比****Do-while循环****break和continue语句****循环的嵌套****goto语句(不常用)****循环语句的效率(来自于高质量的C/C编程书籍…...
Spring Data访问Elasticsearch----响应式Reactive存储库
Spring Data访问Elasticsearch----响应式Reactive存储库 一、用法二、配置 Reactive Elasticsearch存储库支持建立在存储库中解释的核心存储库支持之上,利用由 Reactive REST客户端执行的 Reactive Elasticsearch Operations提供的操作。 Spring Data Elasticsear…...
堆排序(c语言)
文章目录 前言一.什么是堆二.向下调整算法三.堆排序的创建总结 前言 堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于&#x…...
开源IT自动化运维工具Ansible解析
Ansible 是一款开源的 IT 自动化工具,用于简化应用程序部署、配置管理、持续集成、基础设施即代码(Infrastructure as Code, IaC)和服务编排。它由 Michael DeHaan 创建,并在2012年首次发布,到2015年被红帽公司&#x…...
【C++】仿函数优先级队列反向迭代器
目录 一、优先级队列 1、priority_queue 的介绍 2、priority_queue 的使用 3、 priority_queue 的模拟实现 1)priority_queue()/priority_queue(first, last) 2)push(x) 3)pop() 4&#…...
UE4_调试工具_绘制调试球体
学习笔记,仅供参考! 效果: 步骤: 睁开眼睛就是该变量在此蓝图的实例上可公开编辑。 勾选效果:...
机器人路径规划:基于冠豪猪优化算法(Crested Porcupine Optimizer,CPO)的机器人路径规划(提供MATLAB代码)
一、机器人路径规划介绍 移动机器人(Mobile robot,MR)的路径规划是 移动机器人研究的重要分支之,是对其进行控制的基础。根据环境信息的已知程度不同,路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或…...
探索.NET中的定时器:选择最适合你的应用场景
概述:.NET提供多种定时器,如 System.Windows.Forms.Timer适用于UI,System.Web.UI.Timer用于Web,System.Diagnostics.Timer用于性能监控,System.Threading.Timer和System.Timers.Timer用于一般定时任务。在.NET 6及以上…...
5467: 【搜索】流浪奶牛
题目描述 吃不到饭的奶牛Bessie一气之下决定离开农场,前往阿尔费茨山脉脚底下的农场(听说那儿的草极其美味)投靠她的亲戚Jimmy。但是前往目的地的山路崎岖,Bessie又没有吃饭,她需要尽量保存体力,以最轻松的…...
spring boot整合elasticsearch实现查询功能
第一步、添加依赖(注意版本对应关系)根据spring boot版本选择合适的版本 <dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>7.6.2</version></dependenc…...
白嫖阿里云程序员日历
https://developer.aliyun.com/topic/lingma/activities/202403?taskCode14508&recordId44f3187f7950776f494eec668a62c65f#/?utm_contentm_fission_1 「通义灵码 体验 AI 编码,开 AI 盲盒」 打开链接直接领就行了...
ubuntu20.04搭建rtmp视频服务
1.安装软件 sudo apt-get install ffmpeg sudo apt-get install nginx sudo apt-get install libnginx-mod-rtmp 2.nginx配置 修改/etc/nginx/nginx.conf文件,在末尾添加: rtmp {server {listen 1935;application live {live on;}} } 3.视频测试 本…...
Request failed with status code 504,Gateway time out
问题描述: 部署在测试环境的项目在执行某功能时,后台程序在执行过程中,前端控制台在一分钟左右会报出Request failed with status code 504,Gateway time out异常。但是在本地开发环境会正常运行,并不会报出异常。 问题…...
四、Elasticsearch 进阶
自定义目录 4.1 核心概念4.1.1 索引(Index)4.1.2 类型(Type)4.1.3 文档(Document)4.1.3 字段(Field)4.1.5 映射(Mapping)4.1.6 分片(Shards&#…...
海外云手机如何帮助亚马逊引流?
随着全球化的推进,出海企业和B2B外贸企业越来越注重海外市场的开拓,这已成为企业争夺市场份额的重要策略。本文将重点探讨海外云手机在优化亚马逊店铺引流方面的作用和优势。 海外云手机是一种在云端运行的虚拟手机,能够在单一芯片上多开几个…...
Gateway新一代网关
Gateway新一代网关 1、概述 Cloud全家桶中有个很重要的组件就是网关,在1.x版本中都是采用的Zuul网关; 但在2.x版本中,zuul的升级一直跳票,SpringCloud最后自己研发了一个网关SpringCloud Gateway替代Zuul。 官网&…...
Simulink中Scope图像导出在MATLAB上重新画
在Simulink中,Scope是一个常用的可视化工具,用于实时显示仿真过程中的信号波形。 1. 从Simulink Scope中导出数据 首先,您需要在Simulink的Scope中捕获或记录想要导出的数据。这通常通过配置Scope的“Logging”选项来实现。确保在仿真过程中…...
利用opencv获取系统时间
前一篇《c获取系统时间的方法-CSDN博客》博客介绍了如何在不同系统中获取系统时间的方法,但这些方法受系统的限制,如time.h就只能在Linux系统中使用。而opencv则不受系统限制,示例代码如下, #include <opencv2/opencv.hpp>…...
Go环境变量配置,及GOROOT、GOPATH的区别
一、安装Go go下载地址: https://golang.google.cn/dl/ windows下载安装,有两种方式。解压和直接安装 方式一:直接下载安装包。以.msi结尾的文件。例如: go1.22.1.windows-amd64.msi 下载后,双击后一直点下一步即…...
爬虫系列-CSS基础语法
🌈个人主页:会编程的果子君 💫个人格言:“成为自己未来的主人~” CSS全称层叠样式表 ,主要用来定义页面内容展示效果的一门语言,HTML:页面骨架,素颜CSS:页面效果美化:…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...
【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...
小木的算法日记-多叉树的递归/层序遍历
🌲 从二叉树到森林:一文彻底搞懂多叉树遍历的艺术 🚀 引言 你好,未来的算法大神! 在数据结构的世界里,“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的,它…...
2025年- H71-Lc179--39.组合总和(回溯,组合)--Java版
1.题目描述 2.思路 当前的元素可以重复使用。 (1)确定回溯算法函数的参数和返回值(一般是void类型) (2)因为是用递归实现的,所以我们要确定终止条件 (3)单层搜索逻辑 二…...
Python 高级应用10:在python 大型项目中 FastAPI 和 Django 的相互配合
无论是python,或者java 的大型项目中,都会涉及到 自身平台微服务之间的相互调用,以及和第三发平台的 接口对接,那在python 中是怎么实现的呢? 在 Python Web 开发中,FastAPI 和 Django 是两个重要但定位不…...
