实用指南:C语言速成秘籍——循环结构(while、do while、for)和跳转语句(break,continue)

news/2025/10/13 21:25:07/文章来源:https://www.cnblogs.com/ljbguanli/p/19139430

实用指南:C语言速成秘籍——循环结构(while、do while、for)和跳转语句(break,continue)

目录

  • :one:`for`循环
    • 1.1、`for`循环的语法形式 and 执行流程
  • :two:`while`循环
    • 2.1、`while`循环的语法 和 执行流程
    • 2.2、:thinking::`while`循环和`for`循环compare
  • :three:`do while`循环
    • 3.1、`do while` 的语法 和 执行流程
  • :four:跳转语句:`break`和`continue`语句
    • 4.1、`while`循环中的`break`和`continue`
      • 4.1.1、`break`举例
      • 4.1.2、`continue` 举例
    • 4.2、`do while`循环中的`break`和`continue`
      • 4.2.1、`break`举例
      • 4.2.2、`continue`举例
    • 4.3、`for`循环中的`break`和`continue`
      • 4.3.1、`break`举例
      • 4.3.2、`continue`举例
    • :pushpin:`for`和`while`中`continue`对比

学习预警:

我们前面学习了选择结构,C语言有三种结构(顺序、选择循环

  • 选择结构学习

这个是专栏学习,里面收录了C语言的教学内容,欢迎大家进去学习

  • C语言学习专栏

下面我们将学习循环结构

  • for循环
    • for(exp1;exp2;exp3) 语法学习
      exp1:用来表示循环变量的 初始化
      exp2:用来表示循环结束 条件的判断
      exp3:用来循环 变量的调整
    • for循环中break(永久跳离循环语句)和continue(暂时跳离循环语句)的用法
  • while循环
    • 语句的语法学习while循环中breakcontinue的用法
  • do while循环
    • 语句的语法学习do while循环中breakcontinue的用法
    • do while循环的breakcontinue的使用和while类似
  • for 和 while循环语句的continue对比使用
    • for是会跳到循环变量的调整(exp3),安全性高
    • while是会跳到条件判断语句,安全性低
  • 通过调试和监视窗口来看语句的执行和变量的变化, 这是相关的链接,后面的学习中都会用到这个工具来进行理解 监视变量和调试语句学习

1️⃣for循环

1.1、for循环的语法形式 and 执行流程

for(exp1;exp2;exp3)//注意这些之间是分号隔开的,别写成逗号了
{
语句;
}
//exp1:用来表示循环变量的初始化
//exp2:用来表示循环结束条件的判断
//exp3:用来循环变量的调整

for循环的执行流程:

  • 先执行exp1,初始化循环变量
  • 进入exp2
    • 判断表达式是否为真(==1),进入循环语句;
      • break:
        • break)循环语句执行了后,再进行exp3变量调整(通常为自增或自减),再判断直到不满足结束循环。
        • break)直接跳出循环体,结束循环。
      • continue:
        • continue)循环语句执行了后,再进行exp3变量调整(通常为自增或自减),再判断直到不满足结束循环。
        • continue)直接跳到变量调整,结束循环。
    • 判断表达式是否为假(!=0),不进入循环语句,结束for循环

在这里插入图片描述


上面我们已经学习了for循环的语法形式,我们写一道题来练习一下吧

  • 练习1:打印1-10的值
    • 提升难度:每5个值之间要换行
  • 练习2:计算1-100之间3的倍数的数字和
    • 我们通过打印3的倍数的数值会发现什么规律?对此我们可以进一步改进代码
练习1#include<stdio.h>int main(){int num = 0;for (num = 1; num <= 10; num++){printf("%d ", num);/*这部分是难度提升的代码:if (num % 5 == 0)printf("\n");*/}return 0;}*******************************练习2#include<stdio.h>int main(){int num = 0;int sum = 0;for (num = 1; num <= 100; num++){if (num % 3 == 0){printf("3的倍数的值为:%d\n", num);//检验3的倍数的数值sum = sum + num;}}printf("sum=%d\n", sum);return 0;}**********************练习2(改进)发现3的倍数中两个数值是相差3,改进后可以减少循环和判断的次数,进行代码的优化#include<stdio.h>int main(){int num = 0;int sum = 0;for (num = 3; num <= 100; num += 3){printf("3的倍数的值为:%d\n", num);//检验3的倍数的数值sum = sum + num;}printf("sum=%d\n", sum);return 0;}

2️⃣while循环

2.1、while循环的语法 和 执行流程

while语句的语法结构和if语句非常相似

