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

【C语言】04.循环结构

C语言中提供了3种循环结构:while循环 、do-while循环、 for循环。

一、while循环

while(表达式)语句;//如果循环体想包含更多的语句,可以加上⼤括号 

while循环的执行流程:
在这里插入图片描述

例题:
输⼊⼀个正的整数,逆序打印这个整数的每⼀位
例如:
输⼊:1234,输出:4 3 2 1
输⼊:521,输出:1 2 5

#include <stdio.h>
int main()
{int n = 0;scanf("%d", &n);while(n){printf("%d ", n%10);n /= 10;}return 0;
}

二、for 循环

2.1 for 循环

for(表达式1; 表达式2; 表达式3)语句

表达式1:⽤于循环变量的初始化
表达式2:⽤于循环结束条件的判断
表达式3:⽤于循环变量的调整

for循环执行过程:
在这里插入图片描述

2.2 for 循环与 while 循环对比:

在这里插入图片描述
for 和 while 在实现循环的过程中都有初始化、判断、调整这三个部分,但是 for 循环的三个部分非常集中,便于代码的维护,而如果代码较多的时候 while 循环的三个部分就比较分散,所以从形式上 for 循环要更优⼀些。

三、do-while 循环

do语句;
while(表达式)

whilefor 这两种循环都是先判断,条件如果满足就进⼊循环,执行循环语句,如果不满足就跳出循环;而 do-while 循环则是先直接进入循环体,执行循环语句,然后再执行 while 后的判断表达式,表达式为真,就会进行下⼀次,表达式为假,则不再继续循环。
在这里插入图片描述

四、break 和 continue 语句

在循环执行的过程中,如果某些状况发生的时候,需要提前中止循环,这是非常常见的现象。C语言中提供了 breakcontinue 两个关键字,就是应该到循环中的。
break 的作用是用于永久的终止循环,只要 break 被执行,直接就会跳出循环,继续往后执行。
continue 的作用是跳过本次循环 continue 后边的代码,在 for 循环和 while 循环中有所差异的。

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

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

五、goto 语句

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

#include <stdio.h>
int main()
{printf("hehe\n");goto next:printf("haha\n");next:printf("跳过了haha的打印\n"); return 0;
}

goto 语句如果使用的不当,就会导致在函数内部随意乱跳转,打乱程序的执行流程,所以我们的建议是能不用尽量不去使用;但是 goto 语句也不是一无是处,在多层循环的代码中,如果想快速跳出使用 goto 就非常的方便了。

相关文章:

  • Flink 基于 TDMQ Apache Pulsar 的离线场景使用实践
  • 如何开发一 VSCode 插件
  • 【动手学深度学习】使用块的网络(VGG)的研究详情
  • 【vector模拟实现】附加代码讲解
  • 小程序如何刷新当前页面
  • 自动化测试-Selenium-元素定位
  • Avalonia TreeView 示例代码
  • 双网卡配置IP和路由总结
  • 【计算视觉】学习计算机视觉你不得不膜拜的CVPR大神:何凯明
  • gulimall-search P125 springboot整合elasticsearch版本冲突
  • Windows系统问题
  • Java项目如何外发告警日志到企业微信
  • java进阶——JVM 与 Java 体系结构详解
  • 大语言模型的sft
  • 图片和PDF展示预览、并支持下载
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • [deviceone开发]-do_Webview的基本示例
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【笔记】你不知道的JS读书笔记——Promise
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • CentOS从零开始部署Nodejs项目
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • java中具有继承关系的类及其对象初始化顺序
  • rc-form之最单纯情况
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • 电商搜索引擎的架构设计和性能优化
  • 复杂数据处理
  • 关于extract.autodesk.io的一些说明
  • 普通函数和构造函数的区别
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (LLM) 很笨
  • (WSI分类)WSI分类文献小综述 2024
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (一)、python程序--模拟电脑鼠走迷宫
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • 、写入Shellcode到注册表上线
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .Family_物联网
  • .NET 4.0中的泛型协变和反变
  • .NET Project Open Day(2011.11.13)
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • /proc/vmstat 详解
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?
  • [ vulhub漏洞复现篇 ] ECShop 2.x / 3.x SQL注入/远程执行代码漏洞 xianzhi-2017-02-82239600
  • [Android Pro] android 混淆文件project.properties和proguard-project.txt
  • [C#]使用DlibDotNet人脸检测人脸68特征点识别人脸5特征点识别人脸对齐人脸比对FaceMesh
  • [C#学习笔记]Newtonsoft.Json
  • [corCTF 2022] CoRJail: From Null Byte Overflow To Docker Escape
  • [EFI]Atermiter X99 Turbo D4 E5-2630v3电脑 Hackintosh 黑苹果efi引导文件
  • [hive] sql中distinct的用法和注意事项