前言

在使用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. TiDB Lightning导入超大型txt文件实践

    背景 TiDB 提供了很多种数据迁移的方式,但这些工具/方案普遍对MySQL比较友好,一旦涉及到异构数据迁移,就不得不另寻出路,借助各种开源或商业的数据同步工具.其实数据在不同系统的流转当中,有一种格 ...

  2. Midjourney:一步一步教你如何使用 AI 绘画 MJ

    一步一步如何使用 Midjourney 教程:教学怎么用 MJ? 一.Midjourney(MJ)是什么? Midjourney是一款使用文字描述来生成高质量图像的AI绘画工具.这篇文章主要介绍了Mi ...

  3. java 实现逻辑分页

    //逻辑分页PageModel model = new PageModel();long total = list.size();model.setTotal(total);model.setPage ...

  4. [C++核心编程] 4.3、类和对象-C++对象模型和this指针

    文章目录 4.3 C++对象模型和this指针 4.3.1 成员变量和成员函数分开存储 4.3.2 this指针概念 4.3.3 空指针访问成员函数 4.3.4 const修饰成员函数 4.3 C++ ...

  5. 解密Prompt系列6. lora指令微调扣细节-请冷静,1个小时真不够~

    上一章介绍了如何基于APE+SELF自动化构建指令微调样本.这一章咱就把微调跑起来,主要介绍以Lora为首的低参数微调原理,环境配置,微调代码,以及大模型训练中显存和耗时优化的相关技术细节 标题这样写 ...

  6. Yolov5 根据自己的需要更改 预测框box和蒙版mask的颜色

    1.首先找到项目中 utils/plots.py 文件,打开该代码 将原来的 Colors类注释掉(或删掉),改成如下Colors类 class Colors: def __init__(self): ...

  7. 2022-11-15:这里有 n 个航班,它们分别从 1 到 n 进行编号。 有一份航班预订表 bookings , 表中第 i 条预订记录 bookings[i] = [firsti, lasti,

    2022-11-15:这里有 n 个航班,它们分别从 1 到 n 进行编号. 有一份航班预订表 bookings , 表中第 i 条预订记录 bookings[i] = [firsti, lasti, ...

  8. 2022-06-30:以下golang代码输出什么?A:0;B:2;C:运行错误。 package main import “fmt“ func main() { ints := make

    2022-06-30:以下golang代码输出什么?A:0:B:2:C:运行错误. package main import "fmt" func main() { ints := ...

  9. windows10 docker desktop与本机数据拷贝

    目录 前景提示 一.构建环境 二.安装测试需要的nginx 三. docker文件拷贝到windows本地 总结 前景提示 发现只有docker关于docker拷贝linux内部文件的命令,但是,对于 ...

  10. vue核心

    VUE简介 vue--一套用于构建用户界面的渐进式JavaScript框架 vue特点 采用组件化模式--提高代码复用率--让代码更好维护 声明式编程--让编码人员无需直接操作DOM--提高开发效率 ...