在C语言中,计算一个正整数n的阶乘可以通过多种方法实现,以下是几种常见的方法:
方法一:使用for循环
```c
include int main() { int n, i; unsigned long long factorial = 1; printf("请输入一个正整数:"); scanf("%d", &n); if (n < 0) { printf("错误!负数没有阶乘。\n"); } else { for (i = 1; i <= n; i++) { factorial *= i; } printf("%d 的阶乘 = %llu\n", n, factorial); } return 0; } ``` 方法二:使用while循环 ```c include int main() { int n, i = 1; unsigned long long factorial = 1; printf("请输入一个正整数:"); scanf("%d", &n); if (n < 0) { printf("错误!负数没有阶乘。\n"); } else { while (i <= n) { factorial *= i; i++; } printf("%d 的阶乘 = %llu\n", n, factorial); } return 0; } ``` 方法三:使用递归 ```c include long factorial(int n) { if (n == 1) return 1; else return n * factorial(n - 1); } int main() { int n; printf("请输入一个正整数:"); scanf("%d", &n); printf("%d! = %ld\n", n, factorial(n)); return 0; } ``` 注意事项 当n较大时,阶乘结果可能超出`int`类型的范围,因此可能需要使用`long long`或`unsigned long long`类型来存储结果。 输入负数时,程序应提示错误信息,因为负数没有阶乘。 递归方法虽然简洁,但是当n较大时可能会导致栈溢出。 请根据您的需要选择合适的方法进行计算。