long double 改为 double,
%d 改为 %lf
#include
int main()
{
double s = 0, t = 1, n;
for (n = 1; n <= 20; n++)
{
t *= n;
s += t;
}
printf("1!+2!+3!+...+20! = %.0lf\n",s);
return 0;
}
// 输出:1!+2!+3!+...+20! = 2561327494111820288
另外,你的程序求的是 19!。
溢出整数范围而已。
long double 改为long long,最后printf用llf ,别问为什么,我也不知道,程序硬性要求,int用%d,long用ld,long long 用lld
输出控制符,你们老师应该讲过的。
printf("1!+2!+3!+...+20!=%d\n",s);
改成
printf("1!+2!+3!+...+20!=%.0lf\n",s);
double输出的时候不是%d 是 lf