当前位置: 首页 > news >正文

【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++编程书籍)

这里主要提及了三个方面

  1. 长短循环在不同层循环的效率问题
  2. 循环体中逻辑判断设计的效率问题
  3. 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存储库支持建立在存储库中解释的核心存储库支持之上&#xff0c;利用由 Reactive REST客户端执行的 Reactive Elasticsearch Operations提供的操作。 Spring Data Elasticsear…...

堆排序(c语言)

文章目录 前言一.什么是堆二.向下调整算法三.堆排序的创建总结 前言 堆排序&#xff08;Heapsort&#xff09;是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构&#xff0c;并同时满足堆积的性质&#xff1a;即子结点的键值或索引总是小于&#x…...

开源IT自动化运维工具Ansible解析

Ansible 是一款开源的 IT 自动化工具&#xff0c;用于简化应用程序部署、配置管理、持续集成、基础设施即代码&#xff08;Infrastructure as Code, IaC&#xff09;和服务编排。它由 Michael DeHaan 创建&#xff0c;并在2012年首次发布&#xff0c;到2015年被红帽公司&#x…...

【C++】仿函数优先级队列反向迭代器

目录 一、优先级队列 1、priority_queue 的介绍 2、priority_queue 的使用 3、 priority_queue 的模拟实现 1&#xff09;priority_queue()/priority_queue(first, last) 2&#xff09;push&#xff08;x&#xff09; 3&#xff09;pop&#xff08;&#xff09; 4&#…...

UE4_调试工具_绘制调试球体

学习笔记&#xff0c;仅供参考&#xff01; 效果&#xff1a; 步骤&#xff1a; 睁开眼睛就是该变量在此蓝图的实例上可公开编辑。 勾选效果&#xff1a;...

机器人路径规划:基于冠豪猪优化算法(Crested Porcupine Optimizer,CPO)的机器人路径规划(提供MATLAB代码)

一、机器人路径规划介绍 移动机器人&#xff08;Mobile robot&#xff0c;MR&#xff09;的路径规划是 移动机器人研究的重要分支之&#xff0c;是对其进行控制的基础。根据环境信息的已知程度不同&#xff0c;路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或…...

探索.NET中的定时器:选择最适合你的应用场景

概述&#xff1a;.NET提供多种定时器&#xff0c;如 System.Windows.Forms.Timer适用于UI&#xff0c;System.Web.UI.Timer用于Web&#xff0c;System.Diagnostics.Timer用于性能监控&#xff0c;System.Threading.Timer和System.Timers.Timer用于一般定时任务。在.NET 6及以上…...

5467: 【搜索】流浪奶牛

题目描述 吃不到饭的奶牛Bessie一气之下决定离开农场&#xff0c;前往阿尔费茨山脉脚底下的农场&#xff08;听说那儿的草极其美味&#xff09;投靠她的亲戚Jimmy。但是前往目的地的山路崎岖&#xff0c;Bessie又没有吃饭&#xff0c;她需要尽量保存体力&#xff0c;以最轻松的…...

spring boot整合elasticsearch实现查询功能

第一步、添加依赖&#xff08;注意版本对应关系&#xff09;根据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 编码&#xff0c;开 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文件&#xff0c;在末尾添加&#xff1a; rtmp {server {listen 1935;application live {live on;}} } 3.视频测试 本…...

Request failed with status code 504,Gateway time out

问题描述&#xff1a; 部署在测试环境的项目在执行某功能时&#xff0c;后台程序在执行过程中&#xff0c;前端控制台在一分钟左右会报出Request failed with status code 504&#xff0c;Gateway time out异常。但是在本地开发环境会正常运行&#xff0c;并不会报出异常。 问题…...

四、Elasticsearch 进阶

自定义目录 4.1 核心概念4.1.1 索引&#xff08;Index&#xff09;4.1.2 类型&#xff08;Type&#xff09;4.1.3 文档&#xff08;Document&#xff09;4.1.3 字段&#xff08;Field&#xff09;4.1.5 映射&#xff08;Mapping&#xff09;4.1.6 分片&#xff08;Shards&#…...

海外云手机如何帮助亚马逊引流?

随着全球化的推进&#xff0c;出海企业和B2B外贸企业越来越注重海外市场的开拓&#xff0c;这已成为企业争夺市场份额的重要策略。本文将重点探讨海外云手机在优化亚马逊店铺引流方面的作用和优势。 海外云手机是一种在云端运行的虚拟手机&#xff0c;能够在单一芯片上多开几个…...

Gateway新一代网关

Gateway新一代网关 1、概述 ​ Cloud全家桶中有个很重要的组件就是网关&#xff0c;在1.x版本中都是采用的Zuul网关&#xff1b; ​ 但在2.x版本中&#xff0c;zuul的升级一直跳票&#xff0c;SpringCloud最后自己研发了一个网关SpringCloud Gateway替代Zuul。 ​ 官网&…...

Simulink中Scope图像导出在MATLAB上重新画

在Simulink中&#xff0c;Scope是一个常用的可视化工具&#xff0c;用于实时显示仿真过程中的信号波形。 1. 从Simulink Scope中导出数据 首先&#xff0c;您需要在Simulink的Scope中捕获或记录想要导出的数据。这通常通过配置Scope的“Logging”选项来实现。确保在仿真过程中…...

利用opencv获取系统时间

前一篇《c获取系统时间的方法-CSDN博客》博客介绍了如何在不同系统中获取系统时间的方法&#xff0c;但这些方法受系统的限制&#xff0c;如time.h就只能在Linux系统中使用。而opencv则不受系统限制&#xff0c;示例代码如下&#xff0c; #include <opencv2/opencv.hpp>…...

Go环境变量配置,及GOROOT、GOPATH的区别

一、安装Go go下载地址&#xff1a; https://golang.google.cn/dl/ windows下载安装&#xff0c;有两种方式。解压和直接安装 方式一&#xff1a;直接下载安装包。以.msi结尾的文件。例如&#xff1a; go1.22.1.windows-amd64.msi 下载后&#xff0c;双击后一直点下一步即…...

爬虫系列-CSS基础语法

&#x1f308;个人主页&#xff1a;会编程的果子君 &#x1f4ab;个人格言:“成为自己未来的主人~” CSS全称层叠样式表 &#xff0c;主要用来定义页面内容展示效果的一门语言&#xff0c;HTML&#xff1a;页面骨架&#xff0c;素颜CSS&#xff1a;页面效果美化&#xff1a…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...

【技巧】dify前端源代码修改第一弹-增加tab页

回到目录 【技巧】dify前端源代码修改第一弹-增加tab页 尝试修改dify的前端源代码&#xff0c;在知识库增加一个tab页"HELLO WORLD"&#xff0c;完成后的效果如下 [gif01] 1. 前端代码进入调试模式 参考 【部署】win10的wsl环境下启动dify的web前端服务 启动调试…...