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

C语言、循环结构

C语⾔是结构化的程序设计语⾔,结构指的是顺序结构、选择结构、循环结构,今天我们要学的是循环结构。其实想一下我们日常生活中的习惯,每天都要去做的一个事情,是否相当于一个循环呢?

C语言中循环分类: for循环while循环和do-while 循环

一、for循环

for循环是我们在写代码过程中使用最多的一个循环。

for循环的语法形式如下:

#include<stdio.h> int main() { for(表达式1;表达式2;表达式3) { //里面是执行语句 } return 0; }

如果循环体想包含更多的语句,可以加上花括号。

表达式1:用于循环变量的初始化。

表达式2:用于循环结束条件的判断。

表达式3:用于循环变量的调整。

for循环的执行流程:

首先执行的是表达式1初始化循环变量,接下来执行的是表达式2,判断这个变量是否满足条件,表达式为真执行循环,表达式为假,结束循环。

表达式为真的时候,进入循环,循环里面的语句执行完之后,再去执行表达式3,调整循环变量,然后再去用表达式2进行判断,为真则执行,为假循环结束。

整个循环过程中表达式1初始化部分只被执行一次,剩下的就是在表达式2、循环、表达式3里面循环。

for循环的实践:

当我们想在屏幕上面打印1~9的数字的时候,就能用到循环。

​ ​ ​ #include<stido.h> int main() { int i =1;//变量初始化 for(i=1;i<10;i++)//表达式1、表达式2、表达式3之间用分号隔开。 { printf("%d ",i); } return 0; } ​ ​ ​

下面为打印出来的效果。

二、while循环

while循环的语法形式如下:

​ #include<stdio.h> int main() { while(表达式) { 语句;//当你想要循环体包括更多的语句可以像这样加上花括号 } return 0; } ​

while循环执行流程:

首先执行的是while()括号里面的判断表达式,表达式为真进入循环,表达式为假则不进入循推。环,循环结束;循环体里面的语句执行完之后再次进入while循环()里面进行判断,为真则进入表达式,为假不进入;以此类推,直到判断为假结束循环。

同理我们用while循环在屏幕上面打印我们的1~9数字。

#include<stdio.h> int main() { int i = 1;//初始化 while(i<=10)//判断 { printf("%d ",i); i++;//让i自增加1; } rerurn 0; }

三、 do-while 循环

do-while循环的语法形式:

#include<stdio.h> int main() { do { 语句;//同理当你想要控制多天语句的时候可以像这样加上花括号 }while(判断); return 0; }

do-while循环的执行流程:

在do-while循环中先执行的是do花括号{ }里面的语句,然后再去while括号()里面判断是否满足条件,为真则进入循环,为假则退出循环,循环结束。

在do-while循环里面语中循环体是至少执行一次的,这是do-while与for、while循环的特殊点。

do-while循环的实例:

同理打印1~9的数字在屏幕上。

#include<stdio.h> int main() { int i =1; do { printf("%d ",i); i++; }while(i<=10); return 0; }

⼀般情况下do while 使⽤在循环体⾄少被执⾏⼀次的场景下,所以较少⼀些。

谈完我们的循环,那么我们就要说说break与continue,这两个关键字。

break与continue语句:

在循环过程中,有些情况需要提前终止,这个过程在我们写代码中是很常见的现象。C语言里面提供了这两个关键字,是应用在循环中的。

break:作用是在这个循环过程中永久性的终止循环,只要break被执行,就会跳出循环(终止循环),然后继续向下执行。

continue:作用是跳过continue后面所以的代码。在for循环与while循环里面有所差异。

while循环中的break和continue

break:

​ ​ #include<stdio.h> int main() { int i =1; while(i<10) { if(i==6) { break;//当i=6的时候就终止停止了。 } printf("%d ",i); i++; } return 0; } ​ ​

当想让循环在什么条件下终止循环的时候,我们就能用我们的break语句。

continue:

#include<stdio.h> int main() { int i =1; while(i<10) { if(i==6) { continue;//当i等于6的时候就会执行continue语句;continue后面的语句就会被跳过 } printf("%d ",i); i++; } return 0; } ​ ​ ​

当i==6的时候执行continue, 会造成无线循环(死循环),因为continue将循环里后面的语句全部跳过了,无法使变量i不断增加,不断进行判断,造成死循环。

for循环中的break和continue:

break

#include<stdio.h> int main() { int i =1; for(i=1;i<10;i++) { if(i==6) { break; } printf("%d ",i); } return 0; } ​ ​ ​ ​ ​

其实可以看见,break在for循环内和while循环内是相同的。

continue:

#include<stido.h> int main() { int i =1; for(i=1;i<10;i++) { if(i==6) { break; } printf("%d ",i); } return 0; } ​

这⾥ continue 跳过了后边的打印,来到了 i++ 的调整部分,而不是结束循环。continue跳过的是循环体内的代码。

do-while中的break和continue:

break:

