C语言循环结构详解

在C语言中,循环结构是一种重要的控制结构,它允许我们重复执行一段代码,以达到特定的目的。循环结构可以帮助我们简化重复性的任务,提高代码的效率。本篇文章将深入探讨C语言中的循环结构,包括 while 循环、for 循环、do-while 循环以及循环中的控制语句。

1. while 循环

1.1 while 循环的基本语法

while 循环是C语言中最基本的循环结构之一。它的基本语法如下:

while (条件) {
// 循环体代码
}

在这个语法结构中,条件是一个布尔表达式,当条件为真时,循环体中的代码将被执行。如果条件为假,则跳过循环体,继续执行后续的代码。

1.2 while 循环的执行流程

  1. 首先,计算条件的值。
  2. 如果条件为真,则执行循环体中的代码。
  3. 执行完循环体后,再次计算条件的值。
  4. 如果条件仍为真,则继续执行循环体,重复步骤3
  5. 如果条件为假,则跳出循环,继续执行后续的代码。

1.3 if 和 while的混淆处

在使用 while 循环时,有时候容易与if语句混淆。尤其是当条件的判断较为复杂时,我们需要仔细区分两者的使用场景。

if 语句用于在特定条件下执行一段代码,而 while 循环用于重复执行一段代码,直到条件不满足为止。

在使用 while 循环时,需要确保循环体内部的代码能够改变条件的值,以免陷入无限循环的情况。

2. for 循环

2.1 for 循环的基本语法

for 循环是C语言中常用的循环结构,它的基本语法如下:

for (初始化表达式; 条件表达式; 更新表达式) {
// 循环体代码
}

在这个语法结构中,初始化表达式用于初始化循环变量,条件表达式用于判断循环是否继续执行,更新表达式用于更新循环变量的值。

2.2 for 循环的执行流程

  1. 首先,执行初始化表达式,初始化循环变量。
  2. 然后,计算条件表达式的值。
  3. 如果条件为真,则执行循环体中的代码。
  4. 执行完循环体后,执行更新表达式,更新循环变量的值。
  5. 再次计算条件表达式的值。
  6. 如果条件仍为真,则继续执行循环体和更新表达式,重复步骤5
  7. 如果条件为假,则跳出循环,继续执行后续的代码。

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. 然后,计算条件的值。
  3. 如果条件为真,则继续执行循环体,重复步骤1和2。
  4. 如果条件为假,则跳出循环,继续执行后续的代码。