#include <stdio.h>int main(){int i = 4;if (i)			//表达式非0,执行一下语句{printf("hhhh\n");}printf("\n\n");while (i)		//表达式非0,执行一下语句{printf("hhhh\n");		//执行语句i--;			//i自减直到减到0,在进行while(i),判断表达式,为0,不执行语句,跳出循环}return 0;}
  • while语句的执行流程:
    • 先执行判断表达式
    • 1、表达式值为0,循环结束
    • 2、表达式值非0执行循环语句,语句执行后继续判断是否再执行语句
    • break:遇到break直接跳离循环语句,结束循环语句
    • continue:遇到continue直接跳到while的条件判断表达式
      在这里插入图片描述

while循环代码练习:

  • 1、在屏幕上打印1-10的值
  • 2、输入一个正的整数,逆序打印这个整数的每一位
    • 输入:1234,输出:4 3 2 1
    • 输入:128,输出:8 2 1
1、在屏幕上打印1-10的值
#include<stdio.h>int main(){int i = 1;while (i <= 10){printf("%d ", i);i++;}return 0;}***************************2、输入一个正的整数,逆序打印这个整数的每一位(下面有解释)#include<stdio.h>int main(){int n = 0;int b = 0;printf("请输入一个整数:");scanf("%d", &n);while (n){b=n % 10;printf("%d ", b);n = n / 10;}return 0;}

在这里插入图片描述

2.2、:while循环和for循环compare

例如:打印1-10的数字

  • 会发现while循环和for循环时相似的,它们都有变量初始化、判断条件、变量调整、循环语句
  • 只是它们的位置不同,for循环的初始化、判断、调整是集中的,利于代码 的维护;而while循环的这三部分是分散
  • 所以形式上,for循环时while循环的
    *但在具体使用中我们根据具体问题使用恰当的语句

在这里插入图片描述

3️⃣do while循环

3.1、do while 的语法 和 执行流程

  • 通常在循环结构中,do while的循环语句是使用最少的,其语法如下:
do
{
语句;
}while(exp);
//语句是:循环体
//exp是:判断条件
  • 在我们前面的学习中,for循环和while循环都是先判断,再决定是否进入循环语句
  • 但是do while先进入循环语句再判断表达式是否成立
    • 表达式为真(!=0)再次进入循环语句,直到结束循环
    • 表达式为假(==0)直接结束循环
  • do while循环语句中的循环体是至少被执行一次的,这就是其特殊的地方之处

do while循环的执行流程:

  • 执行循环语句,
  • 进行exp判断条件是否满足
    • exp != 0(真),继续执行循环语句,直到遇到break(跳出循环语句,结束循环),遇到continue(跳到循环的跳到条件判断语句);或者条件不满足,结束循环
    • exp == 0(假),结束循环
      在这里插入图片描述

上面我们已经大致学习了do while的循环结构,让我们实操一下吧!

  • 练习1:打印1-10的值
  • 练习2:输入一个正整数,计算这个整数时几位数
    • 输入:1234 ,输出:4
    • 输入:432 ,输出:3
练习1#include<stdio.h>int main(){int num = 0;do{num++;printf("%d ", num);} while (num < 10);return 0;}*******************练习2:#include<stdio.h>int main(){int num = 0;int count = 0;//计数printf("请输入一个正整数:");scanf("%d", &num);do{num = num / 10;count++;} while (num);printf("这个整数是:%d位\n", count);return 0;}
  • 练习2 的解题思路,如下:
    在这里插入图片描述
  • 上面的练习2 不一定要用do while 循环,但用do while循环是比较好的,因为n=0 的时候,是1位数,要统计位数的。

4️⃣跳转语句:breakcontinue语句

在我们循环执行的过程中,如果发生某些特殊状况时,需要提前终止循环。

  • 在C语言中提供了breakcontinue这两个关键字,来进行循环的终止的。
  • break:这个是永久终止循环,只要break被执行,就会直接跳出第一层循环(如果后嵌套循环中有个别循环层有break,就是跳离该层的循环),继续往后执行循环外的内容。
  • continue:这个是暂时跳过本次循环中continue后面的代码,跳过后还会继续执行循环代码,在for循环和while循环中是有差异

4.1、while循环中的breakcontinue

4.1.1、break举例

练习1#include<stdio.h>int main(){int i = 1;while (i <= 10){if (i == 5){printf("\n");break;}printf("%d ", i);i += 1;}printf("www\n");return 0;}***************************输出:1 2 3 4www

在打印完1 2 3 4 后,i = 5的时候执行break,跳出while循环 ,执行循环外的代码,输出www

  • 其执行流程如下:
    在这里插入图片描述


练习2:练习1的提升(二层循环)
#include<stdio.h>int main(){int i = 1;while (i <= 1){while (i <= 10){if (i == 5){printf("\n");break;//跳出第一层while循环}printf("%d ", i);i += 1;}printf("hhh\n");i++;}printf("www\n");return 0;}***************************输出:1 2 3 4hhhwww

