以计蒜客上面求 10000 以内阶乘为例
这里附上题目的链接: 我是链接
.
.
.
10000 以内阶乘,在 C语言中没有类型可以以保存这么大的数,所以我们可以用数组来存它,int a[10005] ;这里 10005 只是习惯,当然,也可以用斯特灵公式来算 a 数组的大小

斯特灵公式
斯特灵公式

下面附上代码:
代码注释了,不说话了。


#include <stdio.h>
int a[100000];
int main() {
    int n, i, j;
    scanf("%d", &n);
    //用来表示之前阶乘的位数,初始化一位数
    int temp = 1;
    //初始相乘的数也为一
    a[0] = 1;
    //一层循环,使下一个数和之前所乘的数的每一位数相乘
    //注:这层循环以后,a 数组中每一位数都不一定是一个一位数 
    for (i = 2; i <= n; i++) {
        for (j = 0; j < temp; j++) {
            a[j] *= i ;        
        }                 
        //这层循环使得 a 数组每个数都是个一位数
        for (j = 0; j < temp; j++) {
            a[j + 1] += a[j] / 10;  
            a[j] %= 10;  
        }
        //判断最高位,进行进位
        if (a[j] > 0) {
            while (a[j] > 9) {
                a[j + 1] += a[j] / 10;
                a[j] %= 10;   
                j++;
            }
        // j 当前的值可表示为求完一轮阶乘的位数,将 j 传递给 temp!
            temp = j + 1;
        }
    }
    //从后往前依次输出
    for (i = temp - 1; i >= 0; i--)
        printf("%d", a[i]);
    printf("\n");
    return 0;
}