如何用C语言编程来计算指定范围(0到21)内的任意非负整数N的阶乘?请提供相应的代码实现和输入样例。
时间: 2024-12-20 07:16:04 浏览: 9
C++版本计算n阶乘末尾0的个数原理讲解及代码实现
在C语言中,我们可以使用循环结构(如for或while)来计算非负整数N的阶乘,因为递归可能会导致栈溢出对于较大的N。以下是使用for循环的一个简单示例:
```c
#include <stdio.h>
// 函数声明
unsigned long long factorial(int n);
int main() {
int N;
printf("请输入一个0到21之间的非负整数: ");
scanf("%d", &N); // 输入验证在此通常会更全面
if (N >= 0 && N <= 21) { // 检查输入是否在范围内
unsigned long long result = factorial(N);
printf("The factorial of %d is %llu\n", N, result);
} else {
printf("错误: 输入超出范围!\n");
}
return 0;
}
// 计算阶乘的函数实现
unsigned long long factorial(int n) {
unsigned long long fact = 1; // 初始化结果为1
for (int i = 1; i <= n; ++i) {
fact *= i;
}
return fact;
}
阅读全文