| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 45809 人关注过本帖
标题:求1!+2!+3!+4!+……+20!
只看楼主 加入收藏
fuyang163
Rank: 2
等 级:论坛游民
帖 子:36
专家分:59
注 册:2009-4-13
收藏
得分:0 
#include <stdio.h>  
main()  
{  
 int i,j;  
 long int k,sum;  
 k=1;
 sum=0;   
  {
    for(i=1;i<21;i++)  
      { for(j=1;j<=i;j++)  
      k=k*j;  
      sum=sum+k;}
  }
 printf("1!+2!...+20!=%ld.\n",sum);  
 }
2009-09-26 19:05
li151312595
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2009-9-26
收藏
得分:0 
回复 20楼 m456m654
但是就是算得出来呢···
2009-09-26 19:51
li151312595
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2009-9-26
收藏
得分:0 
那究竟应该怎么定义才算得出来??
2009-09-26 20:05
四平
Rank: 1
等 级:新手上路
帖 子:5
专家分:8
注 册:2009-9-26
收藏
得分:0 
我第一个帖子里的程序有个错误,呵呵。
才发现。修改如下:
#include <stdio.h>  
main()  
{  
int i,j;  
float sum,k;  
sum=0;  
for(i=1;i<21;i++)  
   {  
       k=1;  
   for(j=1;j<=i;j++)  
      k=k*j;  
   sum=sum+k;  
   }  
printf("The result is %f.\n",sum);  
}
这样数据没有溢出。
我试了试,你定义float可以,定义long float 也可以,只不过后几位不一样,因为float的精度只有七位。
结果根本没有那么大,我算错了。

崇尚科学
2009-09-27 11:55
witheart
Rank: 1
等 级:新手上路
帖 子:10
专家分:5
注 册:2009-9-27
收藏
得分:0 
日,三楼四楼都错了,我用long double还是他奶奶的溢出。。。
2009-09-27 21:11
witheart
Rank: 1
等 级:新手上路
帖 子:10
专家分:5
注 册:2009-9-27
收藏
得分:0 
#include "math.h"

#define N 20;

double ji(double r)
{
    double result=1;
   for(double i=1;i<=r;i++)
   {
      result=result*i;
   }
   return result;
}

double sum_h(double k)
{
    double sum=0;
    for(double i=1;i<=k;i++)
    {
        sum+=ji(i);
    }
    return sum;
}

void main()
{
    double sum;
    double i=N;
    sum=sum_h(i);
    printf("1!+.....+20!=,%d",sum);
    getchar();
}

2009-09-27 21:11
末末309104535
Rank: 2
来 自:湘 益阳 编成小学
等 级:论坛游民
帖 子:70
专家分:27
注 册:2009-2-17
收藏
得分:0 
类型换一下 换成long
2009-09-27 21:19
lansong
Rank: 4
等 级:业余侠客
帖 子:79
专家分:226
注 册:2009-6-11
收藏
得分:0 
20!阶乘有十九位
2009-09-27 21:33
lansong
Rank: 4
等 级:业余侠客
帖 子:79
专家分:226
注 册:2009-6-11
收藏
得分:0 
加个#include<stdio.h>

printf("1!+.....+20!=,%d",sum);
把%d改为%f
2009-09-27 21:42
嗜血鹦鹉
Rank: 1
等 级:新手上路
帖 子:2
专家分:1
注 册:2009-9-24
收藏
得分:0 
用个while循环液可以,这样简单点
#include<stdio.h>
void main()
{
   float i=1,t=1,sum=0;
   while(i<=20)
    {t=t*i;
     sum=sum+t;
     i++;
    }
  printf("%f\n",sum);
}

我要编程
2009-09-27 22:10
快速回复:求1!+2!+3!+4!+……+20!
数据加载中...
 
   



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

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