前言

在使用continue和break时,会出现很多的问题,比如说在一个循环语句中使用了一个continue后它没办法继续执行了,它为什么跳不出去了等等问题,这一篇文章带你们如何避免这些很烦的问题。
这篇文章只是那continue来举例子,break的避坑方法和continue一样,先看一下continue的语法

一、continue语法

1.continue的作用

continue是跳过当前循环,例如现在有一个代码

int i = 0
for(i = 0; i < 100; i++){
if (i % 5 == 0){
continue;
}
printf("%d\n", i);
}

运行的结果为

可以看到,这个程序是碰到5的倍数就要跳出当前循环。

2.语法

只需要加在循环中即可,可参考上面的代码

二、大坑项目

题目

这个题目是我们班的一个同学给我看的,我觉得这个蛮有意思的,感觉大家可能都会在这会跳进这个坑
这道题是这样的:1~100的整数,遇到5的倍数就跳出,否则累加
看到题目后大家都会觉得很简单,可能会产生两种写法
第一种写法就是我们同学写的

#include <stdio.h>
int main(){
int i = 1, sum = 0;
while (i <= 100){
if(i % 5 == 0){
continue;
}
else{
sum += i;
i++;
}
}
return 0;
}

写完之后运行方向没有任何的结果,所以就很懵不知道为什么。
然后第二种写法
这个是我写的,我当时搞懵了,然后就写错了,但可以提供给大家参考一下

#include <stdio.h>
int main(){
int i = 1, sum = 0;
while (i <= 100){
if(i % 5 == 0){
continue;
}
else{
sum += i;
}
i++;
}
return 0;
}

分析

两种方法执行到i = 5时会进入到 if(i % 5 == 0) 中,然后执行 continue 跳出当前循环,然后进入下一次循环,但 i 的值还是保持不变,所以如果要这么写的话需要在 continue 前面添加一个 i++ 操作

正确写法

#include <stdio.h>
int main(){
int i = 1, sum = 0;
while (i <= 100){
if(i % 5 == 0){
i++;
continue;
}
else{
sum += i;
i++;
}
}
return 0;
}

或则第二种方法就是将 while 语句改成 for 语句

#include <stdio.h>
int main(){
int i = 1, sum = 0;
for (i = 1; i <= 100; i++){
if(i % 5 == 0){
continue;
}
else{
sum += i;
}
}
return 0;
}

最后一种方法就是直接不写,觉得复杂咱就不写

#include <stdio.h>
int main(){
int i = 1, sum = 0;
while (i <= 100){
if (i % 5 != 0){
sum += i;
i++;
}
}
return 0;
}

这些办法都可以

三、进坑调试

对于使用 continue 或则是 break 出错的话,有几种方法可以进行调试,但最重要的还是大家在做题或则做项目的时候一定要注意,避免进坑。

第一种

输出计数值
对于上面的那个题,拿到后运行发现没办法输出值,那就可以在代码的前面 printf() 一下你定的输出值

#include <stdio.h>
int main(){
int i = 1, sum = 0;
while (i <= 100){
printf("%d\n", i);
if(i % 5 == 0){
continue;
}
else{
sum += i;
i++;
}
}
return 0;
}

然后再运行看一下是不是计数值 i 没有改变,如果 i 没有改变,就需要再重新看一下这个程序。

第二种

使用编译器自带的调试工具一个一个的查找,如果查找到有一个值没有改变,这样你就可以很好的修改值了。

总结

大家在写练习和程序的时候一定一定要小心谨慎,很多bug都是因为粗心和大意导致的

