设为首页 加入收藏

TOP

2.4.1 一个简单的分支机制(1)
2013-10-07 14:56:24 来源: 作者: 【 】 浏览:61
Tags:2.4.1 一个 简单 分支 机制

2.4.1  一个简单的分支机制(1)

有时需要让程序根据用户的输入,从两个备选行动中选择一个。例如,假定要设计程序来计算计时员工的周薪。假定公司的薪水制度是:每周工作40小时以内,按正常工资计算;超过40小时则算加班;超出的部分按正常工资的1.5倍计算。只要员工在一周内的工作时数大于或者等于40小时,则工资计算公式如下所示:

  1. rate * 40 + 1.5 * rate * (hours - 40) 

但是,员工的工作时数也可能少于40小时。在这种情况下,上述公式会算出一个负值(要体会这一点,可将10代入hours,将1代入rate,并执行计算。结果表明,倒霉的员工领到的薪水为一个负数)。对于工作时间少于40小时的员工,正确的薪水计算公式其实是非常简单的,如下所示:
  1. rate * hours 

要同时支持这两种情况(工作时数大于或等于40小时,或者小于40小时),程序就必须能在这两个公式之间做出选择。为了计算员工的周薪,程序要采取的行动应该如下:
  1. 判断(hours > 40)是否为true 

如果是,就执行以下赋值语句:
  1. gross_pay = rate * 40 + 1.5 * rate * (hours - 40); 

如果不是,就执行以下赋值语句:
  1. gross_pay = rate * hours; 

有一个C++(www.cppentry.com)语句能专门执行这种分支行动。if-else语句会在两个备选行动之间做出选择。例如,前面讨论的周薪计算可用以下C++(www.cppentry.com)语句完成:
  1. if (hours > 40)  
  2.     gross_pay = rate * 40 + 1.5 * rate * (hours - 40);  
  3. else  
  4.     gross_pay = rate * hours;  

图2.7所示的完整程序使用了这一语句。

 
图2.7  一个if-else语句
示范对话1
  1. Enter the hourly rate of pay: $20.00  
  2. Enter the number of hours worked,  
  3. rounded to a whole number of hours: 30  
  4. Hours = 30 
  5. Hourly pay rate = $20.00  
  6. Gross pay = $600.00  

示范对话2
  1. Enter the hourly rate of pay: $10.00  
  2. Enter the number of hours worked,  
  3. rounded to a whole number of hours: 41  
  4. Hours = 41 
  5. Hourly pay rate = $10.00  
  6. Gross pay = $415.00  

图2.8总结了if-else语句的两种形式。第一种是最简单的if-else语句,第二种是2.4.4节将要讨论的主题。在第一种形式中,两个语句可以是任意可执行语句。Boolean_Expression是测试,求值结果要么为true,要么为false。通过检查这个表达式的值,就知道是否满足条件。上述if-else语句的Boolean_Expression是:
  1. hours > 40 

程序到达if-else语句时,实际执行的是两个内嵌语句之一。Boolean_Expression为true(满足条件),就执行Yes_Statement。Boolean_Expression为false(不满足条件),就执行No_Statement。注意,Boolean_Expression必须包含在圆括号内(这是C++(www.cppentry.com)的if-else语句的语法规则)。
 
图2.8  if-else语句的语法
布尔表达式是求值结果为true或false的表达式。if-else语句肯定包含一个Boolean_Expression。最简单的Boolean_Expression由两个表达式(比如数字或变量)构成,它们使用图2.9总结的某个比较操作符进行比较。注意有的操作符由两个符号构成,例如==,!=,<=和>=。注意,必须用双等号==表示相等,用!=表示不等。在两个符号构成的操作符中,两个符号之间不能有空格。编译器中用于将字符识别为C++(www.cppentry.com)名称和符号的那一部分在发现这样的一个操作符(例如!=)之后,会将程序员的真正意图传达给编译器的其他部分(例如!=意味着程序员希望测试"不等性")。执行if-else语句时,首先对要进行比较的两个表达式进行求值,再用操作符进行比较。如果比较结果为true,就执行第一个语句;否则执行第二个语句。
 
图2.8  if-else语句的语法
可用and(逻辑与)操作符(在C++(www.cppentry.com)中,表示为&&)合并两个比较。例如,假定x大于2,而且小于7,则以下布尔表达式为true(即条件满足):
  1. (2 < x) && (x < 7

用&&连接两个比较时,只有两个比较的结果都为true(两个条件都满足),整个表达式才为true;否则,整个表达式为false。

"逻辑与"操作符&&

可用逻辑与(and)操作符&&将两个简单测试合并成一个更复杂的布尔表达式。

语法(针对使用&&的布尔表达式)

  1. (Comparison_1) && (Comparison_2) 

示例(包含在一个if-else语句内)
  1. if ( (score > 0) && (score < 10) )  
  2.     cout << "score is between 0 and 10.\n";  
  3. else  
  4.     cout << "score is not between 0 and 10.\n";  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2.4.1 一个简单的分支机制(2) 下一篇2.4.5 简单的循环机制(2)

评论

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