双循环的
#include <stdio.h>
void main()
{
int i,j;
double k=1,s=0;
for(i=1;i<=20;i++)
{
for(j=1;j<=i;j++)
k=k*j;
s=s+k;
}
printf("%1!+2!+3!+4!...+20!=%.0f\n",s);
}
单循环的
#include <stdio.h>
int main()
{int i;
double s=0,k=1;
for(i=1;i<=20;i++)
{
k=k*i;
s=s+k;
}
printf("1!+2!+3!+4!...+20!=%.0f\n",s);
}
开始double k=1了啊
追答开始是K=1,可是每次求阶乘之前,你不重置1,那结果不是一直被累加了吗?比如你1*2=2,下次本来应该求的是1*2*3,但是由于你没有重新置1,那第二轮的时候,k的初始值不就是2了吗?那第二轮执行完,结果不是成了2*1*2*3了吗
双循环中,j++循环时计算阶乘的,要在之前初始化k=1, 就是
double k,s=0.0L;