| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 482 人关注过本帖
标题:想编写一个求E=1+1/2!+1/3!+...+1/n!当1/n!<1e-4时输出E;代码错误求大 ...
只看楼主 加入收藏
赤云
Rank: 2
等 级:论坛游民
帖 子:82
专家分:35
注 册:2014-12-29
结帖率:64.71%
收藏
已结贴  问题点数:20 回复次数:7 
想编写一个求E=1+1/2!+1/3!+...+1/n!当1/n!<1e-4时输出E;代码错误求大神解答。拜谢
#include <stdio.h>
#include <math.h>
float j(int i);
int main(){
    int i=1;float E=0.0,e;
    do{
    E+=j(i);
    i++;
    }while (j(i-1)<0.0001);
    printf("%f",E);
    return 0;
}
float j(int i){
    int k;float jie=1.0,x;
    for(k=1;k<=i;k++)
        jie*=k;
    x=1/jie;
    return x;
}
搜索更多相关主题的帖子: include 
2014-12-30 14:53
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:10 
以下是引用赤云在2014-12-30 14:53:35的发言:

代码错误求大神解答


代码如何错误  请说明原因

这里面是否涉及到大数阶乘  是否涉及到数据溢出

DO IT YOURSELF !
2014-12-30 15:09
赤云
Rank: 2
等 级:论坛游民
帖 子:82
专家分:35
注 册:2014-12-29
收藏
得分:0 
结果是  1.000000
2014-12-30 15:23
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用赤云在2014-12-30 15:23:38的发言:

结果是  1.000000



就不能把话说明白一些吗   如果你的数列只有一个的话  那么等于1.0  不是很正确吗  还有啥不对的呢

DO IT YOURSELF !
2014-12-30 15:26
赤云
Rank: 2
等 级:论坛游民
帖 子:82
专家分:35
注 册:2014-12-29
收藏
得分:0 
我弄出结果了
#include <stdio.h>
#include <math.h>
float j(int i);
int main(){
    int i=1;float E=0.0;
    do{
    E+=j(i);
    i++;
    }while (j(i-1)>0.0001);
    printf("%f",E);
    getch();
}
float j(int i){
    int k;float jie=1.0,x;
    for(k=1;k<=i;k++)
        jie*=k;
    x=1/jie;
    return x;
}
2014-12-30 15:27
赤云
Rank: 2
等 级:论坛游民
帖 子:82
专家分:35
注 册:2014-12-29
收藏
得分:0 
1.000000与题目不服啊   大哥
2014-12-30 15:28
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:10 
干嘛这么复杂
不过,我不知道“当1/n!<1e-4时输出E”这个1/n!进不进入E中?

如果不进入
程序代码:
#include <stdio.h>

int main( void )
{
    double E = 0.0;
    for( unsigned n=1, f=1; f<=10000; ++n, f*=n )
        E += 1.0/f;
    printf("%f\n",E);

    return 0;
}
输出 1.718254

如果要进入
程序代码:
#include <stdio.h>

int main( void )
{
    double E = 0.0;
    for( unsigned n=1, f=1; E+=1.0/f, f<=10000; ++n, f*=n );
    printf("%f\n",E);

    return 0;
}
输出 1.718279
2014-12-30 16:24
赤云
Rank: 2
等 级:论坛游民
帖 子:82
专家分:35
注 册:2014-12-29
收藏
得分:0 
厉害
2015-01-04 10:04
快速回复:想编写一个求E=1+1/2!+1/3!+...+1/n!当1/n!<1e-4时输出E;代码错误 ...
数据加载中...
 
   



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

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