编写一个程序,接受一个正整数 n 作为输入,然后计算并输出其阶乘(n!),要求结果为 long long 类型。如何实现这个功能?
时间: 2024-10-28 12:11:21 浏览: 17
在许多编程语言中,计算一个数的阶乘通常是通过循环或者递归的方式。以下是使用 C++ 实现的一个示例:
```cpp
#include <iostream>
using namespace std;
// 定义一个函数来计算阶乘,返回值类型是 long long
long long factorial(int n) {
if (n == 0 || n == 1) { // 阶乘的基本情况,0和1的阶乘都是1
return 1;
} else {
return n * factorial(n - 1); // 递归计算阶乘
}
}
int main() {
int n;
cout << "请输入一个正整数: ";
cin >> n;
// 确保输入的是正整数
if (cin.fail() || n < 0) {
cerr << "错误: 输入应为非负整数.\n";
return 1;
}
long long result = factorial(n);
cout << "阶乘 (" << n << "!): " << result << endl;
return 0;
}
```
在这个程序中,`factorial` 函数是一个递归函数,如果 `n` 是 0 或者 1,则直接返回 1;否则,它会调用自身来计算 `n-1` 的阶乘,并将结果乘以 `n`。
相关问题
C语言编写一个程序,计算s=1!+2!+3!+…+n!。其中!为阶乘运算,n由输入决定。 输入格式: 输入正整数n。 输出格式: 输出1!+2!+3!+…+n!的值。
```c
#include <stdio.h>
int main()
{
int n, i;
long long s = 1; // 注意阶乘的结果可能会很大,使用long long类型
printf("请输入正整数n:");
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
s *= i; // 计算阶乘
printf("%d! = %lld\n", i, s); // 输出每个数的阶乘
}
printf("1! 2! 3! … %d! = %lld\n", n, s); // 输出总结果
return 0;
}
```
编写一个c语言程序,要求用户输入一个正整数 n,计算并输出 1 到 n 的阶乘。
编写一个C语言程序来计算并输出1到n的阶乘,你可以使用递归或循环来实现。以下是递归版本的示例:
```c
#include <stdio.h>
unsigned long long factorial(int n) {
// 阶乘的基本情况:0和1的阶乘都是1
if (n == 0 || n == 1)
return 1;
else
// 递归调用,将当前数乘以前面数的阶乘
return n * factorial(n - 1);
}
int main() {
int n;
printf("请输入一个正整数 n:");
scanf("%d", &n);
// 检查输入是否合法
if (n < 0) {
printf("错误:输入的值不能为负数。\n");
} else {
unsigned long long result = factorial(n);
printf("1 到 %d 的阶乘是:%llu\n", n, result);
}
return 0;
}
```
在这个程序中,`factorial`函数用于递归计算阶乘,而`main`函数负责获取用户的输入,并显示结果。
阅读全文