一文带你掌握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(& ...
随机推荐
- 《CTFshow-Web入门》05. Web 41~50
@ 目录 web41 题解 原理 web42 题解 原理 web43 题解 原理 web44 题解 原理 web45 题解 原理 web46 题解 原理 web47 题解 web48 题解 web49 ...
- ELK环境部署-基础环境安装(一)
ELK简介 ElasticSearch工作原理以及专用名词 ELK是Elasticsearch(ES) , Logstash, Kibana的结合,是一个开源日志收集软件. Elasticsearch ...
- redhat7查找已接网线但是还未配置IP的网卡接口
方法一:nmcli 输出中参数WIRED-PROPERTIES.CARRIER为on即为接网线网卡 #nmcli device show |grep -i -E "device|carrie ...
- Spring Event 观察者模式, 业务解耦神器
观察者模式在实际开发过程中是非常常见的一种设计模式. Spring Event的原理就是观察者模式,只不过有Spring的加持,让我们更加方便的使用这一设计模式. 一.什么是观察者模式 概念: 观察者 ...
- C# 使用Windows身份验证连接Sql Server
C# 使用Windows身份验证连接Sql Server 使用Windows身份验证连接Sql Server 的字符串为: server=.;database=test_user;Trusted_Co ...
- ChatGPT API Transition Guide
ChatGPT API Transition Guide How to get started Written by Joshua J.. Updated over a week ago Prompt ...
- mysql之简单的多表查询
最简单的多表查询需要用到连操作符(join) 1.笛卡儿积 形式为table1 join table2.如: select e.fname,e.lname,d.name from employee e ...
- Vue:watch的多种使用方法
好家伙, 补了一下watch的多种用法 1.属性: 方法(最常用) 使用最广泛的方式是将watch选项设置为一个对象,对象的属性是要观测的数据属性,值是一个回调函数,该回调函数会在属性变化时触发.例如 ...
- camerabin error:"Internal data stream error,使用QT打开MIPI摄像头
使用QT自带的QCamera打开MIPI摄像头 遇到:camerabin error:"Internal data stream error 降低分辨率为640*480 TRANSLATE ...
- 数据结构与算法(LeetCode)第一节:认识复杂度,对数器,二分法与异或运算
一.认识复杂度 1.评估算法优劣的核心指标: 时间复杂度:当完成了表达式的建立,只要把最高阶项留下即可.低阶项都去掉,高阶项的系数也去掉,记为O(去掉系数的高阶项): 时间复杂度是衡量算法流程的复 ...