一文带你掌握C语言的循环结构
C语言循环结构详解
在C语言中,循环结构是一种重要的控制结构,它允许我们重复执行一段代码,以达到特定的目的。循环结构可以帮助我们简化重复性的任务,提高代码的效率。本篇文章将深入探讨C语言中的循环结构,包括 while 循环、for 循环、do-while 循环以及循环中的控制语句。
1. while 循环
1.1 while 循环的基本语法
while 循环是C语言中最基本的循环结构之一。它的基本语法如下:
while (条件) {
// 循环体代码
}
在这个语法结构中,条件是一个布尔表达式,当条件为真时,循环体中的代码将被执行。如果条件为假,则跳过循环体,继续执行后续的代码。
1.2 while 循环的执行流程
- 首先,计算条件的值。
- 如果条件为真,则执行循环体中的代码。
- 执行完循环体后,再次计算条件的值。
- 如果条件仍为真,则继续执行循环体,重复步骤
3。 - 如果条件为假,则跳出循环,继续执行后续的代码。
1.3 if 和 while的混淆处
在使用 while 循环时,有时候容易与if语句混淆。尤其是当条件的判断较为复杂时,我们需要仔细区分两者的使用场景。
if 语句用于在特定条件下执行一段代码,而 while 循环用于重复执行一段代码,直到条件不满足为止。
在使用 while 循环时,需要确保循环体内部的代码能够改变条件的值,以免陷入无限循环的情况。
2. for 循环
2.1 for 循环的基本语法
for 循环是C语言中常用的循环结构,它的基本语法如下:
for (初始化表达式; 条件表达式; 更新表达式) {
// 循环体代码
}
在这个语法结构中,初始化表达式用于初始化循环变量,条件表达式用于判断循环是否继续执行,更新表达式用于更新循环变量的值。
2.2 for 循环的执行流程
- 首先,执行初始化表达式,初始化循环变量。
- 然后,计算条件表达式的值。
- 如果条件为真,则执行循环体中的代码。
- 执行完循环体后,执行更新表达式,更新循环变量的值。
- 再次计算条件表达式的值。
- 如果条件仍为真,则继续执行循环体和更新表达式,重复步骤
5。 - 如果条件为假,则跳出循环,继续执行后续的代码。
2.3 for 循环的易错之处
首先,需要确保循环变量在循环体内部被更新,以免陷入无限循环的情况。
其次,循环变量的作用范围仅限于for循环内部,如果在循环外部使用循环变量,可能会导致编译错误。
另外,初始化表达式、条件表达式和更新表达式都可以为空,但分号必须保留。
2.4 while 循环和 for 循环对比
| while循环 | for循环 | |
|---|---|---|
| 语法 | while (条件) { // 循环体代码 } |
for (初始化表达式; 条件表达式; 更新表达式) { // 循环体代码 } |
| 使用场景 | 循环次数不确定时 | 循环次数已知或可计算时 |
| 循环变量 | 需要在循环体内部手动更新 | 在循环结构中自动更新 |
| 作用范围 | 循环外部无法访问循环变量 | 仅限于for循环内部 |
3 do-while 循环
3.1 do-while 循环的基本语法
do-while循环是C语言中另一种常用的循环结构,它的基本语法如下:
do {
// 循环体代码
} while (条件);
在这个语法结构中,先执行循环体中的代码,然后再计算条件的值。如果条件为真,则继续执行循环体,重复以上步骤。如果条件为假,则跳出循环,继续执行后续的代码。
3.2 do-while 的执行流程
- 首先,执行循环体中的代码。
- 然后,计算条件的值。
- 如果条件为真,则继续执行循环体,重复步骤1和2。
- 如果条件为假,则跳出循环,继续执行后续的代码。
与 while 循环和 for 循环不同的是,do-while 循环保证循环体至少执行一次,即使条件一开始就为假。
3.3 3 种循环如何选择?
在选择使用 while 循环、for 循环还是 do-while 循环时,还是需要根据具体的需求和情况进行判断,以下我列出一个比较常规的判断方式,仅供参考。
- 如果
循环次数不确定且至少要执行一次循环体,可以使用 do-while 循环。 - 如果
循环次数已知或可计算,并且需要在循环结构中自动更新循环变量,可以使用 for 循环。 - 如果
仅需要根据条件判断是否执行循环体,可以使用 while 循环。
4 循环中跳出
4.1 break 语句
在循环结构中,使用 break 语句可以提前跳出循环,即使条件仍然满足。
下面是一个使用 break 语句打印1~4范围数字的示例:
int i;
for (i = 1; i <= 10; i++) {
if (i == 5) {
break;
}
printf("%d ", i);
}
// 输出结果:1 2 3 4
在这个示例中,当循环变量i等于5时,执行 break 语句,跳出循环。
4.2 continue 语句
在循环结构中,使用 continue 语句可以提前结束当前循环的迭代,直接进入下一次迭代。
下面是一个使用 continue 语句只打印10以内奇数的示例:
int i;
for (i = 1; i <= 10; i++) {
if (i % 2 == 0) {
continue;
}
printf("%d ", i);
}
// 输出结果:1 3 5 7 9
在这个示例中,当循环变量 i 为偶数时,执行 continue 语句,跳过当前迭代,直接进入下一次迭代。
使用 break 和 continue 语句可以灵活地控制循环的执行流程,以满足特定的需求。
5 循环嵌套
循环嵌套是指在一个循环结构内部嵌套另一个循环结构。通过循环嵌套,我们可以实现更复杂的循环逻辑。
下面是一个使用循环嵌套打印乘法表的示例:
int i, j;
for (i = 1; i <= 9; i++) {
for (j = 1; j <= i; j++) {
printf("%d * %d = %d\\t", j, i, i * j);
}
printf("\\n");
}
在这个示例中,外层循环控制乘法表的行数,内层循环控制每行的列数。通过嵌套循环,我们可以逐行逐列地打印乘法表的内容。
循环嵌套可以实现更复杂的循环逻辑,但需要注意循环变量的作用范围和循环条件的控制,以避免陷入无限循环的情况。
循环嵌套如果不做出一定的优化,性能上是有很严重的问题的哦,特别是多重嵌套的循环,学过数据结构与算法的朋友应该是明白的。
6 goto 语句
6.1 基本使用
在C语言中,goto 语句可以用于无条件地跳转到程序中的标记位置。它可以在一定程度上改变程序的执行流程,但过度使用 goto 语句可能会导致代码难以理解和维护。
下面是一个使用 goto 语句实现循环打印数字1~10的示例:
int i = 1;
loop:
printf("%d ", i);
i++;
if (i <= 10) {
goto loop;
}
在这个示例中,使用 goto 语句将程序跳转到标记位置 loop,实现了循环的效果。
6.2 注意事项
- 应该避免过度使用 goto 语句,以保持代码的可读性和可维护性。
- 确保跳转的目标位置在当前作用域内,以避免跨作用域的问题。
- 注意避免形成死循环或无限循环,以免程序无法正常结束。
一文带你掌握C语言的循环结构的更多相关文章
- C语言之循环结构
程序结构: 顺序结构 条件结构(分支结构) if结构,if-else结构 ,多重if分支结构,switch结构 循环结构:做重复的事情 while循环,do..while循环和for循环. 写循环结构 ...
- 【C语言】-循环结构-while语句
while语句: while循环可实现"当型"循环,即当条件成立时,执行循环体.适合无法确定循环执行次数的情况. while (表达式) { 循环语句 } 注意: 表达式为循环控制 ...
- 【学习笔记】【C语言】循环结构-for
1.使用: for (语句1; 条件; 语句2) { 循环体 } 语句1:初始化语句 语句2:增量语句(执行完循环体后再执行的语句) 1.for一开始就会执行一次语句1(整个for循环 ...
- 【学习笔记】【C语言】循环结构-do while
用法: while (条件) { } do { } while(条件); while和do-while的区别 1.很多情况下,while和do while可以互换 2.while特 ...
- 【学习笔记】【C语言】循环结构-while
1. 简单使用 while ( 条件 ) { 语句1; 语句2; .... } 如果条件成立,就会执行循环体中的语句(“循环体”就是while后面大括号{}中的内容).然后再次 ...
- 【C语言】-循环结构-for语句
for语句: for (表达式1;表达式2;表达式3) { 循环语句 } 表达式1 给循环变量赋初值 表达式2 为循环条件 表达式3 用来修改循环变量的值,称为循环步长. for语句的执行流程: 例: ...
- C语言之循环结构 for(二)
一 for循环的嵌套使用 for循环的嵌套语法: for(int i =0;i<10;i++){ for(int j=0;j<5;j++){ } } 一般用来打印平面,或者控制平面,或者说 ...
- C语言之循环结构 for(一)
一 for循环的介绍 语法: for(表达式1;表达式2;表达式3){ 循环体; } 循环步骤: A.执行表达式1,执行完毕跳转到B B.判断表达式2的结果是否为真,如果为真,跳转到C,否则跳转到E ...
- C语言基础-循环结构
循环结构while while循环-图例 while循环-格式 while ( 条件 ) { 语句1; 语句2; .... } 如果条件成立,就会执行循环体中的语句(“循环体”就是while后面大括号 ...
- C语言--单层循环结构
一.PTA实验作业 题目1:最佳情侣身高 1.实验代码 int N, i; float height; char sex; printf("输入用户个数:\n"); scanf(& ...
随机推荐
- Hi3798MV200 恩兔N2 NS-1 (三): 制作 Ubuntu rootfs
目录 Hi3798MV200 恩兔N2 NS-1 (一): 设备介绍和刷机说明 Hi3798MV200 恩兔N2 NS-1 (二): HiNAS海纳思使用和修改 Hi3798MV200 恩兔N2 NS ...
- linux编译安装nginx
前言 系统:centos7和debian11均验证可行 本文将nginx默认支持的编译参数都加上了,所以需要的依赖比较多,酌情配置. 步骤 假设安装在/usr/local/nginx,创建安装目录 m ...
- [ABC141E] Who Says a Pun?
2023-02-17 题目 题目传送门 翻译 翻译 难度&重要性(1~10):4 题目来源 AtCoder 题目算法 dp,字符串 解题思路 看到求两个完全相同的子串时,我们可以发现其与求最长 ...
- WPF 入门笔记 - 08 - 动画
感谢大家对上篇博文的支持 回到正题,今天和大家分享下学习动画过程中的内容.动画对我来讲还是蛮新鲜的,大家知道在接触WPF之前我只用过Winform,而Winform中并没有动画的概念,当想要实现某些& ...
- MindSponge分子动力学模拟——使用迭代器进行系统演化(2023.09)
技术背景 在前面几篇博客中,我们已经介绍过使用MindSponge去定义一个系统以及使用MindSponge计算一个分子系统的单点能.这篇文章我们将介绍一下在MindSponge中定义迭代器Updat ...
- 【译】在 Visual Studio 2022 中安全地在 HTTP 请求中使用机密
在 Visual Studio 2022 的17.8 Preview 1版本中,我们更新了 HTTP 文件编辑器,使您能够外部化变量,从而使跨不同环境的 Web API 测试更容易.此更新还包括以安全 ...
- rnacos实现raft和类distro协议,支持集群部署
1. rnacos 简介 rnacos是一个用rust实现的nacos服务. rnacos是一个轻量. 快速.稳定.高性能的服务:包含注册中心.配置中心.web管理控制台功能,支持单机.集群部署. r ...
- 【python技巧】文本处理-re库字符匹配
目录 1. 正则表达式 1.1 测试工具 1.2 限定符 1.3 字符集 1.4 运算符 1.5 元字符 1.6 懒惰匹配和贪婪匹配 我们读取文件内容,肯定不是单纯为了输出或者重新写入,对于文本我们一 ...
- 使用SemanticKernel 进行智能应用开发(2023-10更新)
以OpenAI 的ChatGPT 所掀起的GenAI 快速创新浪潮,其中连接LLM 和 应用之间的桥梁的两大开源项目:LangChain[1]和Semantic Kernel[2] ,在半年前写过一篇 ...
- interface 接口相关【GO 基础】
〇.接口简介 接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节.也就是说,接口可以将一种或多种特征归纳到一起,其他不同的对象通过实现此接口,来表示可以 ...