重生之我在21世纪学C++—循环语句

一、while 循环

1、while 语法形式

while ( 表达式 )

{

语句

}

while默认只能跟一条语句,如果有多条语句,需要用{ }将语句括起来。

2、执行流程

首先上来先执行判断表达式,如果表达式的值为 0 ,就不进入循环;如果表达式的值不为 0 ,则执行循环语句,语句执行完后再继续判断,是否进行下一次循环。

3、举例

(1)要想得到 n 的最低位,可以使用 n % 10 的运算,得到的余数就是最低位。如: 1234 % 10 得到4;

(2) 要想去掉n的最低位,找出倒数第二位,通过 n = n / 10 操作就可以去掉最低位。如:

n=1234/10 得到 123 ,123相较于1234就去掉了最低位, 123%10 就得到了倒数第二位 3 。

(3) 循环(1)和(2)两个步骤,在 n 变成 0 之前,就能到所有的位。

二、for 循环

1、for 循环语法形式

for(表达式1; 表达式2; 表达式3)

{

语句;

}

for默认只能跟一条语句,如果有多条语句,需要用{ }将语句括起来。

表达式1 用于循环变量的初始化

表达式2 用于循环结束条件的判断

表达式3 用于循环变量的调整

2、执行流程

首先执行表达式 1 :初始化循环变量,接下来执行表达式 2 的判断部分,表达式 2 的结果如果为假,就直接不进入循环;表达式 2 的结果如果为真,则执行循环语句。循环语句执行完后,再去执行表达式 3 ,调整循环变量,然后再去表达式 2 的地方执行判断,表达式 2 的结果决定循环是否继续。

整个循环的过程中,表达式 1 初始化部分只被执行 1 次 ,剩下的就是表达式 2、循环语句、表达式 3 在循环执行

3、举例

要求输出 100 以内所有 3 的倍数的和,循环变量初始化为 3 ,循环从 3 开始,循环语句中,把每次的 3 的倍数也就是 i 累加到 sum 里,循环语句结束后,循环变量每次都加 3 ,就可以直接得到下一个 3 的倍数,最后循环结束,输出 sum 即可。

4、while 和 for 对比

for 和 while 在实现循环的过程中都有初始化判断调整这三个部分,但是 for 循环的三个部分非常集中,便于代码的维护,而如果代码较多的时候,while 循环的三个部分就比较分散,所以从形式上 for 循环要更优一些。

三、do-while 循环

1、do-while 语法形式

do

{

语句;

}

while( 表达式 );

do后面默认只能跟一条语句,如果有多条语句,需要用{ }将语句括起来。

while 和 for 这两种循环都是先判断,条件如果满足就进入循环,执行循环语句,如果不满足就跳出循环;第一次如果条件都不满足,直接就不进入循环。

而 do while 循环则是先直接进入循环体,执行循环语句,然后再执行 while 后的判断表达式,表达式为真,就会进行下一次,表达式为假,则不再继续执行循环。所以 do-while 循环的循环体至少执行一次。

2、执行流程

在 do while 循环中先执行图上的 "语句",执行完语句后,在去执行 "判断表达式",判断表达式的结果是真,则继续循环,执行循环语句;判断表达式的结果是假,则循环结束。

所以在 do while 语句中循环体是至少执行一次的,这是 do while 循环比较特殊的地方。

3、举例

题目要求统计输入的数的位数,由于输入的数至少有一位,所以循环至少执行一次,所以采用 do-while 循环,当然用其他循环也可以,然后以 n 是否为 0 为判断条件,变量 count 用来统计位数(全局变量默认初始化为 0 ),跳出循环后输出 count 即可。

四、break 和 continue 语句

1、break 和 continue 举例

在循环执行的过程中,如果某些状况发生的时候,需要提前终止循环就要用到 break 和 continue 这两个关键字,来达到相应的效果。

break 的作用是用于永久的终止循环,只要 break 被执行,直接就会跳出循环,继续往循环之后执行。

continue 的作用是跳过本次循环 continue 后边的代码

注意:break 和 continue 在各个循环语句中的使用方式基本相同,这里仅以 while 循环举例。

2、break 举例

打印 1,2,3,4 后,当 i 等于 5 的时候,循环到 break 的地方终止,不再打印,不再循环。

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

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

注意:在多层嵌套的循环中也可以使用break,但是要注意,一个break只能跳出自己所在的循环, 无法一次性跳出所有的循环

3、continue 举例

注意:程序并未结束

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

同样的代码放到for循环里又有什么效果呢?

在 for 循环中,continue 跳过本次循环中 continue 后边的代码,接下来执行的是 i++,在这里循环变量得到了调整,就没有造成死循环,所以 continue 在 while 循环和 for 循环中略有差异。

相关推荐
今天又在学代码写BUG口牙几秒前
MFC 定时器轮询实现按住按钮进度条增加(鼠标悬停/长按检测)
c++·mfc·定时器·鼠标·轮询·长按事件
AIminminHu33 分钟前
OpenGL渲染与几何内核那点事-项目实践理论补充(三-1-(3):番外篇-当你的CAD打开“怪兽级”STL时:从内存爆炸到零拷贝的极致优化)
开发语言·c++·线程·多线程
j_xxx404_43 分钟前
力扣题型--链表(两数相加|两两交换链表中的节点|重排链表)
数据结构·c++·算法·leetcode·蓝桥杯·排序算法
kyle~1 小时前
FANUC 机械臂 --- 配置字
网络·c++·机器人·ros2
oldmao_20001 小时前
第八章 设计并发代码
开发语言·c++·多线程编程·并发编程
芒果披萨1 小时前
日志管理 logging
java·开发语言·c++
天若有情6732 小时前
颠覆C++传统玩法!Property属性与伪类,开辟静态语言新维度
java·c++·servlet
CylMK2 小时前
题解:P11625 [迷宫寻路 Round 3] 迷宫寻路大赛
c++·数学·算法
计算机安禾2 小时前
【数据结构与算法】第44篇:堆(Heap)的实现
c语言·开发语言·数据结构·c++·算法·排序算法·图论
tankeven2 小时前
HJ175 小红的整数配对
c++·算法