1.4.3 if语句
求1到10之间数的和,其逻辑延伸是求用户提供的两个数之间的数的和。可以直接在for循环中使用这两个数,使用第一个输入值作为下界而第二个输入值作为上界。然而, 如果用户首先给定的数较大,这种策略将会失败:程序会立即退出for循环。因此,我们应该调整范围以便较大的数作上界而较小的数作下界。这样做,我们需要一种方式来判定哪个数更大一些。
像大多数语言一样,C++(www.cppentry.com)提供支持条件执行的if语句。使用if语句来编写修订的求和程序如下:
#include <iostream> int main() { std::cout << "Enter two numbers:" << std::endl; int v1, v2; std::cin >> v1 >> v2; // read input // use smaller number as lower bound for summation // and larger number as upper bound int lower, upper; if (v1 <= v2) { lower = v1; upper = v2; } else { lower = v2; upper = v1; } int sum = 0; // sum values from lower up to and including upper for (int val = lower; val <= upper; ++val) sum += val; // sum = sum + val std::cout << "Sum of " << lower << " to " << upper << " inclusive is " << sum << std::endl; return 0; } |
如果我们编译并执行这个程序并给定输入数为7和3,程序的输出结果将为:
Sum of 3 to 7 inclusive is 25
|
这个程序中大部分代码我们在之前的举例中已经熟知了。程序首先向用户输出提示并定义四个int变量,然后从标准输入读入值到v1和v2中。仅有if条件语句是新增加的代码:
// use smaller number as lower bound for summation // and larger number as upper bound int lower, upper; if (v1 <= v2) { lower = v1; upper = v2; } else { lower = v2; upper = v1; } |
这段代码的效果是恰当地设置upper和lower。if的条件测试v1是否小于或等于v2。如果是,则执行条件后面紧接着的语句块。这个语句块包含两条语句,每条语句都完成一次赋值,第一条语句将v1赋值给lower,而第二条语句将v2赋值给upper。
如果这个条件为假——也就是说,如果v1大于v2——那么执行else后面的语句。这个语句同样是一个由两个赋值语句组成的块,把v2赋值给lower而把v1赋值给upper。
习题
习题1.14 如果输入值相等,本节展示的程序将产生什么问题
习题1.15 用两个相等的值作为输入编译并运行本节中的程序。将实际输出与你在上一习题中所作的预测相比较,解释实际结果和你预计的结果间的不相符之处。
习题1.16 编程(www.cppentry.com)输出用户输入的两个数中的大者。
习题1.17 编程(www.cppentry.com)要求用户输入一组数。输出信息说明其中有多少个负数。
< xml:namespace prefix = std />
【责任编辑:
董书 TEL:(010)68476606】