C语言入门题目 求高手给一下程序 我知道现在输出肯定为1,加一个条件结构应该就行,能不能帮我改改,

2025-05-04 16:48:01
推荐回答(4个)
回答1:

你写的这个程序主要错在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

回答2:

再加一个循环就可以了,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:

回答4:

楼主阶乘的意思是:3!=1*2*3,5!=1*2*3*4*5,你估计连这个意思都没看懂,看懂了肯定要2层循环的,楼上的是正解