| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 45809 人关注过本帖
标题:求1!+2!+3!+4!+……+20!
只看楼主 加入收藏
yjp20045
Rank: 1
等 级:新手上路
帖 子:3
专家分:1
注 册:2009-10-1
收藏
得分:0 
以下是引用m456m654在2009-9-26 14:45:09的发言:

#include <stdio.h>
main()
{
int i,j;
long int sum,k;
sum=0;
k=1;
for(i=1;i<21;i++)
   {
   for(j=1;j<=i;j++)
      k=k*j;
   sum=sum+k;
   }
printf("The result is %ld.\n",sum);
}
k=1;的位置应该改一下吧!
for(i=1;i<21;i++)
 {k=1;
 for(j=1;j<=i;j++)

如果不把K=1放里面
那么算n!都算错了
按上面的算法,当算3!的时候 K的初值是2,那么3!=2*1*2*3=12了
4!=12*1*2*3*4了!!!
结果当然就错了!
2009-10-01 09:29
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:0 
回复 51楼 yjp20045
对,我第一次发的程序错了,我后来改过来了。
2009-10-01 09:34
yjp20045
Rank: 1
等 级:新手上路
帖 子:3
专家分:1
注 册:2009-10-1
收藏
得分:0 
以下是引用maogqiu在2009-10-1 01:40:09的发言:

main()
{
int i,n;
long a=1,b=0;
scanf("n=%d",&n);
for(i=1;i<=n;i++)
{a=a*i;b=b+a;}
printf("Sn=%ld\n",b);
}
怎么我这样写结果也对呀?
我认为这个的循环部分才是正确的!、
也是最简洁的!
2009-10-01 09:35
yjp20045
Rank: 1
等 级:新手上路
帖 子:3
专家分:1
注 册:2009-10-1
收藏
得分:0 
哈哈!
不好意思哈!
我只看了前面几个的回复和后面几个的回复!
没有注意你改过了!
2009-10-01 09:37
lhl198989
Rank: 2
等 级:论坛游民
帖 子:16
专家分:67
注 册:2009-9-12
收藏
得分:0 
回复 44楼 放弃那个阿姨
正因为是新手,才来论坛学习来了,不要老抱着老东西不放。新手更应该尝试新东西。
看完了前面的帖子,几乎都是用的一个算法。
实话说,这些算法太没新意了,所以写了一个新点的程序,发上来供大家参考。
现在说一下它的基本算法
1到n的阶乘的和的另一种写法是:
 ((...(n+1)x(n-1)+1)x(n-2)+1)x...+1)x2+1)x1
我写的这个算法先从最内层开始计算,
这种算法的优点是计算量要远小于上面提到的第一种算法。
如果你想在turbo c中运行的话,可以把result声明为double或float类型。
另外,如果你不想要打印浮点数时小数点后的小树部分,可以在printf函数里设定打印精度,例如:"%20.0lf"
2009-10-01 14:20
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
收藏
得分:0 
#include <stdio.h>
void main()
{
  int a,b,sum;
  a=0;b=1;
  while (1<19)

  {
   sum=sum+b;

  }




}
printf ("%d",sum);

欢迎来到我的博客:http://blog..cn/noisunyuhong
2009-10-01 17:08
沈默
Rank: 1
等 级:新手上路
帖 子:11
专家分:9
注 册:2009-9-29
收藏
得分:0 
#include "stdio.h"
int jc(int n)
{
    long int sum=1;
    int i;
    for(i=1;i<=n;i++)
        sum*=i;
    return sum;
}
void main()
{
    long int m=0;
    int k,j;
    printf("输入一个数:\n");
    scanf("%d",&k);
    for(j=1;j<=k;j++)
        m+=jc(j);
        printf("%ld\n",m);
 
}
这个可以运算,你试一下!可以算任意一个数从1到n的阶乘的和。

[ 本帖最后由 沈默 于 2009-10-1 17:58 编辑 ]
2009-10-01 17:52
放弃那个阿姨
Rank: 2
等 级:论坛游民
帖 子:41
专家分:75
注 册:2009-9-29
收藏
得分:0 
回复 55楼 lhl198989
受教了。。
谢谢啊!
但我刚才试了一下。
要"%0.0f"才行.

[ 本帖最后由 放弃那个阿姨 于 2009-10-2 15:39 编辑 ]
2009-10-02 13:29
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:0 
哈,我也来凑热闹,写个短点的函数。
float p(long n)
{
    if(n==1L)    return(1.0);
    else         return(n*p(n-1));
}
求n阶乘,要算1到20再用个循环调用吧,哈。

我可好玩啦...不信你玩玩^_^
2009-10-03 13:59
jack11430
Rank: 2
等 级:论坛游民
帖 子:16
专家分:17
注 册:2009-10-6
收藏
得分:0 
用double 定义变量啊,看3楼后面的补充啊。
2009-10-06 07:03
快速回复:求1!+2!+3!+4!+……+20!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017598 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved