本章所有编程练习的工程源码可在此处下载(点击打开下载链接),供大家参考交流!
1. 编写一个要求用户输入两个整数的程序。该程序将计算并输出这两个整数之间(包括这两个整数)所有整数的和。这里假设先输入较小的整数。例如,如果用户输入的是2和9,则程序将指出2~9之间所有整数的和为44。
本题要求用户输入两个int类型的数,第一个较小,第二个较大,程序将把这两个数之间的所有整数做一个累加,并将累加结果输出。所以我们只需要使用一个for循环,并使得判断条件为从输入的较小整数到较大整数。
稍微需要注意的是对于请求用户输入,我认为最好是把较小整数和较大整数分开输入,这样也就比较方便分开储存,从而对于之后的操作都比较简便。具体算法设计请见下面代码。
代码如下:
// 5.1.cpp: 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
int main()
{
using namespace std;
int min, max;
cout << "Please enter two numbers:" << endl;
cout << "Min: ";
cin >> min;
cout << "Max: ";
cin >> max;
int sum = 0;
for (int i = min; i <= max; i++)
sum = sum + i;
cout << "The total sum of " << min << " to " << max << " is " << sum << endl;
system("pause");
return 0;
}
运行结果如下图所示:

2. 使用array对象(而不是数组)和long double(而不是long long)重新编写程序清单5.4,并计算100!的值。
本题要求用户将程序清单5.4的部分内容进行修改后计算一个阶乘。我们只需要按照题目的要求,使用array对象的方法来声明参数,声明为long double类型的数即可。至于计算100!的算法,我们使用程序清单5.4相同的思路即可,即初始化前两个数为1,从第三个数开始使用for循环,并与之前的乘积结果相乘。这里要注意该程序清单的算法是直接再使用一个for循环来循环输出不同数的阶乘,而我们这里只需要输出100的阶乘即可,所以我们将ArSize定为101,最后需要对计数的i做一个i=i-1的操作。
代码如下:
// 5.2.cpp: 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <array>
int main()
{
using namespace std;
const int ArSize = 101;
array<long double, ArSize> factorials;
int i;
factorials[1] = factorials[0] = 1;
for (i = 2; i < ArSize; i++)
factorials[i] = i * factorials[i - 1];
i = i - 1;
cout << i << "! = " << factorials[i] << endl;
system("pause");
return 0;
}
运行结果如下图所示:

3. 编写一个要求用户输入数字的程序。每次输入后,程序都将报告到目前为止,所有输入的累计和。当用户输入0时,程序结束。
本题是要求用户输入数字,程序将所有输入的数字都累加起来并输出累加结果,直到输入为0时停止。所以本题的for循环的判断条件比较不同。首先判断条件没有一个特定的初始化,其次判断是否结束的表达式不是一个变量大于小于等于一个特定数值的方式,最后每次循环之后的操作不是将一个变量的值定幅度地变大或变小。
我们来看看for循环通常的组成部分:
for(initialization; test-expression; update-expression)
body
通常情况下,初始化并不是必须的,很明显本题中就没有特定的初始化,所以initialization可以直接为空;接下来对于判决条件,本题是用户输入数字0时停止,所以test-expression就是input != 0; 其中假设input为用户输入的数字;最后对于每次循环后的更新操作,很明显就是再输入一个数字了,因此update-expression就是cin >> input。
明确了这个for循环的组成,其他部分就不难了。
代码如下:
// 5.3.cpp: 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
int main()
{
using namespace std;
int num;
int sum = 0;
cout << "Please enter your number:" << endl

本文提供了C++ Primer Plus(第六版)第5章的编程练习解答,涉及计算整数之和、阶乘计算、累加输入数字直至0、投资收益比较、图书销售统计、汽车信息输入及单词计数等多个实例,通过代码展示循环和关系表达式的应用。
最低0.47元/天 解锁文章
2091





