优质回答 回答者:polkmn145678
long double 改为 double,
%d 改为%lf#include
intmain()
{
doubles=0,t=1,n;
for(n=1;n<=20;n++)
{
t*=n;
s+=t;
}
printf("1!+2!+3!+...+20!=%.0lf\n",s);
return0;
}
//输出: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
TAGS: 负数的阶乘