分支和循环(中)

本文详细解释了C语言中的break和continue关键字在while、for和do-while循环中的应用,包括它们的作用和示例。同时讨论了循环嵌套和如何找出100~200之间的素数,以及goto语句的使用及其注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.break和continue语句

在循环过程中如果某些状况发生时需要提前终止循环,c语音中提供了break和continue两个关键字,就是应该到循环中的。

  • break的作用是用于永久终止循环,只要break执行就会直接跳出循环,继续往后执行。
  • continue的作用是跳过本次循环continue后边的代码,在for循环和while循环中有所差异。

1.1 while循环中的break和continue

1.1.1break举例

打印了1,2,3,4后,当i等于5的时候,循环就终止,不在打印,不在循环。

所以break的作用就是永久的终止循环,只要break被执行,break外的第一层循环就终止了。

那我们以后在循环中,想在某种情况下终止循环,则可以使用break来完成我们想要的效果。

1.1.2 continue举例

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

上面的代码如果把break换成continue会是怎样的结果呢?

int main()
{  int i = 1;
  while(i <= 10)
  {
      if(i == 5)
        continue;
         //当i等于5后就执行continue,直接跳过continue的代码,去循环的判断的地方
         //因为这里跳过了i=i+1,所以i一直为5,程序陷入死循环      
      printf("%d",i);
      i++;
  }

    return 0;
}

到这里我们就能分析出来,continue可以帮助我们跳过某一次循环continue后边的代码,直接到循环判断部分,进行下一次循环判断,如果循环的调整是在continue后边的话,可能会造成死循环。

1.2 for循环中的break和continue

1.2.1 break举例

其实和while循环中的break一样,for循环中break也是用于终止循环的,不管循环还需要循环多少次,只要执行到了break,循环就彻底终止。

break的作用是永久终止循环,未来我们在某个条件发生的时候,不想在继续循环的时候,就可以使用break来完成。

1.2.2 continue举例

上面的代码,如果把break换成continue会是怎样的结果呢?

所以在for循环中continue的作用就是跳出本次循环中continue后的代码,直接去到循环的调整部分。未来当某个条件发生的时候,本次循环无需再执行后续某些操作的时候,就可以使用continue来实现。

在这里我们也可以对比一下while循环和for循环中continue的区别:

1.3 do while循环中的break和continue

do while语句中的break和continue的作用和while的作用几乎是一模一样,大家可以自行测试体会。

2. 循环的嵌套

前面学习了三种循环while,do while,for,这三种循环往往会嵌套在一起才能更好的解决问题,就是我们所说的:嵌套循环,这了我们看一个例子。

2.1 练习

找出100~200之间的素数,并打印在屏幕上。

注:素数又称质数,只能被1和本身整除的数字

2.2 题目解析:

  1. 要从100~200之间找出素数,首先得有100~200之间的数,这里可以使用循环解决。
  2. 假设要判断i是否为素数,需要拿2~i-1之间的数字去试除i,需要产生2~i-1之间的数字,也可以使用循环解决。
  3. 如果2~i-1之间没有数字能整除i,则i不是素数,如果不能整除,则i是素数。

3. goto语句

c语言提供了一种非常特别的语法,就是goto语句和跳转标号,goto语句可以实现在同一个函数内跳转到设置好的标号处。

例如:

goto语句如果使用的不当,就会导致在函数内部随意乱跳转,打乱程序的执行流程,所以我们的建议是能不用尽量不去使用;但是goto语句也不是一五是处,在多层循环的代码中,如果想快速跳出使用goto就非常的方便。

for(...)
{
   
    for(...)
    {
       for(...)
       {

            if(disaster)
               goto error;
         }
    
      }
}
  

   error:

本来for循环想提前退出得使用break,一个break只能跳出一层for循环,如果3层循环嵌套就得使用3个break才能跳出循环,所以这种情况下使用goto语句更快捷。

在机器人操作系统(ROS)中,机器视觉是机器人感知理解周围环境的关键技术。robot_vision功能包专注于这一领域,集成了多种视觉处理技术,包括摄像头标定、OpenCV库应用、人脸识别、物体跟踪、二维码识别物体识别,极大地拓展了ROS在视觉应用方面的能力。 摄像头标定:作为机器视觉的基础,摄像头标定用于消除镜头畸变并获取相机的内参外参。在ROS中,camera_calibration包提供了友好的用户界面算法,帮助计算相机参数矩阵,为后续的图像校正三维重建提供支持。 OpenCV:OpenCV是一个广泛使用的开源计算机视觉库,在ROS中扮演着重要角色。robot_vision功能包可能包含OpenCV的示例代码节点,涵盖图像处理、特征检测、模板匹配图像分割等功能,这些功能对机器人视觉系统至关重要。 人脸识别:ROS中的人脸识别结合了图像处理机器学习技术。robot_vision可能集成了基于OpenCV的人脸检测算法,如Haar级联分类器或Adaboost方法,甚至可能包含深度学习模型(如FaceNet或SSD),帮助机器人实现人脸的识别跟踪,提升人机交互能力。 物体跟踪:物体跟踪使机器人能够持续关注并追踪特定目标。在ROS中,通常通过卡尔曼滤波器、粒子滤波器或光流法实现。robot_vision功能包可能包含这些算法的实现,助力机器人完成动态目标跟踪任务。 二维码识别:二维码是一种高效的信息编码方式,常用于机器人定位导航。ROS中的二维码包可用于读取解析二维码,而robot_vision可能进一步封装了这一功能,使其更易于集成到机器人系统中。 物体识别:作为机器视觉的高级应用,物体识别通常涉及深度学习模型,如YOLO、SSD或Faster R-CNN。robot_vision功能包可能包含预训练的模型对应的ROS节点,使机器人能够识别环境中的特
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值