当前位置: 首页 > news >正文

C语言循环的嵌套、比较、break语句,continue语句

 while、do-while、for、goto一般只是跳转程序执行的流程,严格意义上,goto算不上循环。
1、循环的嵌套
一个循环体内又包含另外一个完整的循环体结构,称为循环的嵌套,也就是循环套循环。
int i,j,k;
     for(i=1;i<=9;i++)  //循环变量取值范围 = 1...9;
     {
      for(j=1;j<=i;j++)   //循环变量取值范围j = 1...i;
      {
       k=i*j;
       printf("%d*%d=%d\n",i,j,k);
      }
     }
     printf("\n");
2、几种循环语句的比较
goto\while\do-while\for
a)、多数情况下,这些 循环之间可以相互代替,但是 不提倡使用 goto循环,因为goto循环 破坏了结构化程序设计,增加了程序的复杂性。goto可以说不叫循环,是一个 具有跳转功能的语句
b)、while循环和for循环,是 先判断表达式的值, 后执行语句。而do-while循环是 先执行语句, 后判断表达式的值,所以do-while循环体内的一系列语句至少被执行一次。
c)、对while,do-while,for这三种循环,可以用break语句跳出循环,用continue语句结束本次循环。对于goto语句和if语句构成的循环,不能用break和continue语句进行控制。
3、break语句
switch(k)
{
 case 1:
 ............
break;   //这里表示跳出switch语句
 case 2:
 ............
break;
default:
.............
break;
}
break还可以用三种循环结构:while,do-while,for; 用于跳出循环体,就是 提前结束循环,接着 执行循环后面的语句。
例题:计算1+2+。。。+100的值,和应该是5050,但是当和的值达到4000时,退出循环。
int i,sum=0;
     for(i=1;i<=100;i++)
     {
          sum=sum+i;
          if(sum>=4000)
          {
               break; //跳出循环
          }
     }
     printf("sum=%d\n",sum);
     printf("i=%d\n",i);
切记
break语句 不能用于循环语句和switch语句 之外的任何地方。并且break语句出现在switch中的时候, 是用于跳出switch语句,而不是跳出循环。
break语句 只能跳出break语句 所在的( 包着该break语句的循环语句 这层循环
例如:
int i,j,k;
for(i=1;i<=9;i++)
{
 for(j=1;j<=i;j++)
  {
    k=i*j;
    printf("%d*%d=%d\n",i,j,k);
    break;   //这里跳出循环跳到 printf("\n");
  }
  printf("\n");
  break;   //跳出了外面的循环,跳到printf("出来了\n");
}
printf("出来了\n");
4、continue语句
continue只用在三种循环 while, do-while, for 结构的语句体中, 不能用于switch
continue的作用结束 次循环,跳过循环体中 下面尚未执行的语句,接着进行下一次是否执行循环的判断(而是判断下次循环是否执行)。
continue语句和break语句的区别
continue语句 只结束 本次循环而不是终止整个循环的执行,而break语句是结束整个循环的执行,跳转到整个循环后边的语句去执行。
演示continue
把1到100之间的不能被3整除的数字输出
int i;
for(i=1;i<=100;i++)
{
if(i%3==0)  //能被3整除
continue;
//能够走下来肯定不满足 if(i%3==0) 也就是不能被3整除的数字会使流程走下来
printf("%d    ",i);
}

相关文章:

  • 【数据挖掘算法与应用】——数据挖掘导论
  • Java语言高级特性——泛型
  • 混合模拟退火和教与学的鸽群优化算法-附代码
  • Java Agent通灵之术
  • c语言进阶 结构体的声明
  • 深度学习Mask R-CNN等实例分割网络
  • [计算机通信网络]网桥与其作用机理举例详解
  • 缓存相关知识点
  • MyBatis映射配置文件结构、标签详解及SQL语句中参数的获取
  • 【SQL刷题】DAY22----增删改操作专项练习
  • 真实场景下的安全专家各项技能详解
  • 为何以太坊合并很重要?
  • 【docker】使用docker安装宝塔面板
  • 【正点原子STM32连载】第四十一章 无线通信实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
  • C语言 哈希表的简单实现
  • hexo+github搭建个人博客
  • css的样式优先级
  • Docker下部署自己的LNMP工作环境
  • download使用浅析
  • Intervention/image 图片处理扩展包的安装和使用
  • Java读取Properties文件的六种方法
  • java取消线程实例
  • jdbc就是这么简单
  • JS 面试题总结
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • 代理模式
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 微信小程序开发问题汇总
  • 一个完整Java Web项目背后的密码
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 用element的upload组件实现多图片上传和压缩
  • 你对linux中grep命令知道多少?
  • #pragam once 和 #ifndef 预编译头
  • (70min)字节暑假实习二面(已挂)
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (pojstep1.1.2)2654(直叙式模拟)
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (七)Knockout 创建自定义绑定
  • (十六)一篇文章学会Java的常用API
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .net 调用php,php 调用.net com组件 --
  • .net(C#)中String.Format如何使用
  • .NET程序员迈向卓越的必由之路
  • .NET导入Excel数据
  • .NET业务框架的构建
  • /etc/sudoer文件配置简析
  • @Autowired自动装配
  • @GlobalLock注解作用与原理解析
  • [ NOI 2001 ] 食物链
  • [52PJ] Java面向对象笔记(转自52 1510988116)
  • [autojs]逍遥模拟器和vscode对接
  • [Docker]十一.Docker Swarm集群raft算法,Docker Swarm Web管理工具