编写一个能够计算从1到a的所有整数之和、从1到b的所有整数平方和以及从1到c的所有整数立方和的程序,如何实现?
时间: 2024-12-14 14:18:59 浏览: 16
要编写一个C++程序,用于计算三个不同区间(从1到a、从1到b和从1到c)内整数的和、平方和以及立方和,你可以创建一个函数,接收每个区间的上限作为参数,然后分别计算这三个值。以下是一个简单的实现:
```cpp
#include <iostream>
// 函数模板,计算给定范围内数字的和
template <typename T, typename UnaryOperator>
T sumRange(T start, T end, UnaryOperator op) {
T result = 0;
for (T i = start; i <= end; ++i) {
result += op(i);
}
return result;
}
int main() {
int a, b, c;
std::cout << "Enter the upper limit for range a: ";
std::cin >> a;
std::cout << "Enter the upper limit for range b: ";
std::cin >> b;
std::cout << "Enter the upper limit for range c: ";
std::cin >> c;
// 计算三个范围内的和、平方和和立方和
long long sum_a = sumRange(1, a, static_cast<long long>(std::numeric_limits<int>::max()));
long long square_sum_b = sumRange(1, b, [](int x) { return x * x; });
long long cube_sum_c = sumRange(1, c, [](int x) { return x * x * x; });
std::cout << "Sum of numbers from 1 to " << a << ": " << sum_a << "\n";
std::cout << "Square of numbers from 1 to " << b << ": " << square_sum_b << "\n";
std::cout << "Cube of numbers from 1 to " << c << ": " << cube_sum_c << "\n";
return 0;
}
```
这个程序首先定义了一个通用模板函数`sumRange`,接受一个开始和结束范围以及一个操作符。在`main`函数中,我们使用`std::cin`获取用户输入的三个上限值,然后调用`sumRange`函数分别计算各区间内整数的和、平方和和立方和。
注意这里我们使用`long long`类型来存储结果,因为整数的乘方可能会超出`int`类型的范围。
阅读全文