在打印完1 2 3 4 后,i = 5的时候执行break,跳出第一层while循环 ,执行第一层循环外的代码,输出hhh,然后判断第二层while循环条件是否满足,不满足结束二层while循环。

  • 该练习的执行流程如下:
    在这里插入图片描述

4.1.2、continue 举例

  • continue继续的意思,在循环中的作用是跳出本次循环中continue后边的代码,继续进行下一次循环的判断

如果把上面的代码中的break替换成continue会怎么样呢?

练习1#include<stdio.h>int main(){int i = 1;while (i <= 10){if (i == 5){printf("\n");continue;/*当 i == 5 的时候,执行continue代码,跳过后面语句,去到判断条件此时因为跳过后面语句 i的值一直没有发生变化(i == 5),因此会导致死循环*/}printf("%d ", i);i += 1;}printf("www\n");return 0;}
  • 该代码执行流程,可根据流程图进行理解
    在这里插入图片描述

嵌套循环中continue会如何呢?

练习2 :嵌套循环
#include<stdio.h>int main(){int i = 1;while (i <= 1){while (i <= 10){if (i == 5){printf("\n");continue;/*当 i == 5 的时候,执行continue代码,跳过后面语句,去到判断条件此时因为跳过后面语句 i的值一直没有发生变化(i == 5),因此会导致死循环*/}printf("%d ", i);i += 1;}printf("hhh\n");i++;}printf("www\n");return 0;}
  • 代码执行流程图:
    在这里插入图片描述

4.2、do while循环中的breakcontinue

4.2.1、break举例

是和while循环一样的,运行到break时就直接跳离do while循环代码块,执行printf("www\n");

#include<stdio.h>int main(){int i = 1;do{if (i == 5)break;printf("%d ", i);i++;}while (i <= 10);printf("www\n");return 0;}

4.2.2、continue举例

是和while循环一样的,运行到continue时就直接跳到do while循环的条件判断i永远5,导致死循环

  • 可以调试代码查看具体代码语句的运行流程
#include<stdio.h>int main(){int i = 1;do{if (i == 5)continue;printf("%d ", i);i++;}while (i <= 10);printf("www\n");return 0;}

4.3、for循环中的breakcontinue

4.3.1、break举例

for循环中的break其实适合while循环中的一样作用,break是跳离第一层的循环,可以通过调试查看语句的运行能过程

#include<stdio.h>int main(){int i = 1;for(i=1;i<=1;i++){for(i=1;i <= 10;i++){if (i == 5){printf("\n");break;//跳出第一层for循环}printf("%d ", i);}printf("hhh\n");}printf("www\n");return 0;}********************输出:1 2 3 4hhhwww

4.3.2、continue举例

for循环中的continuewhile循环中的不太一样

  • 自动执行循环变量的更新
    • 下面的代码中i=5时执行语句printf()和continue,遇到continue不会执行下面的语句,接着循环变量更新(i++)i=6
#include<stdio.h>int main(){int i = 1;for(i=1;i <= 10;i++){if (i == 5){printf("\n");continue;/*当 i == 5 的时候,执行continue代码,跳过后面语句,去到for( )里面来到了i++的调整部分,i == 6*/}printf("%d ", i);}printf("www\n");return 0;}**************************输出:1 2 3 46 7 8 9 10 www

forwhilecontinue对比

  • 我们可以看到下面两个代码中,continue执行后,它们跳转的位置是不一样的,导致最后的运行结果不一致
    • for循环中的continue是会自动执行循环变量的更新,安全性高
    • while循环中的则是执行条件判断语句 ,安全性低,容易死循环
      在这里插入图片描述

✒️小结:
上面我们学习了循环语句(for、while、do while)的使用和跳转语句(break、continue)在循环语句的用处,我们学习了两种跳转语句还会不会有其他跳转语句呢?

  • 跳转语句goto,这个较break和continue来说,复杂很多,这个会作为单独的知识点来教学,后面会更新goto的使用和应用
  • 后面会更新循环语句的嵌套,嵌套循环不作为单独的知识点学习,会放在C语言小游戏的专栏里,作为练习题

如果上面的内容有错误和不足欢迎大家在评论区指出,会积极修正!
感谢大家的阅读

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/936437.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

描述https的加密过程

链接过程:整体:建立链接时:公钥 + 私钥 => 非对称加密 后续数据传输: mastersecret 对称加密 为什么安全:每一步劫持,都只能截取mastersecret,没法解密,只能透传,转发。有效保护通信数据挣钱养家

CSP-S 2025 提高级模拟赛 Day6 复盘 A.选择方案

