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

C语言循环

C语言的循环while、for、do…while…1、while循环while(表达式){语句}先判断表达式为真时执行while里面的语句执行大括号中的语句之后再次回到while处的表达式判断其是否为真如果为真则继续向下执行所以我们可以看到当表达式为真时while下面大阔号括起来的语句会一直循环直到表达式为假时则跳出循环。举例inti1;//初始化变量while(i8)//判断循环条件即表达式{printf(%d ,i);//打印i;//打印完i自加1}当我们运行上述程序,你会得到1 2 3 4 5 6 7 8 .那我们来走一次这个程序1第一轮当i1时判断i是否小于等于81是小于8 的执行循环体while大括号里面的内容打印i1之后执行i此时i2。回到while处判断循环条件是否成立。2第二轮当i2时判断i是否小于等于82是小于8 的执行循环体while大括号里面的内容打印i2之后执行i此时i3。回到while处判断循环条件是否成立。3第三轮当i3时判断i是否小于等于83是小于8 的执行循环体while大括号里面的内容打印i3之后执行i此时i4。回到while处判断循环条件是否成立。4第四轮当i4时判断i是否小于等于84是小于8 的执行循环体while大括号里面的内容打印i4之后执行i此时i5。回到while处判断循环条件是否成立。5第五轮当i5时判断i是否小于等于85是小于8 的执行循环体while大括号里面的内容打印i5之后执行i此时i6。回到while处判断循环条件是否成立。6第六轮当i6时判断i是否小于等于86是小于8 的执行循环体while大括号里面的内容打印i6之后执行i此时i7。回到while处判断循环条件是否成立。7第七轮当i7时判断i是否小于等于87是小于8 的执行循环体while大括号里面的内容打印i7之后执行i此时i8。回到while处判断循环条件是否成立。8第八轮当i8时判断i是否小于等于88是等于8 的执行循环体while大括号里面的内容打印i8之后执行i此时i9。回到while处判断循环条件是否成立。8第八轮当i9时判断i是否小于等于89是大于8 的不满足循环条件此时结束循环。可以看到while这个循环轮次展示了典型的while循环执行流程条件检查→执行语句→计数器更新→下一轮循环。在算法中这样的循环结构常用于需要重复执行固定次数的场景比如遍历数组、重复计算等。2、for循环for(表达式1表达式2表达式3){语句}我们先来解释一下这个for循环的结构1表达式1表示初始化如int i0。而这个表达式只执行一次。2表达式2判断部分即满足条件则继续循环不满足则停止循环。3表达式3调整部分如i,i–。这三个部分都可以省略不写for() .但是判断部分省略会使循环条件恒成立导致死循环。同样也使用for循环实现打印数字1-8for(inti1;i8;i){printf(%d ,i);}上述程序还可以表示为inti0;for(i1;i8;i){printf(%d ,i);}是一样的只是第一个它是初始化和赋值一起操作了第二个分开了而已。当我们运行上述程序,你会得到1 2 3 4 5 6 7 8 .那我们来走一次这个程序1初始化阶段i被初始化为1这表示循环的起点为1.2条件检查每次循环开始前都执行一次判断条件如满足i8条件为真则执行循环体里面的语句打印i的值。不满足i8条件即i8则条件为假停止循环。3当条件为真则执行printf(%d ,i);语句打印i4执行完循环体即大括号中的语句后执行增量i自加后的i又回到判断条件进行判断此时i2,将2与8相比5一直重复上述操作。6直到当i9时则不满足i8的条件那么循环停止不再执行循环体中的语句。对比for循环和while循环我们把这两个程序拿出来看一下这个是while语句构成的循环这个是for语句构成的循环两个进行对比图中红色的框表示的是初始化蓝色的框表示判断条件紫色的框为调整部分。所以不管是for循环还是while循环都包含这三个表达式但for循环的表达形式更为紧凑while循环会分散一些。所以使用for循环时循环体中语句太多的时候千万不要忘了调整部分表达式。这两种循环方式都可以实现同样的效果但对于while()循环常用于不清楚具体循环次数的程序中而for循环用于循环次数明确的地方。这只是小建议当我们了解了这两个循环我们是不是可以尝试实现求1-100中3的倍数。我觉得刚学习编程对我来说比较重要的是思考然后理清楚逻辑实现的办法。所以我在完成程序的时候会一步一步的告诉自己要实现什么然后再去调试不满足要求在修改。为了实现1-100中3的倍数那解题思路1首先应该实现数字1-100那么可以通过循环将这100个数字实现。2其次有了所有的数字那么就要从这些数字中寻找3的倍数。说到3的倍数这是什么意思3、6、9、12、15…这些是不是都是3的倍数我们是不是可以理解为3的倍数就是可以被3整除的数。那么如果要被3整除没有余数。所以我们可以对数字求3的模判断是否为0如果余数为零则是3的倍数不为零则不是3的倍数。这个地方可以使用判断。3最后找到一个3的倍数是不是要打印出来看看结果对不对如果不对那么修改程序。根据上述的思路我们走一遍这里我们使用for循环本人比较喜欢for循环1使用for循环实现1-100;for(inti1;i100;i)//从1可开始100结束23整除没有余数i%30(3) 打印出来看看结果printf(%d,i);好将这三个语句组合起来实现功能#includestdio.hintmain(){for(i1;i100;i){if(i%3){printf(%d,i);}}return0;}上面的程序 便可实现1-100里3的倍数数字打印。3、do…while…循环do{语句}while(表达式)这个循环体有一个特点就是不管一开始条件是否满足都会先执行一次。即先执行大括号中的语句然后在判断表达式是否为真确定是否进行下一个循环。例#includestdio.hintmain(){inti0;do{printf(haha\n);}while(i0);}输出为haha。对比之前的循环会先判断条件表达式是否满足即先判断i0满不满足要求在本题中i0则是不满足的则不会执行循环体。但do…while…循环不一样他先执行一次do后面大括号中的循环体语句然后再判断i是否大于零。4、break和continue说到循环就不得不提到break和continue之前在分支switch语句时也出现了break那这两个又是什么语句呢首先明确他们的概念1break表示永久终止循环执行时只要遇到了break 那么不管之后还有多少次循环都不再执行跳出循环体向下执行。例intmain(){inti0;inta0;for(i1;i4;i)//循环4次{if(i3)//i等于3时跳出循环{break;}printf(%d\n,i);打印i}a8;printf(%d\n,a);return0;}上述程序打印出来的是1 2 8为什么原本这个循环他应该执行4次的但是遇到break语句之后提前终止的循环那么他具体怎么实现的1第一轮当i1时判断i是否小于等于41是小于4 的执行循环体while大括号里面的内容由于1不等于3即不满足if条件语句中的表达式所以不会执行if语句大括号里面的内容直接执行打印i1之后执行i此时i2。2第二轮当i2时判断i是否小于等于42是小于4 的执行循环体while大括号里面的内容由于2不等于3即不满足if条件语句中的表达式所以不会执行if语句大括号里面的内容直接执行打印i2之后执行i此时i3。3第三轮当i3时判断i是否小于等于43是小于4 的执行循环体while大括号里面的内容由于3等于3即满足if条件语句中的表达式所以执行if语句大括号里面的内容break语句此时直接跳出循环不再执行打印。4跳出循环后还需要按顺序执行循环外的语句将8赋值给a并打印出来。所以为什么后面要加上a 8;printf(“%d\n”, a);这两句话是为了让大家清楚break只是跳出了循环体不执行后面的循环了不是跳出结束了整个程序。2continue表示跳过本次循环continue后面的代码执行下一次循环。例intmain(){inti0;inta0;for(i1;i4;i){if(i3){continue;}printf(%d\n,i);}a8;printf(%d\n,a);return0;}我将上面的代码做了一个修改即将break语句置换成了continue这个时候所得到的效果就不一样了。这便是打印出来的效果大家可以看到他只是跳过了3这次循环后面的循环依旧执行。那么他具体怎么实现的1第一轮当i1时判断i是否小于等于41是小于4 的执行循环体while大括号里面的内容由于1不等于3即不满足if条件语句中的表达式所以不会执行if语句大括号里面的内容直接执行打印i1之后执行i此时i2。2第二轮当i2时判断i是否小于等于42是小于4 的执行循环体while大括号里面的内容由于2不等于3即不满足if条件语句中的表达式所以不会执行if语句大括号里面的内容直接执行打印i2之后执行i此时i3。3第三轮当i3时判断i是否小于等于43是小于4 的执行循环体while大括号里面的内容由于3等于3即满足if条件语句中的表达式所以执行if语句大括号里面的内容continue语句此时直接跳出本次循环不再执行continue语句后面的打印语句所以3便没有打印出来。之后执行i此时i4。4第四轮当i4时判断i是否小于等于44是等于4 的执行循环体while大括号里面的内容由于3等于3即满足if条件语句中的表达式所以执行if语句大括号里面的内容continue语句即不满足if条件语句中的表达式所以不会执行if语句大括号里面的内容直接执行打印i4之后执行i此时i5。5就不满足循环要求了所以直接结束循环了。这里有一个可以给大家拿去思考的程序本人感觉挺有意思的放上来让大家看看intmain(){inti1;while(i10){if(i5){continue;}printf(%d ,i);i;}}大家可以想象看这个程序的输出是什么呢以上是循环的内容但不是所有因为循环还有goto语句本人对该循环不是特别清楚待本人学习清楚了再给大家描述。同样的写的不好请各位担待本人一定虚心接受指正争取更上一层六。

