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

【C语言】基础语法3:控制流程结构

上一篇:运算符和表达式
下一篇:函数和递归


❤️‍🔥前情提要❤️‍🔥
  欢迎来到C语言基本语法教程
  在本专栏结束后会将所有内容整理成思维导图(结束换链接)并免费提供给大家学习,希望大家纠错指正。本专栏将以基础出发,在之后的教程中将会不断学习并详细讲解C语言的基本语法及其高级用法
  上一节讲了C语言基础中的运算符和表达式,接下来让我们来一起学习C语言中的控制流程结构。学习完成后可以点击C语言控制流程结构中20个注意事项及代码示例进行学习。

请添加图片描述

  🍪本教程内容干货满满,跟上步伐吧~🍪


作者介绍

🎓 作者:某不知名编程爱好者📜
🗒️系列文章&专栏推荐: 🔗《华为机试题解析》 、🔗《C语言程序设计》、🔗 《MySQL数据库》
🕸️为大家推荐一款很好用的C语言刷题网站🔗点击跳转


🔖导航小助手🔖

    • 📑 1. 顺序结构
    • 📑 2. 分支结构
      • 🏷️ 2.1 if语句
      • 🏷️ 2.2 if-else语句
      • 🏷️ 2.3 switch语句
    • 📑 3. 循环结构
      • 🏷️ 3.1 while语句
      • 🏷️ 3.2 do-while语句
      • 🏷️ 3.3 for语句
    • 📑 4. 跳转结构
      • 🏷️ 4.1 break语句
      • 🏷️ 4.2 continue语句
      • 🏷️ 4.3 goto语句
    • ⚠️ 5. 注意事项


📑 1. 顺序结构

顺序结构是指程序按照代码的书写顺序依次执行,没有任何分支或循环。顺序结构是C语言中最基本的控制流程结构,下面是一个简单的顺序结构示例:

#include <stdio.h>int main() {printf("Hello, World!\n");printf("这是一个简单的程序\n");return 0;
}

上述示例程序中,两个printf语句依次执行,输出了两个字符串。


📑 2. 分支结构

💡 概念

分支结构是指程序根据不同的条件选择不同的执行路径。C语言中常用的分支结构包括if语句if-else语句switch语句


🏷️ 2.1 if语句

if语句用于判断一个条件是否成立,如果成立则执行一段代码,否则不执行。下面是一个简单的if语句示例:

#include <stdio.h>int main() {int a = 10;if (a > 0) {printf("a是一个正数\n");}return 0;
}

上述示例程序中,if语句判断变量a是否大于0,如果成立则输出一条字符串。


🏷️ 2.2 if-else语句

💡 概念

if-else语句用于判断一个条件是否成立,如果成立则执行一段代码,否则执行另一段代码。下面是一个简单的if-else语句示例:

#include <stdio.h>int main() {int a = 10;if (a > 0) {printf("a是一个正数\n");} else {printf("a不是一个正数\n");}return 0;
}

上述示例程序中,if-else语句判断变量a是否大于0,如果成立则输出一条字符串,否则输出另一条字符串。


🏷️ 2.3 switch语句

switch语句用于根据不同的条件选择不同的执行路径。它可以替代多个if-else语句。下面是一个简单的switch语句示例:

#include <stdio.h>int main() {int a = 2;switch (a) {case 1:printf("a是1\n");break;case 2:printf("a是2\n");break;default:printf("a不是1或2\n");break;}return 0;
}

上述示例程序中,switch语句根据变量a的值选择执行不同的代码段。


📑 3. 循环结构

💡 概念

循环结构是指程序可以重复执行某一段代码,直到满足某个条件停止。C语言中常用的循环结构包括while语句do-while语句for语句


🏷️ 3.1 while语句

while语句用于重复执行一段代码,直到满足某个条件才停止。下面是一个简单的while语句示例:

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

上述示例程序中,while语句重复执行printf语句,直到变量a的值大于等于10。


