C语言求Sn=1!+2!+3!+4!+5!+…+n!之值

2024-11-16 07:25:52
推荐回答(5个)
回答(1):

应该是类型的问题,改为int型就可以了

#include
int main()
{
   int i, n;
   int sum = 0, f = 1;
   scanf("%d", &n);
   for(i = 1; i <= n; i++)
   {
       f *= i;
       sum += f;
   }
   printf("%d\n",sum);
   return 0;
}

回答(2):

数值范围超大,可以使用64位整数处理:
#include

int main()
{
int i,n=20;
__int64 sum=0, f=1;
for (i=1;i<=n;i++) {
f *=i;
sum += f;
}
printf("%lld\n", sum);
return 0;
}
注:这是gcc的写法,不同编译器,可能写法不一样:printf("%l64d\n", sum);

回答(3):

printf("%.0f\n",sum);这一句中的"%0.f\n”中的f应该是float吧?而你要输出的是个double,double转成float肯定是被截断了,所以到20以后就不正确了。

回答(4):

数据溢出。。。。。。。。。

回答(5):

用long int