输入一个正整数n,输出n的阶乘,也就是n*(n-1)*(n-2)*…*2*1连乘的结果。 例如5的阶乘是5*4*3*2*1=120。 注意:int类型范围不够大时可以考虑long long类型 输入输出格式 输入格式 一个整数n,0<=n<=18 输出格式 一个整数
时间: 2023-08-03 16:06:59 浏览: 396
以下是使用 C++ 编写的解答代码:
```c++
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
long long ans = 1; // 注意使用 long long 类型
for (int i = 2; i <= n; i++) {
ans *= i;
}
cout << ans << endl;
return 0;
}
```
代码思路:
1. 首先读入一个整数 n。
2. 声明一个变量 ans 用于记录阶乘的结果,初始值为 1。
3. 循环计算阶乘,从 2 到 n 逐个相乘。
4. 输出 ans 即可得到 n 的阶乘。
相关问题
输入一个正整数n输出n的阶乘
要计算一个正整数 n 的阶乘(factorial),你可以使用递归或循环的方法。这里我提供两种方法:
**1. 使用递归:**
```c
#include <stdio0.h>
unsigned long long factorial(int n) {
if (n == 0 || n == 1) { // 基线条件
return 1;
} else {
return n * factorial(n - 1); // 递归调用
}
}
int main() {
int n;
printf("Enter a positive integer: ");
scanf("%d", &n);
if (n >= 0) {
unsigned long long result = factorial(n);
printf("The factorial of %d is %llu\n", n, result);
} else {
printf("Invalid input! Please enter a positive number.\n");
}
return 0;
}
```
**2. 使用循环:**
```c
#include <stdio.h>
unsigned long long factorial(int n) {
unsigned long long fact = 1;
for (int i = 1; i <= n; ++i) {
fact *= i;
}
return fact;
}
int main() {
int n;
printf("Enter a positive integer: ");
scanf("%d", &n);
if (n >= 0) {
unsigned long long result = factorial(n);
printf("The factorial of %d is %llu\n", n, result);
} else {
printf("Invalid input! Please enter a positive number.\n");
}
return 0;
}
```
这两种方法都可以有效地计算阶乘,但请注意,当 n 很大时,可能超过 `unsigned long long` 类型的最大值,可能导致溢出错误。对于非常大的数值,可能需要使用支持大数运算的数据结构或库。
python输入一个正整数 n,输出其阶乘值
好的,可以使用 Python 的循环结构来求解,具体实现如下:
```python
n = int(input("请输入正整数n:"))
factorial = 1
for i in range(1, n+1):
factorial *= i
print("%d 的阶乘为 %d" % (n, factorial))
```
以上代码中,我们首先使用 `input` 函数获取用户输入的正整数 `n`,然后使用 `for` 循环结构遍历 `1` 至 `n` 的所有整数,并且将这些整数依次乘到变量 `factorial` 中,最后输出 `n` 的阶乘值。
阅读全文