求1~100的阶乘累加和

给定一个正整数n(n<=100),计算1!+2!+3!+……+n!的和值。

#include <stdio.h> 
#include <stdlib.h> 
long long g(long long n) 
{ long long i,m=1; 
for(i=1;i<=n;i++) 
m=m*i; 
return m; }
 /* run this program using the console pauser or add your own getch, system("pause") or input loop */ 
int main(int argc, char *argv[]) { 
long long sum=0,n,i; 
scanf("%lld",&n); 
for(i=1;i<=n;i++) 
sum=sum+g(i); 
printf("%lld",sum); 
return 0; }

我是这样写的,但是这样算不到100!,会出现数据溢出,好像可以用数组,但是我不太清楚思路

阶乘直接在循环内实现,不用另定义函数:

#include <stdio.h> 

int main()
{ 
    long long sum=0,t=1,n,i; 
    scanf("%lld",&n); 
    for(i=1;i<=n;i++){
        t *= i;
        sum += t;
    }
    printf("%lld",sum); 
    
    return 0; 
}

用 double

#include <stdio.h> 
#include <stdlib.h> 
double g(double n) 
{ 
    double i,m=1;
    for(i=1;i<=n;i++) 
        m=m*i; 
    return m; 
}
 /* run this program using the console pauser or add your own getch, system("pause") or input loop */ 
int main(int argc, char *argv[]) 
{ 
    double sum=0;
    int n,i; 
    scanf("%d", &n); 
    for(i=1; i<=n; i++) 
        sum=sum+g(i); 
    printf("%lf",sum); 
    return 0; 
}