设为首页 加入收藏

TOP

3.2.2 for循环的变体(2)
2013-10-07 16:07:18 来源: 作者: 【 】 浏览:63
Tags:3.2.2 for 循环 变体

3.2.2  for循环的变体(2)

示例说明

在for循环的初始化部分创建并初始化两个变量,然后在递增部分将它们递增。可以创建任意多的变量,只要它们具有相同的类型即可。

也可以在第二个表达式中指定多个以逗号分开的条件,该表达式是for循环的测试部分,决定着循环是否应该继续,但它一般没有用,因为只有最右边的条件影响循环结束的时间。

变量i每递增一次,变量power的值就通过与自身相加而倍增。这样将产生我们所期待的2的幂值,因此程序产生下面的输出。

  1.  0                     1  
  2.  1                     2  
  3.  2                     4  
  4.  3                     8  
  5.  4                    16  
  6.  5                    32  
  7.  6                    64  
  8.  7                   128  
  9.  8                   256  
  10.  9                   512  
  11. 10              1024  

在第2章介绍的setw()操作符用来精确地对齐输出。我们已经嵌入了iomanip头文件,还为std名称空间中的setw名称添加了using声明,因此可以不加限定名来使用setw()。

试一试:无穷for循环

如果省略为for循环指定测试条件的第二个控制表达式,则该表达式的值将被假定为true,因此循环将无限期继续,除非提供从循环中退出的其他手段。事实上如果愿意,则可以省略for后面圆括号中的所有表达式。这样做可能看起来没有用处,但实际上恰恰相反。我们会经常遇到需要多次执行某个循环的情况,但预先不知道需要的循环次数。请看下面的程序:
 

  1. // Ex3_10.cpp  
  2. // Using an infinite for loop to compute an average  
  3. #include <iostream> 
  4. using std::cin;  
  5. using std::cout;  
  6. using std::endl;  
  7. int main()  
  8. {  
  9. double value(0.0);                          // Value entered stored here  
  10. double sum(0.0);                                // Total of values accumulated here  
  11. int i(0);                                   // Count of number of values  
  12. char indicator('n');                        // Continue or not  
  13. for(;;)                                         // Indefinite loop  
  14. {  
  15. cout << endl 
  16. << "Enter a value: ";  
  17. cin >> value;                           // Read a value  
  18. ++i;                                    // Increment count  
  19. sum += value;                           // Add current input to total  
  20. cout << endl 
  21. << "Do you want to enter another value (enter y or n)  ";  
  22. cin >> indicator;                       // Read indicator  
  23. if (('n' == indicator) || ('N' == indicator))  
  24. break;                              // Exit from loop  
  25. }  
  26. cout << endl 
  27. << "The average of the " << i 
  28. << " values you entered is " << sum/i << "."  
  29. << endl;  
  30. return 0;  
  31. }  

示例说明

该程序计算任意数量的值的平均值。在输入每个值之后,需要输入一个字符y或n,来指示是否想输入另一个值。执行该示例的典型输出如下:
 

  1. Enter a value: 10  
  2. Do you want to enter another value (enter n to end)  y  
  3. Enter a value: 20  
  4. Do you want to enter another value (enter n to end)  y  
  5. Enter a value: 30  
  6. Do you want to enter another value (enter n to end)  n  
  7. The average of the 3 values you entered is 20.  

在声明并初始化要使用的变量之后,进入一个未指定任何表达式的for循环,因此没有关于循环结束条件的规定。紧跟其后的语句块是重复执行的循环主体。

循环块完成3个基本动作:

读取某个值

将从cin读取的值与sum相加

检查用户是否想继续输入值

循环块中的第一个动作是提示用户输入一个值,然后将其读入变量value。输入的值与sum相加,同时计数器i递增。在累加sum中的值之后,程序询问用户是否想输入另一个值,并提示用户输入y,如果已经结束就输入n。输入的字符存储在变量indicator中,该变量在if语句中用于测试输入的字符是否是n或N。如果既不是n也不是N,则循环继续;否则执行break。循环中break的作用类似于它在switch语句中的作用。在这种情况下,break将控制权传递给循环块的右大括号后面的语句,使循环立即结束。

最后,输出输入值的个数以及将sum除以i后得到的平均值。当然,计算之前i被升级为double类型,参见第2章关于类型强制转换的讨论。

1. 使用continue语句

continue语句可以简明地写成下面的形式:

  1. continue; 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇3.2.2 for循环的变体(1) 下一篇3.2.2 for循环的变体(3)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·用 C 语言或者限制使 (2025-12-25 08:50:05)
·C++构造shared_ptr为 (2025-12-25 08:50:01)
·既然引用计数在做 GC (2025-12-25 08:49:59)
·Java 编程和 c 语言 (2025-12-25 08:19:48)
·. net内存管理宝典这 (2025-12-25 08:19:46)