☀️光天化日学C语言☀️(32)- continue 关键字 | 下一个!

🔥让天下没有难学的算法🔥

C语言免费动漫教程,和我一起打卡!
🌞《光天化日学C语言》🌞

入门级C语言真题汇总
🧡《C语言入门100例》🧡

几张动图学会一种数据结构
🌳《画解数据结构》🌳

组团学习,抱团生长
🌌《算法入门指引》🌌

竞赛选手金典图文教程
💜《夜深人静写算法》💜

一、前言

  本文作者是从 2007 年开始学 C语言 的,不久又接触了C++,基本就是 C/C++ 技术栈写了 14 年的样子,不算精通,但也算差强人意。著有《夜深人静写算法》系列,且承诺会持续更新,直到所有算法都学完。主要专攻 高中 OI 、大学 ACM、 职场 LeetCode 的全领域算法。由于文章中采用 C/C++ 的语法,于是就有不少读者朋友反馈语言层面就被劝退了,更何况是算法。
  于是,2021 年 06 月 12 日,《光天化日学C语言》 应运而生。这个系列文章主要服务于高中生、大学生以及职场上想入坑C语言的志同道合之人,希望能给祖国引入更多编程方面的人才,并且让自己的青春不留遗憾!
  这一章的主要内容是 continue 关键字。

二、人物简介

  • 第一位登场的就是今后会一直教我们C语言的老师 —— 光天。
  • 第二位登场的则是今后会和大家一起学习C语言的没什么资质的小白程序猿 —— 化日。

三、continue 关键字简介

  • continue是一个关键字,continue;是一个语句,区别就在于后者加了个分号。
  • continue;主要作用是跳过循环体中剩余的语句而强制进入下一次循环,主要用在两个地方:
      1)while/do while语句中;
      2)for语句中;
      

四、for 中的 continue

  • 对于一个字符串,我们输出时要求屏蔽一些字符,可以利用如下代码实现:
#include <stdio.h>
#include <string.h>
int main() {
    int i;
    char s[1000];
    while(scanf("%s", s) != EOF) {
	    for(i = 0; s[i]; ++i) {
	        if(s[i] == 'x') continue;     // (1)
	        printf("%c", s[i]);
	    }
	    puts("");
    }
    return 0;
} 
  • 上文中 ( 1 ) (1) (1) 的地方代表遇到字符'x'时,跳过本次循环,这样一来,它就会执行i++这个表达式,而不会执行printf("%c", s[i]);这个语句。从而起到跳过输出字符'x'的作用。

五、while 中的 continue

  • 对于 while 语句,我们是否也可以利用如下代码实现:
#include <stdio.h>
#include <string.h>
int main() {
    int i;
    char s[1000];
    while(scanf("%s", s) != EOF) {
	    i = 0;
        while(s[i]) {
	        if(s[i] == 'x') continue;     // (1)
	        printf("%c", s[i]);
	        ++i;
	    }
	    puts("");
    }
    return 0;
} 

  • 这段代码是有漏洞的,设想一下 ( 1 ) (1) (1) ,如果遇到s[i] == 'x'条件成立,那么执行continue;以后,i的值其实不会自增,这样就会导致s[i] == 'x'条件一直成立,从而导致一直循环。
  • 我们可以把代码改成如下形式:
#include <stdio.h>
#include <string.h>
int main() {
    int i;
    char s[1000];
    while(scanf("%s", s) != EOF) {
	    i = -1;                            // (1)
        while(s[++i]) {                    // (2)
	        if(s[i] == 'x') continue;
	        printf("%c", s[i]);
	    }
	    puts("");
    }
    return 0;
} 
  • ( 1 ) (1) (1) 初始化i − 1 -1 1 开始,每次循环先自增i,这样无论有没有continue;,本次循环下,i的值都已经确定自增过了,不会产生死循环的情况。

通过这一章,我们学会了:
   用 continue 来跳过本次循环;

  • 希望对你有帮助哦 ~ 祝大家早日成为 C 语言大神!

课后习题


🔥让天下没有难学的算法🔥

C语言免费动漫教程,和我一起打卡!
🌞《光天化日学C语言》🌞

入门级C语言真题汇总
🧡《C语言入门100例》🧡

几张动图学会一种数据结构
🌳《画解数据结构》🌳

组团学习,抱团生长
🌌《算法入门指引》🌌

竞赛选手金典图文教程
💜《夜深人静写算法》💜
  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

英雄哪里出来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值