C语言循环坑 -- continue的坑的更多相关文章

  1. [R语言]R语言计算unix timestamp的坑

    R+mongo的组合真是各种坑等着踩 由于mongo中的时间戳普遍使用的是unix timestamp的格式,因此需要对每天的数据进行计算的时候,很容易就想到对timestamp + gap对方式来实 ...

  2. Go语言循环判断的使用~

    Go 语言条件语句 条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为 false 的情况在执行另外的语句. 下图展示了程序语言中条件语句的结 ...

  3. C语言 ---- 循环分支 iOS学习-----细碎知识点总结

    #import <Foundation/Foundation.h>  // #import是OC种的导入头文件或者是系统框架的指令 // 定义了一个Season枚举类型enum Seaso ...

  4. C语言循环剖析(转载)

    一.if.else float变量与“零值”进行比较: float fTestVal = 0.0; if((fTestVal >= -EPSINON) && (fTestVal ...

  5. 写个 Hello world - 前端从入坑到弃坑系列教程(1)

    这是一个系列教程<前端从入坑到弃坑>的第一篇. HTML 是什么 说白了,HTML 就是网页的内容.比如你现在正在阅读的这个网页的内容,就是 HTML.如果你还不明白,请继续往下阅读. 写 ...

  6. c语言学习笔记-continue

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 一.continue函数意义 用于跳过本次循环余下语句,转去判断是否需要执行下次循环 二.continue使用案例 编写代码,对 ...

  7. Filezilla配置FTP中的坑以及出坑办法

    做本科生助教,老板让配置一个FTP传资料交作业,找了一台Windows服务器捣鼓,开始按网上教程自己配置特别麻烦,何西西说用Filezilla比较方便,就去Filezilla官网下载了Filezill ...

  8. 控制 if 语句 while循环 break continue

    if 语句的语法: 1. if 条件 :   #引号是将条件与结果分开 代码块   # 四个空格,或者一个tab键,这个是告诉程序满足这个条件的 说明: 当条件成立的时候(True), 代码块会被执行 ...

  9. R语言 循环

    R语言循环 可能有一种情况,当你需要执行一段代码几次. 通常,顺序执行语句. 首先执行函数中的第一个语句,然后执行第二个语句,依此类推. 编程语言提供允许更复杂的执行路径的各种控制结构. 循环语句允许 ...

  10. C语言-循环结构及break、continue

    循环结构 --1-- 结构循环 1.1 while循环 1.2 do…while循环 1.3 for循环 --2-- break和continue 2.1 break关键字 2.2 continue关 ...

随机推荐

  1. Portainer安装

    个人博客地址: https://note.raokun.top 拥抱ChatGPT,国内访问网站:https://www.playchat.top Portainer是一个可视化的容器镜像的图形管理工 ...

  2. [MAUI]模仿网易云音乐黑胶唱片的交互实现

    @ 目录 创建页面布局 创建手势控件 创建影子控件 唱盘拨动交互 唱盘和唱针动画 项目地址 用过网易云音乐App的同学应该都比较熟悉它播放界面. 这是一个良好的交互设计,留声机的界面隐喻准确地向人们传 ...

  3. Protobuf编码规则

    支持类型 该表显示了在 .proto 文件中指定的类型,以及自动生成的类中的相应类型: .proto Type Notes C++ Type Java/Kotlin Type[1] Java/Kotl ...

  4. HTML中link标签的那些属性

    在HTML中, link 标签是一个自闭合元素,通常位于文档的 head 部分.它用于建立与外部资源的关联,如样式表.图标等. link 标签具有多个属性,其中 rel 和 href 是最常用的. r ...

  5. NUXT3.0实现网络请求二次封装

    最近在开发基于nuxt3.0的项目,看了官网的网络请求,感觉不太适合,就自己基于官网的useFetch()方法封装了一个网络请求,下面开始实现封装. 第一步:新建http.ts文件,用于编写封装代码 ...

  6. 2021-12-08:扑克牌中的红桃J和梅花Q找不到了,为了利用剩下的牌做游戏,小明设计了新的游戏规则: 1) A,2,3,4....10,J,Q,K分别对应1到13这些数字,大小王对应0; 2) 游

    2021-12-08:扑克牌中的红桃J和梅花Q找不到了,为了利用剩下的牌做游戏,小明设计了新的游戏规则: A,2,3,4-10,J,Q,K分别对应1到13这些数字,大小王对应0; 游戏人数为2人,轮流 ...

  7. Django-1:安装、更新、查看版本

    安装: pip install Django 更新: pip3 install -U Django 或者 python -m pip install -U Django 查看: python -m d ...

  8. 2019年蓝桥杯C/C++大学B组省赛真题(特别数的和)

    题目描述: 小明对数位中含有2.0.1.9 的数字很感兴趣(不包括前导0) 在1到40中这样的数包括1.2.9.10 至32.39 和40,共28 个,他们的和是574. 请问,在1到n 中,所有这样 ...

  9. 代码随想录算法训练营Day18 二叉树

    代码随想录算法训练营 代码随想录算法训练营Day18 二叉树| 513.找树左下角的值 112. 路径总和 113.路径总和ii 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构 ...

  10. pyhton 自动化进阶学习1 合并excel 报表,然后进行的透视表操作

    import xlrd import xlsxwriter import osimport pandas as pdimport numpy as np# 对合并报表进行透视# 待续# 获取文件夹所有 ...