相关文章:

C语言循环

C语言的循环while、for、do…while… 1、while循环 while(表达式) { 语句; } 先判断表达式,为真时执行while里面的语句,执行大括号中的语句之后,再次回到while处的表达式判断其是否为真,如果为真则继续向下执行&#x…...

XHS-Downloader:小红书内容管理解决方案,3种方式高效采集无水印素材

XHS-Downloader:小红书内容管理解决方案,3种方式高效采集无水印素材 【免费下载链接】XHS-Downloader 小红书(XiaoHongShu、RedNote)链接提取/作品采集工具:提取账号发布、收藏、点赞、专辑作品链接;提取搜…...

任务悬赏系统开发地推拉新小程序分销接单赏金提现app源码搭建广告联盟对接信息发布平台

盈利模式用户发布任务缴纳服务费;用户加入会员;用户提现缴纳手续费;可外接任务由平台管理员在后台发布,雇主给钱平台,用户为了获得佣金完成了任务,通过这样的形式赚取中间差价;成为流量主&#…...

国民技术 N32G003F5Q7 QFN-20-EP 单片机

特性内核CPU:32位ARM Cortex-M0内核,单周期硬件乘法指令,最高主频48MHz存储器:高达29.5KByte片内Flash,10万次擦写次数,10年数据保持;3KByte片内SRAM功耗模式:Run模式:所…...

