一文带你掌握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(& ...
随机推荐
- 使用kubeadm部署kubernetes
k8s版本:1.15.0 前期准备 节点: master:172.50.13.103(2核2G) node-1:172.50.13.104(2核2G) node-2:172.50.13.105(2核2 ...
- ubuntu20.4操作指令合集
每个指令前面尽量加上sudo,避免麻烦的权限问题 下载软件:sudo apt install 包名 开启/关闭防火墙(开启/关闭所有端口):sudo ufw enable/disable 防火墙状态: ...
- 前后端分离中台框架 Admin.Core 学习-介绍与配置说明
中台框架后端项目 Admin.Core 的介绍与配置说明 中台admin是前后端分离权限管理系统,Admin.Core为后端项目,基于.NET 7.0开发. 支持多租户.数据权限.动态 Api.任务调 ...
- 9、Mybatis之动态SQL
9.1.环境搭建 9.1.1.创建新module 创建名为mybatis_dynamicSQL的新module,过程参考5.1节 9.1.2.创建Emp实体类 package org.rain.myb ...
- [ABC128D] equeue
2023-01-14 题目 题目传送门 翻译 翻译 难度&重要性(1~10):4 题目来源 AtCoder 题目算法 暴力,贪心 解题思路 由题意可以得出,数据只有 \(n \leq 50,k ...
- Linux 内核音频子系统调试
debugfs 文件系统 debugfs 可以为 Linux 内核各个模块的分析调试,提供许多信息,如音频子系统的 ASoC,以及 tracing 等.debugfs 文件系统可以通过命令行工具挂载, ...
- QA|workon env后没有进入虚拟环境,但也没有报错,但cmd可以|Python虚拟环境
问题:pycharm的terminal执行workon env后没有进入虚拟环境,但也没有报错 但cmd可以 原因:因为pycharm的terminal用的是powershell,更改为cmd,重新打 ...
- 关闭Google"阻止了登录尝试"方法, 其他设备也能登录Gmail等谷歌服务
首先登录谷歌账户, 访问 https://www.google.com/settings/security/lesssecureapps 把"不够安全的应用的访问权限" 启用打勾 ...
- 常见python工具的基本构造-入门
一.常见库 exifread 读取图片中的信息,如GPS信息 https://blog.csdn.net/qq1198768105/article/details/128159598 tkinter ...
- 3步体验在DAYU200开发板上完成OpenHarmony对接华为云IoT
本文分享自华为云社区<DAYU200+OpenHarmony 3.1.1对接华为云IOT[华为云IoT+鸿蒙]>,作者:DS小龙哥. 一.前言 OpenHarmony 3.1.1 是一个开 ...