输入未知行数多组数据N,最后对于每一行输入数据,输出N的阶乘
时间: 2024-10-01 22:03:00 浏览: 30
编写程序,输入整数 n,计算并输出 n 的阶乘
在C++中,如果你需要接受未知行数的多组数据,并对每个数据计算其对应的数字N的阶乘,可以使用循环结构以及递归函数来实现。这里假设用户输入的是一个整数N,我们将遍历所有输入并计算阶乘。注意,对于较大的N值,阶乘可能会超出长整型的范围,所以可能需要用到`boost::multiprecision`库来进行大数运算。
以下是一个简单的示例:
```cpp
#include <iostream>
#include <vector>
#include <boost/multiprecision/cpp_int.hpp> // 使用boost库的大整数支持
boost::multiprecision::cpp_int factorial(int N) {
boost::multiprecision::cpp_int fact = 1;
for (int i = 1; i <= N; ++i) {
fact *= i;
}
return fact;
}
int main() {
int numLines;
std::cout << "请输入数据组数: ";
std::cin >> numLines;
std::vector<int> numbers(numLines);
for (size_t i = 0; i < numLines; ++i) {
std::cout << "请输入第" << (i + 1) << "行的数据: ";
std::cin >> numbers[i];
}
for (const auto& n : numbers) {
boost::multiprecision::cpp_int result = factorial(n);
std::cout << "N=" << n << " 的阶乘是: " << result << std::endl;
}
return 0;
}
```
在这个示例中,首先获取用户输入的行数,然后依次读取每行数据,并计算对应的阶乘。如果输入的N非常大,记得提醒用户可能的结果将超出正常整数范围。
阅读全文