3步实现跨平台词库自由:imewlconverter输入法词库转换终极指南

3步实现跨平台词库自由:imewlconverter输入法词库转换终极指南 【免费下载链接】imewlconverter ”深蓝词库转换“ 一款开源免费的输入法词库转换程序 项目地址: https://gitcode.com/gh_mirrors/im/imewlconverter 你是否曾在Windows上精心调教的搜狗拼音词…...

7步快速掌握ComfyUI视频合成:从新手到高手的完整指南

7步快速掌握ComfyUI视频合成:从新手到高手的完整指南 【免费下载链接】ComfyUI-VideoHelperSuite Nodes related to video workflows 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-VideoHelperSuite 你是否曾经面对一堆AI生成的静态图像&#xff0c…...

如何用G-Helper修复华硕ROG笔记本屏幕色彩异常问题

如何用G-Helper修复华硕ROG笔记本屏幕色彩异常问题 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar, and other …...

Windows Cleaner:高效解决C盘爆红的最佳实践指南

Windows Cleaner:高效解决C盘爆红的最佳实践指南 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 还在为C盘空间不足而烦恼吗?每次看到红色…...

AIGlasses OS Pro 智能视觉系统Mathtype公式识别:辅助数学文档数字化

AIGlasses OS Pro 智能视觉系统Mathtype公式识别:辅助数学文档数字化 每次整理数学试卷或者科研论文的电子版,最头疼的是什么?对我来说,就是那些用Mathtype、Word公式编辑器生成的公式图片。想把它们变成可编辑的LaTeX代码&#…...

