设为首页 加入收藏

TOP

2.4.8 陷阱:无限循环
2013-10-07 14:57:39 来源: 作者: 【 】 浏览:68
Tags:2.4.8 陷阱 无限 循环

2.4.8  陷阱:无限循环

只要while之后的布尔表达式为true,while或do-while循环就不会终止。布尔表达式通常包含一个将由循环主体更改的变量。变量应不断更改,最终使布尔表达式求值为false,从而终止循环。然而,假如不小心让布尔表达式始终为true,循环就会一直运行。这种循环称为无限循环。

首先描述一个能终止的循环。以下C++(www.cppentry.com)代码输出小于12的所有正偶数。也就是说,它将逐行输出数字2,4,6,8和10,然后循环终止:

  1. x = 2;  
  2. while (x != 12)  
  3. {  
  4.     cout << x << endl;  
  5.     xx = x + 2;  
  6. }  
  7.  

每次循环迭代,x的值都递增2,直到变成12。此时,单词while之后的布尔表达式不再为true,所以循环结束。

现在假设要输出小于12的奇数,而不是偶数。你可能错误地认为只需这样修改初始化语句:

  1. x = 1

但这是错误的,它会导致无限循环。因为x的值会从11变成13,永远不等于12,所以循环永远不会终止。

用==或!=检查一个数来终止循环,很容易出现无限循环问题。处理数字时,更安全的做法始终是测试它是否已超过了一个值。例如,将前面while循环的第一行改为以下语句,就可将x初始化为任意数字,循环始终都能正常终止:

  1. while (x < 12

无限循环的程序不能自动停止,除非强行终止。初学编程(www.cppentry.com)的读者可能写出含有无限循环的程序,所以最好学会怎样强行终止程序。强行终止程序的方法因系统而异。在很多系统上,按住键盘上的Control+C(按Ctrl键的同时按C键)就可以终止程序。

自测题

28.以下代码的输出是什么(假定它们已嵌入一个正确的程序,而且x已声明为int类型)?

  1. x = 10;   
  2. while (x > 0)  
  3. {  
  4.     cout << x << endl;  
  5.     xx = x - 3;  
  6. }  

29.在上一题中,如果将>替换为<,会输出什么?

30.以下代码的输出是什么(假定它们已嵌入一个正确的程序,而且x已声明为int类型)?

  1. x = 10;   
  2. do  
  3. {  
  4.     cout << x << endl;  
  5.     xx = x - 3;  
  6. } while (x > 0);  

31.以下代码的输出是什么(假定它们已嵌入一个正确的程序,而且x已声明为int类型)?
  1. x = -42;   
  2. do  
  3. {  
  4.     cout << x << endl;  
  5.     xx = x - 3;  
  6. } while (x > 0);  

32.while语句和do-while语句有何重要区别?

33.以下代码的输出是什么(假定它们已嵌入一个正确的程序,而且x已声明为int类型)?

  1. x =10;   
  2. while (x > 0)  
  3. {  
  4.     cout << x << endl;  
  5.     xx = x + 3;  
  6. }  

34.写一个完整的C++(www.cppentry.com)程序,使其逐行输出1~20的整数。该程序不执行别的任务。
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2.4.7 编程实例:信用卡余额 下一篇2.5.3 为常量命名

评论

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