1.4 控制流
语句一般是顺序执行的:语句块的第一条语句首先执行,然后是第二条语句,依此类推。当然,少数程序,包括我们解决书店问题的程序,都可以写成只有顺序执行的形式。但程序设计语言提供了多种不同的控制流语句,允许我们写出更为复杂的执行路径。
1.4.1 while语句
while语句反复执行一段代码,直至给定条件为假为止。我们可以用while语句编写一段程序,求1到10这10个数之和:
- #include <iostream>
- int main()
- {
- int sum = 0, val = 1;
- // 只要val的值小于等于10,while循环就会持续执行
- while (val <= 10) {
- sum += val; // 将sum + val赋予sum
- ++val; // 将val加1
- }
- std::cout << "Sum of 1 to 10 inclusive is "
- << sum << std::endl;
- return 0;
- }
我们编译并执行这个程序,它会打印出
- Sum of 1 to 10 inclusive is 55
与之前的例子一样,我们首先包含头文件iostream,然后定义main。在main中我们定义两个int变量:sum用来保存和;val用来表示从1到10的每个数。我们将sum的初值设置为0,val从1开始。
这个程序的新内容是while语句。while语句的形式为
- while (condition)
- statement
while语句的执行过程是交替地检测condition条件和执行关联的语句statement,直至condition为假时停止。所谓条件(condition)就是一个产生真或假的结果的表达式。只要condition为真,statement就会被执行。当执行完statement,会再次检测condition。如果condition仍为真,statement再次被执行。while语句持续地交替检测condition和执行statement,直至condition为假为止。
在本程序中,while语句是这样的
- // 只要val的值小于等于10,while循环就会持续执行
- while (val <= 10) {
- sum += val; // 将sum + val赋予sum
- ++val; // 将val加1
- }
条件中使用了小于等于运算符(<=)来比较val的当前值和10。只要val小于等于10,条件即为真。如果条件为真,就执行while循环体。在本例中,循环体是由两条语句组成的语句块:
- {
- sum += val; // 将sum + val赋予sum
- ++val; // 将val加1
- }
所谓语句块(block),就是用花括号包围的零条或多条语句的序列。语句块也是语句的一种,在任何要求使用语句的地方都可以使用语句块。在本例中,语句块的第一条语句使用了复合赋值运算符(+=)。此运算符将其右侧的运算对象加到左侧运算对象上,将结果保存到左侧运算对象中。它本质上与一个加法结合一个赋值(assignment)是相同的:
- sumsum = sum + val; // 将sum + val赋予sum
因此,语句块中第一条语句将val的值加到当前和sum上,并将结果保存在sum中。
下一条语句
- ++val; // 将val加1
使用前缀递增运算符(++)。递增运算符将运算对象的值增加1。++val等价于val=val+1。
执行完while循环体后,循环会再次对条件进行求值。如果val的值(现在已经增加了)仍然小于等于10,则while的循环体会再次执行。循环连续检测条件、执行循环体,直至val不再小于等于10为止。
一旦val大于10,程序跳出while循环,继续执行while之后的语句。在本例中,继续执行打印输出语句,然后执行return语句完成main程序。
1.4.1节练习
练习1.9:编写程序,使用while循环将50到100的整数相加。
练习1.10:除了++运算符将运算对象的值增加1之外,还有一个递减运算符( )实现将值减少1。编写程序,使用递减运算符在循环中按递减顺序打印出10到0之间的整数。
练习1.11:编写程序,提示用户输入两个整数,打印出这两个整数所指定的范围内的所有整数。
欢迎来我店里看看哦~~M2魅力女装 ~ 充值