在第2个for 之前,给 d 赋值
d=1;
64 行改成
printf("\n%lf",sum);
双精度数打印用 %lf
#include <stdio.h>
int main()
{
double d,sum,c,i;
sum = 0;
for(c=1;c<=17;c=c+2)
{
d=1;
for(i=1;i<=c;i++)
{
d=d*i;
}
sum=sum+d;
}
printf("\n%lf",sum);
return 0;
}
3!其实等于1!*2*3
5!=3!*4*5
(n+2)!=n!*(n+1)*(n+2)
你的内层循环完全没有必要,即使一定要写,也要在循环之前将d重置为1,否则越乘越大
第二个for之前先初始化d=1
这个还能优化,不用每次都从1开始算。