《C++入门经典(第5版•修订版)》——6.2 while循环

简介:

本节书摘来自异步社区出版社《C++入门经典(第5版•修订版)》一书中的第6章,第6.2节,作者:【美】Jesse Liberty , Rogers Cadenhead,更多章节内容可以访问云栖社区“异步社区”公众号查看。

6.2 while循环

C++入门经典(第5版•修订版)
while循环导致程序重复执行一组语句,直到开始条件为false。在关键字while后面,将一个表达式放在括号内,如果该表达式为true,就执行循环块内的语句。这些语句将重复执行,直到表达式为false。

下面的while循环显示数字0~99:
image
关键字while后跟一个放在括号内的表达式。这条语句没有以分号结尾,而循环内的语句是一个放在{和}之间的语句块。

该循环包含条件表达式x < 100。只要x小于100,就执行循环体:显示x的值,并将其加1。

x为100后,该循环将结束。

如果没有使用递增运算符的语句x++,x的值将始终为0,而循环将永远不会结束,这称为无限循环。

在程序清单6.1中,程序Thirteens使用一个while循环显示可被13整除且小于500的所有数字。

程序清单6.1 Thirteens.cpp的完整源代码
image

程序Thirteens演示了while循环的基本原理:检查指定的条件,只要该条件为true,就不断执行循环体。第7行检查条件“变量counter是否小于500”,如果该条件为true,就执行循环体。

在第9行,将变量counter递增;在第10行,使用一条if语句检查counter的当前值能否被13整除,如果能,就显示它。

当counter不再小于500时,第7行的条件将为false,这导致while循环结束,而程序将跳过第8~14行,进入第16行继续执行。

6.2.1 退出循环

break语句导致循环立即终止,而不等待条件为false。程序清单6.2所示的程序Fourteens 演示了该语句,这个程序显示前20个可被14整除的数。

程序清单6.2 Fourteens.cpp的完整源代码
image
这个程序与程序Thirteens类似,它将变量counter从0开始递增,如果它的值能被14整除(第11行),就显示它。

第8行的while条件使用了一个不同寻常的表达式:

image

由于只要条件为true,while循环就将不断执行,这个循环被设计成无限循环。

第18行的break语句用于终止循环。使用变量multiples跟踪显示了多少个可被14整除的数,如果该变量大于19,就终止循环。

警告:
如果退出条件得不到满足,诸如while(true)等无限循环可能导致程序永远执行下去。对于自身不能结束的程序,可按Ctrl+C组合键终止执行。使用while(true)时要特别小心,并仔细测试代码。
6.2.2 跳到下一次循环
另一种改变循环行为的方式是使用continue语句。在循环中遇到continue语句时,将跳过余下的语句,开始下一次循环迭代。

程序清单6.3所示的程序Fifteens显示前20个可被15整除的数,它在while循环内部使用了一条continue语句。

程序清单6.3 Fifteens.cpp的完整源代码
image

程序Fifteens使用一个while循环将变量counter递增,这与本章前面的两个程序类似。第8行的while语句导致循环不断执行,直到显示了20个可被15整除的数。

第10行将变量counter递增。

第11行使用一条if语句检查变量counter能否被15整除。如果不能,就执行第13行,这导致跳过循环的其他部分,跳转到第8行继续执行。

如果变量counter能被15整除,就不执行continue语句,而执行循环中的第15~16行,即显示counter的值,并将变量multiples递增。

正如这些循环表明的,对于同一个任务,C++经常提供了多种完成任务的方式。您可根据喜好选择使用的方式,只要编写的程序能够满足需要。

相关文章
|
9月前
|
存储 安全 编译器
【C++入门 四】学习C++内联函数 | auto关键字 | 基于范围的for循环(C++11) | 指针空值nullptr(C++11)
【C++入门 四】学习C++内联函数 | auto关键字 | 基于范围的for循环(C++11) | 指针空值nullptr(C++11)
|
10月前
|
算法 程序员 编译器
C++的四类循环分享
C++的四类循环:Entry or Exit controlled, Ranged-based or For_each
|
10月前
|
C++
C++一分钟之-循环结构:for与while循环
【6月更文挑战第18天】在C++中,`for`循环适合已知迭代次数,如数组遍历;`while`循环适用于条件驱动的未知次数循环。`for`以其初始化、条件和递增三部分结构简洁处理重复任务,而`while`则在需要先检查条件时更为灵活。常见错误包括无限循环和逻辑错误,解决办法是确保条件更新和正确判断。了解两者应用场景及陷阱,能提升代码效率和可读性。
150 6
|
10月前
|
C语言 C++ 容器
c++primer plus 6 读书笔记 第五章 循环和关系表达式
c++primer plus 6 读书笔记 第五章 循环和关系表达式
|
10月前
|
程序员 编译器 C++
探索C++语言宝库:解锁基础知识与实用技能(类型变量+条件循环+函数模块+OOP+异常处理)
探索C++语言宝库:解锁基础知识与实用技能(类型变量+条件循环+函数模块+OOP+异常处理)
70 0
|
11月前
|
算法 C++
c++循环
c++循环
69 0
|
11月前
|
C++
C++ 循环
C++ 循环
60 0
|
2月前
|
编译器 C++ 开发者
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
|
3天前
|
编译器 C++ 容器
【c++11】c++11新特性(上)(列表初始化、右值引用和移动语义、类的新默认成员函数、lambda表达式)
C++11为C++带来了革命性变化,引入了列表初始化、右值引用、移动语义、类的新默认成员函数和lambda表达式等特性。列表初始化统一了对象初始化方式,initializer_list简化了容器多元素初始化;右值引用和移动语义优化了资源管理,减少拷贝开销;类新增移动构造和移动赋值函数提升性能;lambda表达式提供匿名函数对象,增强代码简洁性和灵活性。这些特性共同推动了现代C++编程的发展,提升了开发效率与程序性能。
33 12
|
1月前
|
设计模式 安全 C++
【C++进阶】特殊类设计 && 单例模式
通过对特殊类设计和单例模式的深入探讨,我们可以更好地设计和实现复杂的C++程序。特殊类设计提高了代码的安全性和可维护性,而单例模式则确保类的唯一实例性和全局访问性。理解并掌握这些高级设计技巧,对于提升C++编程水平至关重要。
48 16

热门文章

最新文章