2.4.4 复合语句
经常都要求if-else语句的每个分支执行多个语句。为此,可将每个分支的语句封闭到一对花括号中,如图2.8第二个语法模板所示,图2.10则给出了一个实际的例子。花括号内的一组语句统称为复合语句。在C++(www.cppentry.com)中,复合语句被视为单个语句。凡是能使用单独一个语句的地方,都能换用一个复合语句(因此,图2.8的第二个语法模板实际是第一个模板的特例)。图2.10包含两个复合语句,它们嵌入一个if-else语句中。复合语句用粗体显示。
|
| 图2.10 在if-else语句中使用复合语句 |
if-else的语法规则要求Yes_Statement和No_Statement分别只能是一个语句。假如一个分支要执行若干个语句,就必须用花括号封闭这些语句,将它们转换成复合语句。if和else之间不用花括号封闭两个或更多的语句,编译器会报错。
自测题
21.写一个if-else语句,使其在score变量的值大于100时输出High,在score的值小于等于100时输出Low。score变量是int类型。
22.假设savings(存款)和expenses(开销)是double类型的变量,而且已经赋值。写一个if-else语句,如果savings大于等于expenses,就使savings的值减去expenses的值,结果再赋还给savings。然后,将expenses的值设为0,并输出单词Solvent(有偿还能力)。但是,如果savings小于expenses,if-else语句就只输出单词Bankrupt(破产),不更改任何变量的值。
23.写一个if-else语句,使其在变量exam(考试成绩)的值大于或等于60,而且变量programs_done的值大于或等于10的条件下,输出单词Passed(通过);否则,if-else语句输出单词Failed(没通过)。变量exam和programs_done都是int类型。
24.写一个if-else语句,使其在变量temperature(温度)大于或等于100,或者变量pressure(气压)的值大于或等于200,或者同时满足这两个条件的前提下,输出单词Warning(报警);否则,if-else语句输出单词OK(正常)。变量temperature和pressure都是int类型。
25.假设有以下二次方程式:
x2 - x - 2
描述它在什么情况下为正(也就是大于0)。换言之,你需要描述要么小于较小根(-1),要么大于较大根(+2)的一系列数字。写一个C++(www.cppentry.com)布尔表达式,使其在方程式为正时求值为true。
26.假设有以下二次方程式:
x2 - 4x + 3
描述它在什么情况下为负。换言之,你需要描述不仅大于较小根(+1),还要小于较大根(+3)的一系列数字。写一个C++(www.cppentry.com)布尔表达式,使其在方程式为负时求值为true。
27.在if-else语句中嵌入的以下cout语句将输出什么?假设已将这些代码嵌入一个完整、正确的程序中。请解释你的答案。
- a. if (0)
- cout << "0 is true";
- else
- cout << "0 is false";
- cout << endl;
-
- b. if (1)
- cout << "1 is true";
- else
- cout << "1 is false";
- cout << endl;
- c. if (-1)
- cout << "-1 is true";
- else
- cout << "-1 is false";
- cout << endl;
注意:这只是一个练习题。不应该遵循这样的编程(www.cppentry.com)风格。