你写的这个程序主要错在p=p*i*(i-1); 当i=1时候 ,p的值就是0;后面加完结果就为1了。
其实改一个数字就行了for(i=1,p=1;i<=15;i+=2), 将i=1改成i=3
因为sum=sum+p这个是计算1!+3!... 首先sum第一步计算的就是1!+3!,sum又已经赋值为1了,所以i=1就已经计算在内了,因此开始将i初始值设定为3就对了 ,不需要判定条件了。
结果:for(i=1,p=1;i<=15;i+=2), 将i=1改成i=3
再加一个循环就可以了,sum应该初始化为0,把p=p*i*(i-1)去掉,完整代码如下:
#include
void main()
{
int i, j;
long p, sum = 0;
for (i = 1, p = 1; i <= 15; i += 2)
{
for (j = 1; j <= i; j++)
p *= j;
// p = p * i * (i-1);
sum = sum + p;
}
printf ("s=%ld\n", sum);
}
楼主阶乘的意思是:3!=1*2*3,5!=1*2*3*4*5,你估计连这个意思都没看懂,看懂了肯定要2层循环的,楼上的是正解