🏷️ 3.2 do-while语句

do-while语句与while语句类似,但是它先执行一次代码,然后再判断条件是否成立。下面是一个简单的do-while语句示例:

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

上述示例程序中,do-while语句先输出一次printf语句,然后重复执行,直到变量a的值大于等于10。


🏷️ 3.3 for语句

for语句用于重复执行一段代码,可以在循环过程中控制循环变量的值。下面是一个简单的for语句示例:

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

上述示例程序中,for语句重复执行printf语句,循环变量i的初始值为0,每次循环加1,直到i的值大于等于10。


📑 4. 跳转结构

💡 概念

跳转结构是指程序可以跳过某一段代码,直接执行其他代码。C语言中常用的跳转结构包括break语句continue语句goto语句return语句


🏷️ 4.1 break语句

break语句用于跳出循环,执行循环外的代码。下面是一个简单的break语句示例:

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

上述示例程序中,for循环执行5次后,遇到i等于5的情况,执行break语句跳出循环。


🏷️ 4.2 continue语句

continue语句用于跳过本次循环,继续下一次循环。例如:

for (int i = 0; i < 5; i++) {if (i == 3) {continue;}printf("%d\n", i);
}

上述代码中,当i等于3时,continue语句会跳过本次循环,继续下一次循环。


🏷️ 4.3 goto语句

goto语句用于无条件跳转到指定标签处执行。例如:

goto label;
printf("Hello, world!\n");
label:
printf("Goodbye, world!\n");

上述代码中,goto语句会跳转到label标签处执行,输出"Goodbye, world!"。


⚠️ 5. 注意事项

控制流程结构是程序设计中最基本的概念之一,包括顺序结构、分支结构、循环结构和跳转结构。在编写程序时,需要注意以下几点:

  • 顺序结构:

    • 尽可能让代码简洁明了,避免冗余代码的出现。
    • 可以使用函数来封装一段代码,提高代码的可重用性
    • 应该注意代码的执行效率,尽可能减少不必要的计算和操作
  • 分支结构:

    • 应该考虑不同情况下的处理方式,确保程序的鲁棒性
    • if语句中,应该使用逻辑运算符来组合多个条件,避免使用过多的if语句
    • switch语句中,应该在default语句添加错误处理代码,确保程序的健壮性
  • 循环结构:

    • 应该注意循环体内的代码是否会产生副作用,避免出现不可预期的结果。
    • while循环中,应该避免使用无限循环,可以添加计数器或者时间限制来控制循环次数。
    • for循环中,应该注意循环体内的代码是否会改变循环变量的值,避免出现死循环
  • 跳转结构:

    • 应该慎重考虑,确保程序的结构和逻辑清晰明了。
    • 使用break语句时,应该避免在循环嵌套中使用,可以使用标志变量来控制循环的跳出。
    • 使用goto语句时,应该遵循良好的编程习惯,避免使用goto语句来跨越函数文件边界

上一篇:运算符和表达式
下一篇:函数和递归


## 🎀小结

⚡恭喜你的内功又双叒叕得到了提高!!!🔋

🔚以上就是C语言控制流程结构的全部知识了~

🤗感谢大家的阅读~

📬后续还会继续更新💓,欢迎持续关注哟~📌

💫如果有错误❌,欢迎指正呀💫

✨如果觉得收获满满,可以点点赞👍支持一下哟~✨


在这里插入图片描述


相关文章:

【C语言】基础语法3:控制流程结构

上一篇&#xff1a;运算符和表达式 下一篇&#xff1a;函数和递归 ❤️‍&#x1f525;前情提要❤️‍&#x1f525;   欢迎来到C语言基本语法教程   在本专栏结束后会将所有内容整理成思维导图&#xff08;结束换链接&#xff09;并免费提供给大家学习&#xff0c;希望大家…...

MySQL安全性:防止攻击和保护数据