#include<stdio.h> int main() { int i =1; do { if(i==6) { break; } printf("%d ",i); i++; }while(i<=10); return 0; } ​

do-while中的continue:

#include<stdio.h> int main() { int i =1; do { if(i==6) { continue; } printf("%d ",i); i++; }while(i<=10); return 0; } ​ ​

可以看见do-while循环中这个代码加上continue变成死循环了,原因是:continue讲循环体内的代码跳过了,i++不会执行,而i会一直小于等于6,不断进行判断,造成死循环。

这三种循环能够相互嵌套。这就是循环嵌套。

简单的循环嵌套:

找出100~200之间的素数,并打印在屏幕上。

注:素数⼜称质数,只能被1和本⾝整除的数字。

#include <stdio.h> int main() { int i = 0; //循环产⽣1~100的数字 for(i=1;i<=100;i++) { //判断i是否为素数 //循环产⽣2~i-1之间的数字 int j =0; int flat =1; for(j =2;j<i;j++) { if(i % j == 0) { flag = 0; break; } } if(flag == 1) { printf("%d ", i); } } return 0; }

这就是简单的循环嵌套。

最后还有一种是go to 语句

go to 语句

C语⾔提供了⼀种⾮常特别的语法,就是从go to语句和跳转标号,go to语句可以实现在同一个函数内内跳转到设置好的标号处。

#include<stdio.h> int main() { for(......) { for(......) { for(......) { go to error; } } } return 0; } error; ......

本来for循环用break只能跳出一重循环,但是用go to 能跳出多重循环,能跳到你想要跳到的位置。所以这种情况下用go to语句比较快捷。

好了,讲到这里我们的循环就已经全部讲完了。

谢谢大家的观看!!!

---正在不断进步的菜鸟

http://www.jsqmd.com/news/496988/

相关文章:

  • JavaWeb(后端)
  • 海外社媒营销服务商合集,Facebook、LinkedIn、TikTok代运营,适配多品类B2B外贸需求 - 品牌2026
  • 2026年河南单反相机回收公司推荐:数码相机/CCD/镜头/无人机/鼠标回收服务商 - 品牌推荐官
  • Z-Image-Turbo_Sugar脸部Lora效果展示:同一人物多角度(正脸/侧脸/45°)生成一致性
  • Janus-Pro-7B训练数据揭秘:9000万条多模态样本如何提升稳定性与泛化性
  • Audio Pixel Studio人声分离原理浅析:基于频谱分析的轻量化UVR实现路径
  • C++成员模板类
  • 2026年 换位绕组线厂家推荐排行榜:高效节能、精准导电的工业级线材优选 - 品牌企业推荐师(官方)
  • Gemma-3-270m从零开始教程:Ollama安装→模型拉取→交互提问→结果保存
  • Java 解析 CDR 文件并计算图形面积的完整方案(支持 MultipartFile / 网络文件)@杨宁山
  • Qwen-Image-2512-SDNQ Web服务部署教程:OpenEuler 22.03 LTS系统适配记录
  • Alpamayo-R1-10B快速部署:scripts/start_webui.sh脚本执行逻辑深度解析
  • Qwen-Image-2512-SDNQ Web服务API详解:curl调用/generate接口参数实战
  • FLUX.小红书极致真实V2企业案例:连锁茶饮品牌月产2000+新品宣传图
  • 查重过了但AIGC爆红?手把手教你降ai:从59%降到6.3%,附免费降ai率工具测评 - 殷念写论文
  • 幻境·流金代码实例:Python调用本地镜像批量生成指定规格图像脚本
  • RexUniNLU惊艳案例:中文财经新闻公司-事件-影响三元组实时抽取
  • Phi-3 Forest Lab参数详解:Temperature=0.1时Phi-3在算法题解中的确定性表现
  • 2026年上海海外推广获客服务商优选,外贸B2B营销+社媒代运营,助力企业出海破局 - 品牌2026
  • .Net基于AgentFramework中智能体Agent Skill集成Shell命令实现小龙虾mini版
  • Qwen3-ASR-0.6B语音识别效果展示:高语速新闻播报实时转写能力
  • 面向复杂工业环境:2026年高可靠边缘计算盒子公司推荐 - 品牌2026
  • 3D Face HRN高性能部署:FP16量化后显存降低42%,精度损失<0.8%实测
  • 通义千问3-VL-Reranker-8B部署指南:防火墙配置与远程访问安全设置
  • 乙巳马年春联生成终端作品分享:企业定制红金配色春联设计集
  • Qwen3-TTS-Tokenizer-12Hz一文详解:从WAV/MP3到离散tokens全流程
  • DeepSeek-R1-Distill-Qwen-1.5B从零开始:本地/root/ds_1.5b路径模型加载全流程
  • [特殊字符] Meixiong Niannian画图引擎参数调优指南:步数/CFG/种子三者协同关系图解
  • Stable-Diffusion-v1-5-archiveGPU算力成本分析:A10单小时生成量与单位图片成本测算
  • 【Triton 教程】triton_language.div_rn