C语言使用while循环计算n的阶乘
以下是一个使用while循环计算n的阶乘的C语言程序:

(图片来源网络,侵删)
#include <stdio.h>
int main() {
int n, i = 1;
long long factorial = 1; // 使用long long防止大数溢出
printf("请输入一个正整数: ");
scanf("%d", &n);
// 处理负数情况
if (n < 0) {
printf("错误:阶乘没有定义负数,\n");
return 1;
}
// 使用while循环计算阶乘
while (i <= n) {
factorial *= i;
i++;
}
printf("%d的阶乘是: %lld\n", n, factorial);
return 0;
}
代码说明:
-
变量声明:
n: 用户输入的数字i: while循环的计数器factorial: 存储阶乘结果,初始化为1
-
输入处理:
- 提示用户输入一个正整数
- 使用
scanf读取输入
-
错误处理:
检查输入是否为负数,阶乘没有定义负数
(图片来源网络,侵删) -
while循环计算阶乘:
- 循环条件:
i <= n - 每次循环将
factorial乘以i i递增
- 循环条件:
-
输出结果:
打印计算得到的阶乘值
注意事项:
- 使用
long long类型存储阶乘结果,因为阶乘增长非常快,普通int类型很容易溢出 - 对于较大的n值(如n > 20),即使使用
long long也可能溢出 - 程序假设用户输入的是整数,实际应用中可能需要添加输入验证
示例运行:
请输入一个正整数: 5
5的阶乘是: 120
请输入一个正整数: 13
13的阶乘是: 6227020800