MySQL安全性&#xff1a;防止攻击和保护数据 MySQL是当今最流行的关系型数据库之一&#xff0c;然而&#xff0c;随着Internet的普及&#xff0c;数据库安全问题也越来越受到关注。在这篇文章中&#xff0c;我们将重点介绍MySQL的安全性问题&#xff0c;以及如何防止攻击和保护…...

R语言结构方程模型(SEM)

详情点击链接&#xff1a;R语言结构方程模型&#xff08;SEM&#xff09;生态学领域应用 一&#xff0c;R语言SEM分析入门&#xff1a;lavaan VS piecewiseSEM 结构方程模型在生态学研究中的应用及模型结构方模型估计方法&#xff1a;局域估计和全局估计的基本工作原理、主要…...

软件or硬件?硬件的前途到底在哪里?

一、硬件明明比软件更难&#xff0c;国内的硬件技术也不如软件&#xff0c;为什么硬件工程师待遇还不如软件&#xff1f; 1、不需要太高层次的硬件设计&#xff0c;比如大部分小家电企业&#xff0c;简单的电子产品企业&#xff0c;单片机简单外围设计就够了&#xff0c;单片机…...

同学在外包干了两年的点点点,24岁人就快废了

前言 简单的说下&#xff0c;我大学的一个同学&#xff0c;毕业后我自己去了自研的公司&#xff0c;他去了外包&#xff0c;快两年了我薪资、技术各个方面都有了很大的提升&#xff0c;他在外包干的这两年人都要废了&#xff0c;技术没一点提升&#xff0c;学不到任何东西&…...

基于Java springboot 疫情在线网课管理系统

博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 文章目录 一、前言介绍1.1 背景及意义1.2 系统运行环境…...

Unity Camera -- (3)控制相机能看到的东西

使用剪裁平面&#xff08;Clipping Planes&#xff09;定义相机可视范围 Clipping Planes定义了相机所能看到的场景范围。在有些时候&#xff0c;限制相机所能看到的范围是出于风格上的考量&#xff0c;但编辑Clipping Planes的主要目的是为了优化性能。相机所需要渲染的东西越…...

《基于深度迁移学习的可穿戴睡眠阶段分类》阅读笔记

一、摘要 佩戴可穿戴设备进行睡眠监测是一种无创、便捷的方法&#xff0c;可以提高睡眠障碍筛查和健康监测的效率。然而&#xff0c;由于缺乏大规模、标准化的PPG数据集&#xff0c;使用PPG进行睡眠阶段分类仍然具有挑战性。本文提出了一种基于深度迁移学习的方法来解决这个问…...

java版工程管理系统源码企业工程项目管理系统简介

一、立项管理 1、招标立项申请 功能点&#xff1a;招标类项目立项申请入口&#xff0c;用户可以保存为草稿&#xff0c;提交。 2、非招标立项申请 功能点&#xff1a;非招标立项申请入口、用户可以保存为草稿、提交。 3、采购立项列表 功能点&#xff1a;对草稿进行编辑&#x…...

机器学习算法 决策树

文章目录 一、决策树的原理二、决策树的构建2.1 ID3算法构建决策树2.2 C4.5 算法树的构建2.3 CART 树的创建 三、决策树的优缺点 一、决策树的原理 决策树&#xff08;Decision Tree&#xff09;是一种非参数的有监督学习方法&#xff0c;它能够从一系列有特征和标签的数据中总…...

论文笔记:An Interactive-Voting Based Map Matching Algorithm

2010 MDM 1 ST-matching的问题 论文笔记&#xff1a;Map-Matching for low-sampling-rate GPS trajectories&#xff08;ST-matching&#xff09;_UQI-LIUWJ的博客-CSDN博客 当轨迹很长&#xff0c;且车辆通过多线平行的道路时&#xff0c;ST-Matching的效果较差&#xff0c…...

_awt_container容器_演示

