| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7875 人关注过本帖
标题:求1+2!+3!+...+20!的和
只看楼主 加入收藏
realll
Rank: 1
等 级:新手上路
帖 子:55
专家分:4
注 册:2009-7-23
结帖率:88.89%
收藏
已结贴  问题点数:18 回复次数:22 
求1+2!+3!+...+20!的和
#include<iostream.h>
void main()
{
    int i=2;
    long int b,a;
    while(i<21)
    {
        b=i;
        a=1;
        while(b!=0)
        {
            b*=--b;

        }
            a+=b;
            i++;
        
    }
    cout<<a<<endl;
}
麻烦各位大虾了,这个帮忙修改下啊
搜索更多相关主题的帖子: long 
2010-01-31 18:40
mghxz252
Rank: 2
等 级:论坛游民
帖 子:40
专家分:60
注 册:2010-1-18
收藏
得分:5 
不知道我的是不是对的?
#include<iostream.h>
void main()
{
  int i=2,m;
  double b,a=1;
  while(i<21)
    {
     m=i;
     b=1;
    while(m!=0)
      {
       b*=m;
       m--;
      }
      a+=b;
      i++;
     }   
cout<<a<<endl;
}

2010-02-02 13:10
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:6 

#include <stdio.h>
#define N 20
int main(int argc, char *argv[])
{
    int i=1;float s=0,f=1;
    for (;i<=N ;i++ )
    {
        f=f*i;
        s=s+f;
    }
    printf("%20.0f",s);
    return 0;
}

没细想,现在改了,谢谢楼下提醒!

[ 本帖最后由 cnfarer 于 2010-2-2 14:08 编辑 ]

★★★★★为人民服务★★★★★
2010-02-02 13:25
mghxz252
Rank: 2
等 级:论坛游民
帖 子:40
专家分:60
注 册:2010-1-18
收藏
得分:1 
楼上的程序确实比我想的简单多了,小弟佩服。

但是如果用 s=s+s*i 来求和的话,
会变成想下面的情况。
假设i=5,
s=(1!+2!+3!+4!)+(1!+2!+3!+4!)*5;
2010-02-02 13:51
zhoufeng1988
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
注 册:2009-5-31
收藏
得分:5 
程序代码:
#include <iostream>

using std::cout;
using std::endl;
using std::cin;

double Factorial(int);

int main()
{
    int num = 20;
    double result = 1;
    for (int i = 1; i <= num; i++)
    {
        result += Factorial(i);
    }
    cout << result<<endl;
    cin.get();
    return 0;
}

double Factorial(int number)
{
    double result = 1;  
    if (number > 0)
    {
        for (int i = 1; i <= number; i++)
        {
            result *= i;
        }
    }
    return result;
}
2010-02-02 16:59
gyx8899
Rank: 2
等 级:论坛游民
帖 子:56
专家分:91
注 册:2010-2-2
收藏
得分:1 
一己之见:(小做解释)
while(i<21)
    {
        b=i;
        a=1;
        while(b!=0)
        {
            b*=--b;

        }
            a+=b;
            i++;
        
    }
循环中:b既在累乘,又在b--(递减),出现错误。
需要通过中间变量,如二楼的回复。小弟敬佩。
long 的精度小于double
本题的答案超过long的范围,需换为double。
2010-02-02 19:02
realll
Rank: 1
等 级:新手上路
帖 子:55
专家分:4
注 册:2009-7-23
收藏
得分:0 
回复 2楼 mghxz252
O(∩_∩)O谢谢
2010-02-03 09:35
realll
Rank: 1
等 级:新手上路
帖 子:55
专家分:4
注 册:2009-7-23
收藏
得分:0 
回复 3楼 cnfarer
O(∩_∩)O谢谢
2010-02-03 09:35
realll
Rank: 1
等 级:新手上路
帖 子:55
专家分:4
注 册:2009-7-23
收藏
得分:0 
回复 5楼 zhoufeng1988
O(∩_∩)O谢谢
2010-02-03 09:36
realll
Rank: 1
等 级:新手上路
帖 子:55
专家分:4
注 册:2009-7-23
收藏
得分:0 
回复 6楼 gyx8899
O(∩_∩)O谢谢
2010-02-03 09:37
快速回复:求1+2!+3!+...+20!的和
数据加载中...
 
   



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

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