| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1531 人关注过本帖
标题:初学C语言一个问题
只看楼主 加入收藏
a742474834
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-11-11
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
初学C语言一个问题
(7)利用公式e≈1+1/1!+1/2!+1/3!+…+1/n!, 编程序求e的近似值,直到第n项(1/n!)<10-6为止。
提示:
a)利用二重循环编程实现,其中内层循环求n!,外层循环进行累加求和;
b)外层循环终止条件:(1/n!)<10-6。
测试结果:
输出:2.718281  这个怎么写
#include<stdio.h>
main()
{
    int i,j;
    double e=0;
  long fac=1;
    for(i=0;1/fac>1E-6;i++)
    {
     fac=1;
    for(j=1;j<=i;j++)
    {
     fac*=j;
    }
    e=1.0/fac+e;
    }
    printf("%lf",e);
 }    这个的话输出2.500000 不符合题目。。。帮忙修
搜索更多相关主题的帖子: include 测试结果 double C语言 
2016-11-11 22:20
chimeixing
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:14
专家分:130
注 册:2010-10-19
收藏
得分:4 
整数类型除以整数结果还是整数,你的第一个for循环里面 1/fac,当fac>1时就不满足条件退出了
可以把fac的数据类型改成double试试

菜鸟
2016-11-11 23:05
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:4 
图片附件: 游客没有浏览图片的权限,请 登录注册

强制转换为浮点型

[此贴子已经被作者于2016-11-11 23:10编辑过]


早知做人那么辛苦!  当初不应该下凡
2016-11-11 23:09
kay_1996
Rank: 1
等 级:新手上路
帖 子:1
专家分:4
注 册:2016-11-13
收藏
得分:4 
程序代码:
#include <stdio.h>

double factorial(double n);

void main()
{
    int n;
    double e=0;
    for(n=1;;n++)
    {
        e+=1/factorial(n);
        if(1/factorial(n)<e-6)
        {
            printf("e=%f",e);
        }
    }
}

double factorial(double n)
{
    double k;
    if(n==1)
    { 
        k=1;
    }
    else
    {
        k=factorial(n-1)*n;
    }
    return k;
}
        

最后没反应了。。。哪里错了吗??
2016-11-13 23:29
i多子妹师南
Rank: 1
来 自:江苏
等 级:新手上路
帖 子:12
专家分:4
注 册:2016-11-13
收藏
得分:4 
#include<stdio.h>
int main()
{
    double l=1,j,sum=1;
    int i;
    for(i=1;;i++)
    {
        l=1;
        for(j=1;j<=i;j++)
        {
            
            l*=1/j;
        }
        if(l>1e-6)
         sum+=l;
        else
        break;

    }
    printf("%lf\n",sum);
    return 0;
}


2016-11-14 09:40
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:4 
回复 4楼 kay_1996
程序代码:
#include <stdio.h>
double factorial(int n);//n数据类型为int型
void main()
{
    int n;
    double e=1;//e的初值为1因为e的值计算从0开始,默认0!=1;
    for(n=1;;n++)
    {
        e+=1/factorial(n);
        if(1/factorial(n)<1e-6)//前面已经声明e是变量,要加1e表示条件
        {
            printf("e=%f\n",e);
            break;
        }
    }
}
double factorial(int n)//这里递归好好消化一下
{
    double k;
    if(n==1)
        k=1;
    else
        k=factorial(n-1)*n;
    return (k);
}


[此贴子已经被作者于2016-11-14 13:20编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-11-14 13:19
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 4楼 kay_1996
主要的问题是判断条件1e不是e,还有,e的初始值为1,还有,少了循环结束判定条件~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-11-14 13:24
快速回复:初学C语言一个问题
数据加载中...
 
   



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

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