与 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语言的循环结构的更多相关文章

  1. C语言之循环结构

    程序结构: 顺序结构 条件结构(分支结构) if结构,if-else结构 ,多重if分支结构,switch结构 循环结构:做重复的事情 while循环,do..while循环和for循环. 写循环结构 ...

  2. 【C语言】-循环结构-while语句

    while语句: while循环可实现"当型"循环,即当条件成立时,执行循环体.适合无法确定循环执行次数的情况. while (表达式) { 循环语句 } 注意: 表达式为循环控制 ...

  3. 【学习笔记】【C语言】循环结构-for

    1.使用: for (语句1; 条件; 语句2) {     循环体 }   语句1:初始化语句 语句2:增量语句(执行完循环体后再执行的语句)   1.for一开始就会执行一次语句1(整个for循环 ...

  4. 【学习笔记】【C语言】循环结构-do while

    用法: while (条件) {     } do {   } while(条件);   while和do-while的区别 1.很多情况下,while和do while可以互换   2.while特 ...

  5. 【学习笔记】【C语言】循环结构-while

    1. 简单使用 while ( 条件 ) {     语句1;     语句2;     .... } 如果条件成立,就会执行循环体中的语句(“循环体”就是while后面大括号{}中的内容).然后再次 ...

  6. 【C语言】-循环结构-for语句

    for语句: for (表达式1;表达式2;表达式3) { 循环语句 } 表达式1 给循环变量赋初值 表达式2 为循环条件 表达式3 用来修改循环变量的值,称为循环步长. for语句的执行流程: 例: ...

  7. C语言之循环结构 for(二)

    一 for循环的嵌套使用 for循环的嵌套语法: for(int i =0;i<10;i++){ for(int j=0;j<5;j++){ } } 一般用来打印平面,或者控制平面,或者说 ...

  8. C语言之循环结构 for(一)

    一 for循环的介绍 语法: for(表达式1;表达式2;表达式3){ 循环体; } 循环步骤: A.执行表达式1,执行完毕跳转到B B.判断表达式2的结果是否为真,如果为真,跳转到C,否则跳转到E ...

  9. C语言基础-循环结构

    循环结构while while循环-图例 while循环-格式 while ( 条件 ) { 语句1; 语句2; .... } 如果条件成立,就会执行循环体中的语句(“循环体”就是while后面大括号 ...

  10. C语言--单层循环结构

    一.PTA实验作业 题目1:最佳情侣身高 1.实验代码 int N, i; float height; char sex; printf("输入用户个数:\n"); scanf(& ...

随机推荐

  1. nacos系列:简介和安装

    目录 版本选择 安装 windows安装 centos安装 mysql方式存储 官网:https://nacos.io github:https://github.com/alibaba/nacos ...

  2. 利用IPV6随时访问家中影音Jellyfin

    本文章主要记录通过ipv6实现家庭影音中心在互联网上的访问. 之前很多方案都是通过第三方进行内网穿透,实际体验不是很好.目前ipv6发展迅速,完全可以取代这种以ipv4为中心的内网资源外网访问的方式. ...

  3. tomcat远程部署

    使用maven的插件对tomcat进行远程部署,大大降低了部署步骤,对于远程部署调试也有一定的帮助 要让maven对够进行远程部署,我们需要对tomcat进行配置,主要是配置tomcat-user.x ...

  4. DesignPattern-part1

    title: "modern C++ DesignPattern-Part1" date: 2018-04-03T16:06:33+08:00 lastmod: 2018-04-0 ...

  5. 企业级低代码平台,通用代码生成平台,Java开源项目(附源码)

    项目介绍 Jeecg-Boot 是一款基于代码生成器的智能开发平台!采用前后端分离架构:SpringBoot,Mybatis,Shiro,JWT,Vue&Ant Design.强大的代码生成器 ...

  6. 【爬虫笔记】Python爬虫简单运用爬取代理IP

    一.前言 近些年来,网络上的爬虫越来越多,很多网站都针对爬虫进行了限制,封禁了一些不规则的请求.为了实现正常的网络爬虫任务,爬虫常用代理IP来隐藏自己的真实IP,避免被服务器封禁.本文将介绍如何使用P ...

  7. Azure Data Factory(九)基础知识回顾

    一,引言 在本文中,我们将继续了解什么是 Azure Data Factory,Azure Data Factory 的工作原理,Azure Data Factory 数据工程中的数据管道,并了解继承 ...

  8. Vue项目——尚品会

    1: 项目的初始化 环境要求:node + webpack + 淘宝镜像 初始化项目: vue create 项目名称 目录/文件分析: - node_modules文件夹:放置项目依赖的地方 - p ...

  9. 其它——各主流Linux系统解决pip安装mysqlclient报错

    文章目录 一 CentOS(红帽) 二 Ubuntu 三 Windows 一 CentOS(红帽) #CentOS有Python.Mysql的开发工具包,安装后使用pip安装mysqlclient即可 ...

  10. GO数组解密:从基础到高阶全解

    在本文中,我们深入探讨了Go语言中数组的各个方面.从基础概念.常规操作,到高级技巧和特殊操作,我们通过清晰的解释和具体的Go代码示例为读者提供了全面的指南.无论您是初学者还是经验丰富的开发者,这篇文章 ...