题目

封装一个独立的函数计算整数 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