4.2阿里云 OSS访问日志可以记录每一次的访问记录

研究了一下,可以不建立数据库、不用服务器、不用写后端代码,完全靠 阿里云 OSS 本身自带的访问日志功能 就能记录每一次访问,包括:谁在什么时候打开页面、下载了录音、IP 地址、UA 信息、请求路径等全部都有。可以不用改之前的验证…...

百万级长连接音频网关:Java WebFlux 在分布式系统中的工程化实践

百万级长连接音频网关:Java WebFlux 在分布式系统中的工程化实践 这不是一篇“WebFlux WebSocket 快速入门”,而是一篇面向生产系统的长连接网关设计说明。我们要回答的核心问题是:当业务进入语音房、实时通话、在线陪练、语音助手这类高并发低延迟场景时,如何用 Java 在分…...

GEO Monitor Toolkit:让你知道 AI 模型在背后怎么评价你

本文基于真实仓库内容写成。 所有功能、命令、指标、案例均来自 geo-monitor-toolkit 与 geo-monitor-os-skill 的实际文档,不是臆造。 一、一个大多数团队从未问过自己的问题 你的产品在 ChatGPT 里是什么形象? 不是"有没有被提到"这种粗糙…...

RWKV7-1.5B-G1A Java开发实战:集成SpringBoot构建智能微服务

RWKV7-1.5B-G1A Java开发实战:集成SpringBoot构建智能微服务 1. 为什么Java开发者需要关注RWKV7 最近在AI圈子里,RWKV7-1.5B-G1A这个模型引起了不小的轰动。作为一个Java开发者,你可能会问:这和我的日常工作有什么关系&#xff…...

【Java】继承:从入门到JVM底层,一篇搞定

【Java】继承——语言根基(三)继承:从入门到JVM底层,一篇搞定一、继承到底在表达什么?1.1 is-a关系1.2 什么时候别用继承?二、语法速览三、底层原理:new一个子类对象,内存里发生了什…...

lora-scripts企业级应用:客服话术、营销文案定制训练实战解析

LoRA-Scripts企业级应用:客服话术、营销文案定制训练实战解析 1. 为什么企业需要定制化文本生成 在当今商业环境中,个性化沟通已成为品牌差异化的关键。传统客服话术和营销文案往往面临三大痛点: 模板化严重:千篇一律的回复难以…...

AI MV制作平台选型指南

本指南针对Suno生成歌曲后的MV制作需求,按 workflow 效率分类选型,核心解决多工具拼接返工多的痛点。1. AI MV制作平台核心分类 Suno出歌后,主流生产路径对应3类平台,差异核心在流程效率而非生成能力:平台类型核心特征…...

C语言中将数字转换为字符串的方法

好的,我现在需要回答用户关于如何在C语言中将数学转换为字符串的问题。首先,我得理解用户的需求。可能他们是指将数值类型的数据转换成字符串形式,比如整数或浮点数转换为字符数组,或者是更复杂的数学表达式转换为字符串表示。根据…...

LLM工程化实践——RAG基础入门(一)

大模型 RAG 系统基础入门1. RAG 是什么?RAG Retrieval-Augmented Generation检索增强生成:先从外部知识库检索相关信息,再送给大模型生成答案。解决 LLM 三大问题:知识过时、幻觉、隐私数据不可访问。2. 核心基础概念LLM&#xf…...

