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

【时时三省】(C语言基础)改变循环执行的状态

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省

以上介绍的都是根据事先指定的循环条件正常执行和终止的循环。但有时在某种情况下需要提早结束正在执行的循环操作。例如,慈善募捐,收到10万元就结束。可以用循环来处理此问题,每次输入一个捐款人的捐款数,不断累加。但是,事先并不能确定循环的次数,需要每次输入捐款数后进行累加,并检查总数是否达到10万,如果未达到,就继续执行循环,输入下一个捐款数,如果达到10万元,就终止循环。可以用break语句和continue语句来实现提前结束循环。

用break语句提前终止循环

如前所述,用break语句可以使流程跳出switch结构,继续执行switch语句下面的、个语句。实际上,break语句还可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句。例如上面统计捐款的例子,可以用以下的程序处理。

例题:

在全系1000名学生中举行慈善募捐,当总数达到10万元时就结束,统计此时捐款的人数以及平均每人捐款的数目。

编程思路:

显然应该用循环来处理。实际循环的次数事先不能确定,可以设为最大值即1000(最多会有1000人捐款),在循环体中累计捐款总数,并用if语句检查是否达到10万元,如果达到就不再继续执行循环,终止累加,并计算人均捐款数。在程序中定义变量amount,用来存放捐款数,变量total,用来存放累加后的总捐款数,变量aver,用来存放人地捐款数,以上3个变量均为单精度浮点型。定义整型变量i作为循环变量。定义符号常量SUM代表100 000。

编写程序:

运行结果:

程序分析:

for语句本来指定执行循环体1000次。在每一次循环中,输入一个捐款人的捐款数,然后把它累加到total中,如果没有if语句,则执行循环体1000次。现在设置一个if语句,在每一次累加了捐款数amount后,立即检查累加和total是否达到或超过SUM(即100000),当total > = 100000时,就执行break语句,流程跳转到循环体的花括号外,即不再继续执行剩余的几次循环,提前结束循环。

请思考此时变量i的值是什么。

结论是:

已经输入捐款数的人数因此用捐款总数total除以捐款人数,得到的就是人均捐款额aver。

break语句的一般形式为

break ;

其作用是使流程跳到循环体之外,接着执行循环体下面的语句。

注意:break语句只能用于循环语句和switch语句之中,而不能单独使用。

用continue语句提前结束本次循环

有时并不希望终止整个循环的操作,而只希望提前结束本次循环,而接着执行下次循环。这时可以用continue语句。

例题:

要求输出100 ~ 200的不能被3整除的数。

编程思路:

显然需要对100 ~ 200的每一个整数进行检查,如果不能被3整除,就将此数输出,若能被3整除,就不输出此数。无论是否输出此数,都要接着检查下一个数(直到200为止)。

不论n能否被3整除,循环的次数总是101次,不会改变。

编写程序:

运行结果:

程序分析:当n能被3整除时,执行continue语句,流程跳转到表示循环体结束的右花括号的前面(注意不是右花括号的后面)。

当然,例中循环体中也可以不用continue语句,而改用一个if语句处理,

if ( n% 3 ! = 0 ) printf ( " % d " , n );

效果也一样。在本例中用continue语句无非为了说明continue语句的作用。

continue语句的一般形式为

continue ;

其作用为结束本次循环,即跳过循环体中下面尚未执行的语句,转到循环体结束点之前,接着执行for语句中的“表达式3”(在本例中是i++),然后进行下一次是否执行循环的判定。

 

 

相关文章:

  • 大数据开发的基本流程
  • 基于DeepSeek的网络爬虫技术创新与实践应用
  • 真实趋势策略思路
  • 为AI应用打造精准度指标
  • 美团外卖霸王餐接口该如何对接?
  • 39.剖析无处不在的数据结构
  • AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年4月22日第60弹
  • [Java · 铢积寸累] 数据结构 — 数组类型 - 增 删 改 查
  • 进阶篇 第 2 篇:自相关性深度解析 - ACF 与 PACF 图完全指南
  • ProxySQL 性能调优工具推荐
  • SQL Tuning Advisor
  • SQLMesh隔离系统深度实践指南:动态模式映射与跨环境计算复用
  • BLE 6.0 六大核心特性全解析
  • python包管理器,conda和uv 的区别
  • linux驱动---视频播放采集架构介绍
  • 数据结构-树
  • python高级特性01
  • 移动通信运营商对MTU的大小设置需求
  • 【含文档+PPT+源码】基于微信小程序的健康饮食食谱推荐平台的设计与实现
  • VulnHub-DarkHole_1靶机渗透教程
  • 网上销售假冒片仔癀和安宫牛黄丸,两人被判刑
  • 特朗普:无意解雇鲍威尔,但美联储应该降低利率
  • 匈牙利总理投票反对乌克兰加入欧盟
  • 海南一季度GDP为1904.17亿元,同比增长4.0%
  • 外交部:伊朗外长阿拉格奇将于4月23日访问中国
  • ESG领跑者|每一步都向前,李宁要让可持续发展成为可持续之事