代码如下
#include<stdio.h>
main()
{
long double s=-1,i,n,t=1;
for(n=1;n<=20;n++)
{ s=s+t;
i=n;
for(t=1;i>0;i--)
t=t*i;
}
printf("1!+2!+3!+...+20!=%d\n",s);
return 0;
}
long double 改为 double,
%d 改为 %lf
#include <stdio.h>另外,你的程序求的是 19!。
追问为什么要改为double?long double不是包括double吗?
整数为什么要用浮点%lf
for那里是n<=20 应该算的是20!吧
还有t*=t是什么意思
用 double 就够了。
如果要用 long double,也是可以的,但格式符要改为 %Lf。
你的程序算完 n = 20 后, t 是 20!,但没有加到 s 上,只加到 19!,你仔细分析一下就会明白。
输出浮点型变量要用 %f 格式符,哪怕它的小数点后面全为0。
t *= n 就是 t = t * n 的意思;
s += t 就是 s = s + t 的意思。