Windows Cleaner终极方案:一键解决C盘爆红难题的智能清理工具

Windows Cleaner终极方案:一键解决C盘爆红难题的智能清理工具 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否曾因C盘突然变红而焦虑&#xff1…...

26-4-17 数据结构作业:用栈解决迷宫问题

1.问题描述 已知一个 66 的迷宫,可将其视作在一个坐标系中,令起点 (1,1),终点 (4,4),墙:1、路:0,要求用队列实现最短路径搜索。 2.算法思路 题目要求使用队列(先进先出&#xff09…...

基于深度学习的马铃薯病虫害识别和防治系统,resnet50,vgg16,resnet34【pytorch框架,python代码,模型融合】

更多图像分类、图像识别、目标检测、图像分割,图像检索等项目可从主页查看 功能演示(要看shi pin下面的简介): 土豆病虫害识别和防治系统resnet50,vgg16,resnet34卷积神经网络【pytorch框架,python代码,模…...

深度解析虚幻引擎Pak文件:5个实战技巧掌握UnrealPakViewer高效使用

深度解析虚幻引擎Pak文件:5个实战技巧掌握UnrealPakViewer高效使用 【免费下载链接】UnrealPakViewer 查看 UE4 Pak 文件的图形化工具,支持 UE4 pak/ucas 文件 项目地址: https://gitcode.com/gh_mirrors/un/UnrealPakViewer UnrealPakViewer是一…...

Mermaid Live Editor:免费在线图表编辑器的完整高效解决方案

Mermaid Live Editor:免费在线图表编辑器的完整高效解决方案 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-live-…...

SAM3效果实测:看看自然语言描述如何实现精准物体提取

SAM3效果实测:看看自然语言描述如何实现精准物体提取 1. 引言:从“画框”到“说话”的进化 过去,如果你想从一张照片里单独抠出某个物体,比如一只猫或者一辆车,通常需要借助专业的图像处理软件,用鼠标小心…...

OBS多平台直播终极指南:Multi RTMP插件完整教程

OBS多平台直播终极指南:Multi RTMP插件完整教程 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 想要实现真正的多平台同时直播,让您的直播内容一次性覆盖多个平台…...

基于「YOLO目标检测 + 多模态AI分析」的增材制造粉末床熔合缺陷智能检测分析预警系统

一、项目演示视频 b站演示视频与部署教程视频(点击这里) https://www.bilibili.com/video/BV1Ckd8BaEou/?share_sourcecopy_web&vd_source31c839f46a9a845dd6dd641cbd5c2ac1 二、技术栈 前端技术栈 (web-vue) 核心框架: Vue 3.5.13 (Composition API) UI组件库: Elemen…...

手把手教你用cv_unet_image-matting:零基础3秒完成人像抠图

手把手教你用cv_unet_image-matting:零基础3秒完成人像抠图 1. 工具介绍与核心价值 你是否遇到过这样的烦恼:需要快速抠出人像照片,但Photoshop操作太复杂?或者批量处理证件照时,手动抠图效率太低?今天我…...

Bitbucket代码仓库全流程指南:从创建到分支管理与忽略文件配置

1. Bitbucket项目创建与权限配置 第一次接触Bitbucket团队协作时,项目创建往往需要管理员权限。这里有个小技巧:如果你所在团队使用企业邮箱域(比如company.com),通常可以直接用公司邮箱申请项目创建权限。我遇到过不少…...

NVIDIA Profile Inspector 2.4.0.1:解锁NVIDIA显卡隐藏性能的终极指南

NVIDIA Profile Inspector 2.4.0.1:解锁NVIDIA显卡隐藏性能的终极指南 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 你是否曾经觉得NVIDIA显卡的控制面板功能太有限?是否想要更…...

百度网盘直链解析工具:突破限速的高效开源解决方案

百度网盘直链解析工具:突破限速的高效开源解决方案 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 在百度网盘对非会员用户实施严格下载限速的背景下,一…...