给定一个正整数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;
}