题面 给出 \(n\) 个数 \(a_i\),求出 \(a_i+a_j\geq s\) 的 \(i,j\) 总数。 赛时想法 从前往后考虑所有在 \(i\) 之前的,大于 \(s-i\) 的数,\(i\) 可以与这些数配对。自然而然就想到用pbds里的平衡树维护。 预估复杂…

“不要通过共享内存来通信”——深入理解Golang并发模型与CSP理论

“不要通过共享内存来通信”——深入理解Golang并发模型与CSP理论Golang 在设计上另辟蹊径,其并发哲学的核心信条是:“不要通过共享内存来通信,而要通过通信来共享内存。” (Do not communicate by sharing memory;…

SSL证书批量申请终极指南:一次搞定所有域名

免费好用的SSL证书选lcjmSSL,多域名、泛域名都能办,自动流程超省心,安全防护马上有!您的网站必须安装SSL证书? 数据加密,保护隐私:这是最核心的作用。防止用户敏感信息在传输过程中被窃取或篡改。 身份认证,防…

详细介绍:百度C++实习生面试题深度解析(下篇)

详细介绍:百度C++实习生面试题深度解析(下篇)2025-10-13 21:14 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display…

npm install creat-vue命令使用报错解决方法

IDEA使用 npm install creat-vue命令的时候出现以下报错! image 可以使用npm init vue@latest就可以解决问题

ARM(IMX6ULL)——通信(IIC/I2C) - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

PDF转图片工具:基于PyQt5的完整实现与深度解析 - 详解

PDF转图片工具:基于PyQt5的完整实现与深度解析 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&q…

MongoDB安装及使用

安装参考教程: https://dblab.xmu.edu.cn/blog/3980/ 作业要求: 在电脑中完成MongoDB的安装,并通过MongoDB Shell新建一个以自己名字(英文全拼,例如Sunjing)的数据库,并创建一个名为“grade”的集合, 在该集合中…

从Gemini Robotics看通用机器人的科技路径

从Gemini Robotics看通用机器人的科技路径pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

张量的基本操作

从现在开始学习李沐的动手学习深度学习 学习深度学习这个科目,我们必须从基础概念开始学习 对于一个机器学习来说,关键的组件如下:可以学习的数据 如何转换数据的模型 一个目标函数, 用来量化模型的有效性 调整模型…

Windows7 隐藏用户

前言 当你在使用电脑时,真的确信只有你一个人在使用吗?会不会在某些不注意的角落,早已经有黑客悄悄潜入,创建了一个你不知道的用户? 漏洞实现 启动管理员cmd,并创建一个test\(用户,并将其分给administrators组。…

10 月记录

CF2159 CF2152 http://192.168.102.138/JudgeOnline/contest.php?cid=2310 http://192.168.102.138/JudgeOnline/contest.php?cid=2312 http://192.168.102.138/JudgeOnline/contest.php?cid=2314 https://htoj.com…

统计学习方法学习Day01

学习了统计学习方法的第一章 1.5正则化与交叉验证 (1)正则化的目的是模型选择的一个经典方法,正则化的是要使风险最小化的策略。正则化实在经验风险上加上一个正则化项,正则化项主要是防止模型在训练过程中出现过拟…

gpt-5-codex vs gpt-5

非常好的问题——你这张截图展示的是一个模型选择界面,列出了两组模型:gpt-5-codex 系列 和 gpt-5 系列,每组又细分成 low / medium / high 等不同等级(有的还有 minimal)。下面是它们的对比与推荐使用场景分析:…

Jenkins Share Library开发入门(一)

写在前面 今日心情有点小丧,但总体问题不大,有一些突然来的活,还没整完,明天再继续搞把。 有难度吗? 有一些把,我觉得还是要做一些自己不擅长的工作,才会有成长的吧,为什么? 用我们测试同学的话术,就是提升“…

第十三篇

今天是10月13号,今天是满课,上午学习了栈的相关知识,下午学习了Java。

网络安全基础--第五课:跨站脚本攻击XSS - 实践

网络安全基础--第五课:跨站脚本攻击XSS - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &…

成员内部类

成员内部类在类的内部定义,与实例变量,实例方法同级别的类外部类的一个实例部分,创建内部类对象时必须依赖外部类对象Outer out = new Outer(); Inner in = out.new Inner();//外部类 public class Outer {//实例变…

用 Fortran 进行英文数字验证码识别

一、引言 Fortran 是历史最悠久的高级语言之一,广泛应用于数值计算与工程模拟。在验证码识别方面,尽管 Fortran 并不是图像处理或 OCR 的主流语言,但我们可以借助系统调用与外部 OCR 工具如 Tesseract 实现简单的验…