题目
封装一个独立的函数计算整数 n 的阶乘 n!,并在 main 函数中调用并输出结果。
输入格式:一行输入一个非负整数 n。
输出格式:输出一个整数,表示 n! 的阶乘结果,末尾换行。
数据范围与约定:0 ≤ n ≤ 20。
思路与算法
1. 函数模块化设计
将业务逻辑封装为 long long factorial(int n),参数传递 n,通过返回值交付计算结果,使代码具备高内聚性与复用性。
2. 64 位整数防溢出
20 以内的阶乘必须采用 long long 保存和返回,防止 32 位 int 发生数值溢出。
完整程序
#include <stdio.h>
// 独立阶乘函数:使用 long long 避免超过 12! 时发生 32 位整型溢出
static long long fact(int n)
{
long long r = 1;
for (int i = 2; i <= n; i++) {
r *= i;
}
return r;
}
int main(void)
{
int n;
if (scanf("%d", &n) != 1 || n < 0) {
return 1;
}
printf("%lld\n", fact(n));
return 0;
}运行示例
输入:
6输出:
720