【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:控制流程结构
上一篇:运算符和表达式 下一篇:函数和递归 ❤️🔥前情提要❤️🔥 欢迎来到C语言基本语法教程 在本专栏结束后会将所有内容整理成思维导图(结束换链接)并免费提供给大家学习,希望大家…...
MySQL安全性:防止攻击和保护数据
MySQL安全性:防止攻击和保护数据 MySQL是当今最流行的关系型数据库之一,然而,随着Internet的普及,数据库安全问题也越来越受到关注。在这篇文章中,我们将重点介绍MySQL的安全性问题,以及如何防止攻击和保护…...
R语言结构方程模型(SEM)
详情点击链接:R语言结构方程模型(SEM)生态学领域应用 一,R语言SEM分析入门:lavaan VS piecewiseSEM 结构方程模型在生态学研究中的应用及模型结构方模型估计方法:局域估计和全局估计的基本工作原理、主要…...

软件or硬件?硬件的前途到底在哪里?
一、硬件明明比软件更难,国内的硬件技术也不如软件,为什么硬件工程师待遇还不如软件? 1、不需要太高层次的硬件设计,比如大部分小家电企业,简单的电子产品企业,单片机简单外围设计就够了,单片机…...

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

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

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

《基于深度迁移学习的可穿戴睡眠阶段分类》阅读笔记
一、摘要 佩戴可穿戴设备进行睡眠监测是一种无创、便捷的方法,可以提高睡眠障碍筛查和健康监测的效率。然而,由于缺乏大规模、标准化的PPG数据集,使用PPG进行睡眠阶段分类仍然具有挑战性。本文提出了一种基于深度迁移学习的方法来解决这个问…...
java版工程管理系统源码企业工程项目管理系统简介
一、立项管理 1、招标立项申请 功能点:招标类项目立项申请入口,用户可以保存为草稿,提交。 2、非招标立项申请 功能点:非招标立项申请入口、用户可以保存为草稿、提交。 3、采购立项列表 功能点:对草稿进行编辑&#x…...

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

论文笔记:An Interactive-Voting Based Map Matching Algorithm
2010 MDM 1 ST-matching的问题 论文笔记:Map-Matching for low-sampling-rate GPS trajectories(ST-matching)_UQI-LIUWJ的博客-CSDN博客 当轨迹很长,且车辆通过多线平行的道路时,ST-Matching的效果较差,…...

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

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

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

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

Flutter+YesAPI 快速构建零运维的APP
前言 移动互联网经过多年的发展,已经进入一个成熟的阶段,几乎每个公司都有自己的移动应用程序或移动网站。随着5G技术的不断发展,也带来了更高效的数据传输速度和更稳定的网络连接,这使得更多的应用程序和服务能够在互联网上运行&…...
使用Socks5代理保障HTTP传输的网络安全
一、引言 在互联网时代,网络安全越来越受到人们的关注,特别是在数据传输过程中,很容易出现信息泄露、窃听等安全问题。为了保障网络传输的安全性,我们可以使用代理服务器来进行传输,而Socks5代理是其中一种常用的代理…...

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

YOLOv7训练自己的数据集(txt文件,笔记)
目录 1.代码下载 2.数据集准备(.xml转.txt) (1)修改图像文件名 (2)图片和标签文件数量不对应,解决办法 (3).xml转.txt (4).txt文件随机划分出对应的训练…...

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

XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...

从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

算术操作符与类型转换:从基础到精通
目录 前言:从基础到实践——探索运算符与类型转换的奥秘 算术操作符超级详解 算术操作符:、-、*、/、% 赋值操作符:和复合赋值 单⽬操作符:、--、、- 前言:从基础到实践——探索运算符与类型转换的奥秘 在先前的文…...