求c语言大神,1!+3!+5!+……+n!的和

如题所述

这里的关键是要有一个变量能存储下n!和整个的和,普通int型和long int型变量范围都很小,所以建议用double型变量。
你的程序虽然提示输入数据到变量n,但没有调用输入语句输入,应当:
printf("input a number:"); scanf("%d",&n);
你用sum变量保存累加和,这是正确的,但每项的阶乘值没有变量来保存是个问题,要知道阶乘也是一个累乘的结果,而i*i并不是n的阶乘而是n的平方。当前项等于前边相乘以当前的i值,这个累乘变量的起始值为1。
建议:
int i,n;
double sum,m;
...
sum=0; m=1; //变量m计算当前项即阶乘值
for ( i=1;i<=n;i++ ) { m*=i; s+=m; }
printf("sum=%.0lf\n",sum);
但请注意,仍有n过大无法计算的问题存在。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-01-07

    s = 0

    i +=2

    j<=i

    f +=j

追问

我想知道怎么来的。

这个是蒙的

第2个回答  2016-01-07
最后一个空f= f*j;其它都是对的追问

i++也对了?

追答

对了

没看到是奇数,应该是i=i+2

追问

嗯嗯,

最后一个怎么说呢?

追答

这个f=f*j就是求阶乘啊

追问

哦哦

第3个回答  2016-01-07
1、 s = 0; //初始化结果为0;
2、 i = i + 2 // 实现带有阶乘的数是奇数
3、 j<=i //运算阶乘的条件
4、 f *= j //运算阶乘
帮你粘贴下
http://zhidao.baidu.com/link?url=nlNYAoPsyaKTFC_a9bGT3XHAcxGuyCPGbDN7qthZ6-UxBCUtZTUhVP0LBoT8q-r6S7ug7ty7cpv_pgsolQRbS_本回答被提问者采纳