求s=1!+2!+3!+……+n!的和n小于50

求s=1!+2!+3!+……+n!的和从键盘输入n得值(n小于50),并输出运行结果

这个问题用两层的for循环就可以搞定的嘛,例如下面这个代码:

#include <stdio.h>
 
int main() {
    int n, i, j;
    long long s = 0, f = 1;
    printf("请输入n的值:");
    scanf("%d", &n);
    for (i = 1; i <= n; i++) {
        f = 1;
        for (j = 1; j <= i; j++) {
            f *= j;
        }
        s += f;
    }
    printf("%d的阶乘之和为%lld\n", n, s);
    return 0;
}
 

#include <stdio.h>

int main() {
    int n;
    long long sum = 0;
    long long factorial;

    scanf("%d", &n);
    if (n > 50) {
        return 0;
    }

    factorial = 1;
    for (int i = 1; i <= n; i++) {
        factorial = factorial * i;
        sum += f;
    }

    printf("sum=%ld", sum);
    return 0;
}

50!用long long int 会溢出。