Component作为基类&#xff0c;提供了如下常用的方法来设置组件的大小、位置、可见性等。 方法签名方法功能setLocation(int x,int y)设置组件的位置setSize(int width,int heigth)设置组件的大小setBounds(int x,int y,int width,int heigth)设置组件的位置&#xff0c;大小。…...

TryHackMe-Misguided Ghosts(boot2root)

Misguided Ghosts 端口扫描 循例nmap FTP枚举 直接登anonymous&#xff0c;有几个文件&#xff0c;下下来 info.txt 我已经包含了您要求的所有网络信息&#xff0c;以及一些我最喜欢的笑话。- 帕拉摩尔该信息可能指的是pcapng文件 jokes.txt Taylor: Knock, knock. Josh: …...

【Leetcode】10. 正则表达式匹配

10. 正则表达式匹配&#xff08;困难&#xff09; 题解 如果从左向右进行匹配的话&#xff0c;需要考虑字符后是否有 * 。 因此选择从右向左扫描更为简单。 *前面肯定有一个字符&#xff0c;它像是一个拷贝器&#xff0c;能够复制前面的单个字符&#xff0c;甚至也可以把这个…...

不得不说的结构型模式-装饰器模式

目录 装饰器模式是什么 下面是装饰器模式的一个通用的类图&#xff1a; 以下是使用C实现装饰器模式的示例代码&#xff1a; 下面是面试中关于桥接器模式的常见的问题&#xff1a; 下面是问题的答案&#xff1a; 装饰器模式是什么 装饰器模式是一种结构型设计模式&#xff…...

Flutter+YesAPI 快速构建零运维的APP

前言 移动互联网经过多年的发展&#xff0c;已经进入一个成熟的阶段&#xff0c;几乎每个公司都有自己的移动应用程序或移动网站。随着5G技术的不断发展&#xff0c;也带来了更高效的数据传输速度和更稳定的网络连接&#xff0c;这使得更多的应用程序和服务能够在互联网上运行&…...

使用Socks5代理保障HTTP传输的网络安全

一、引言 在互联网时代&#xff0c;网络安全越来越受到人们的关注&#xff0c;特别是在数据传输过程中&#xff0c;很容易出现信息泄露、窃听等安全问题。为了保障网络传输的安全性&#xff0c;我们可以使用代理服务器来进行传输&#xff0c;而Socks5代理是其中一种常用的代理…...

C语言入门篇——操作符篇

目录 1、操作符分类 2、操作符的属性 3、算术操作符 4、移位操作符 5、位操作符 6、赋值操作符 7、单目操作符 8、关系操作符 9、逻辑操作符 10、条件操作符 11、逗号操作符 12、下标引用、函数调用和结构成员 1、操作符分类 算术操作符&#xff08;&#xff0c;-&…...

YOLOv7训练自己的数据集(txt文件,笔记)

目录 1.代码下载 2.数据集准备&#xff08;.xml转.txt) &#xff08;1&#xff09;修改图像文件名 &#xff08;2&#xff09;图片和标签文件数量不对应&#xff0c;解决办法 &#xff08;3&#xff09;.xml转.txt &#xff08;4&#xff09;.txt文件随机划分出对应的训练…...

防止机械/移动硬盘休眠 - NoSleepHD

防止机械/移动硬盘休眠 - NoSleepHD 前言解决方案计算机硬盘移动硬盘 前言 机械硬盘休眠后唤醒需要一定时间&#xff0c;且频繁的启动和停止并不有利于硬盘的寿命&#xff0c;因此可根据自身需求防止机械硬盘休眠&#xff0c;下文以Win10系统为例介绍解决方案。 值得一提的是…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来&#xff0c;在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂&#xff0c;网络攻击、数据泄露等事件频发&#xff0c;现行法律已难以完全适应新的风险挑战。 2025年3月28日&#xff0c;国家网信办会同相关部门起草了《网络安全…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...