| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 45809 人关注过本帖
标题:求1!+2!+3!+4!+……+20!
只看楼主 加入收藏
qhmzq
Rank: 1
等 级:新手上路
帖 子:21
专家分:6
注 册:2009-9-27
收藏
得分:0 
    #include <stdio.h>
void 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("%d\n",sum);
}


最后运行的结果是1444231216  不知道对了没  和他们的结果相差很远呢  
2009-09-29 15:57
lhl198989
Rank: 2
等 级:论坛游民
帖 子:16
专家分:67
注 册:2009-9-12
收藏
得分:0 
旧一点的编译器估计会溢出,不过可以使用新一点的编译器,像gcc之类的支持long long 类型的编译器可以得出正确的结果。计算的函数如下:
long long n_factorial_sum(int n)
{
 int i;
 long long result=n;
 for(i=n-1;i>0;--i)
    result=(result + 1) * i;
 return result;
}
之所以用long long型的变量存储结果,是因为1到20的阶乘之和太大,在10exp18数量级上,普通的long型已经无法储存。
2009-09-29 22:40
放弃那个阿姨
Rank: 2
等 级:论坛游民
帖 子:41
专家分:75
注 册:2009-9-29
收藏
得分:0 
#include "stdio.h"
main()
{
  float i, n, sum=0;
  for(i=1.0,n=1.0;i<=20.0;i++)
  {
    n=i*n;
    sum=sum+n;
  }
  printf("%f",sum);
}
运行后是2561327455189073920.000000
2009-09-29 23:03
放弃那个阿姨
Rank: 2
等 级:论坛游民
帖 子:41
专家分:75
注 册:2009-9-29
收藏
得分:0 
回复 42楼 lhl198989
大家都是新手,不要用那新手不知道的运用程序。
最好是TurboC.
2009-09-29 23:05
iFreeBSD
Rank: 4
等 级:业余侠客
威 望:4
帖 子:474
专家分:236
注 册:2007-11-5
收藏
得分:0 
LS的名字很震撼啊。

without further ado, let’s get started
2009-09-30 08:24
无水人家
Rank: 2
等 级:论坛游民
帖 子:12
专家分:25
注 册:2009-9-5
收藏
得分:0 
可能这道题的本意是看你怎么样去存储计算后的结果,而不是计算本身
2009-09-30 09:50
放弃那个阿姨
Rank: 2
等 级:论坛游民
帖 子:41
专家分:75
注 册:2009-9-29
收藏
得分:0 
我也这样想过,
怎样才能输出整型,
我运算的结果应该是对的。
但是会带上.000000。想抹掉。。。
不知道怎么弄。
2009-09-30 17:43
flylee
Rank: 5Rank: 5
等 级:职业侠客
帖 子:309
专家分:374
注 册:2004-8-10
收藏
得分:0 
高精度运算,用数组保存结果就好
如果对结果要求不高可以用斯特灵公式估算
2009-09-30 22:45
maogqiu
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2009-10-1
收藏
得分:0 
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 01:40
maogqiu
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2009-10-1
收藏
得分:0 
对不起,我是新手,只看了一页贴,,看到大家都用到2次循环,不解!故有上贴
现纠正如下!
main()  
{  
int i,n;
float a=1,b=0;  
scanf("n=%d",&n);  
for(i=1;i<=n;i++)  
{a=a*i;b=b+a;}  
printf("Sn=%f\n",b);
}  
不知可行否?
2009-10-01 02:00
快速回复:求1!+2!+3!+4!+……+20!
数据加载中...
 
   



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

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