编程序按下列公式计算E的值(精度1E-6)

编程序按下列公式计算E的值(精度1E-6),第1张

n值是确定的吧,不然程序会持续的算下去,不符合程序的有穷性

根据题目提供以下代码:

#include<iostream>

#include<stdlibh>

using

namespace

std;

int

main()

{

int

n,sum=1,i;

float

e=0;

cout<<"请输入n值:";

cin>>n;

for(i=1;i<=n;i++)

{

sum=i;

e+=101/sum;

}

cout<<"e="<<1+e<<endl;

system("PAUSE");

return

0;

}

// double 

for(i=1000000;n>=EPSILON;++i)

    {

        z=zi; // 阶乘

        n=m/z; // 求反

        t=t+n; // 求和

    }

你是想表达这个意思吧

double s,e,n,z,m,t,i; // 1 不需要全部使用double的

// double是处理小数位数多的时候进行使用的

// double和float都是一个相似值

    t=0000000;

    m=1000000;

    s=1000000;

    z=1000000;

    for(i=1000000;n>=EPSILON;++i) // n的初始化呢? n什么时候才能够 >= EPSILON

    // 所以你这里应该使用do while的结构,而不是 for

    {

        z=zi; // 这里的问题,就是我前面标示的,

               //long long会更精确一点,而10000001  10000002的结果会对下面有影响的

        n=m/z; // m 始终没有改变过,没有必要使用一个变量:)

               // n = double(1) / z;

        t=t+n; // t += n; 个人习惯

    }

    e=t+1000000;

    printf("e=%6lf",e);

    return 0;

要求:误差小于000001

Private Sub Command1_Click()

Dim i%, n&, t!, e!

e = 2

i = 1

t = 1

Do While t > 000001

i = i + 1

t = t / i

e = e + t

Loop

Print "计算了"; i; "项目和是:"; e

Print Exp(1) ‘与上句输出值进行对比以证明算法的正确性

End Sub

这种算法是有问题的,不能达到指定的精度的!t <= 000001 时结束了循环,这个只是到这一项为止,该项的值比精度小,但是不能保证被舍掉的后面部分(无穷项之和)阶乘的倒数之和比指定的精度小!

main(){

double e=1,n=1;

int i;

for(i=1;n<1e6;i++)

{n=ni;e+=10/n;

printf("%d\t%7f\n",i,e);/观察每次循环时e的输出值,可删/

}

printf("e=%6f\n",e); /%7f %6f 控制输出精度/

scanf("%d");/输出暂停 可删或换getchar()等/

}

输出:

1 20000000

2 25000000

3 26666667

4 27083333

5 27166667

6 27180556

7 27182540

8 27182788

9 27182815

10 27182818

e=2718282

自然对数

当x趋近于正无穷或负无穷时,[1+(1/x)]^x的极限就等于e,实际上e的值就是通过这个极限而发现的。它是个无限不循环小数。其值约等于2718281828

把求阶乘分出来做一个函数,这样关系才能看明白,调试无误如下:

#include "stdioh"

int fact(int n)//求阶乘

{

  int sum=1;

  int i;

  if(n==0)

     return 1;

  else

  {

        for(i=1;i<=n;i++)

           sum=i;

        return sum;

  }

}

int main()

{

   int i=1,j=1,n;

   double e,t=0;

 

 

   scanf("%d",&n);

   e=10;

   for(i=1;i<=n;i++)

   {

      t+=10/fact(i);

   }

   e=e+t;

 

 

   printf("e=%1610f\n",e);

   return 0;

}

结果:

c++的

#include<iostreamh>

int main()

{

double i, e=1, n=1, m=1;

cout<<"Please input your test number:"<<endl;

cin>>i;

while (n<i)

{

e=e+1/n;

m=m+1;

n=nm;

}

cout<<"e: "<<e<<endl;

return 0;

}

已经验证过了,大概没问题的说

#include <stdioh>

int main() {

long int i, k;

double n=10l;/n!

double s = 10l;

for (i = 1; i < 50; i++) {

n=ni;

s += 10 / n;

}

printf("e = %lf\n", s);

getchar();

return 0;

}

或:

public class Test{

public static void main(String args[]){

double sum=1,n=1;

double e=1;

for(n=1;n<=10;n++){

sum=sumn;

e+=1/sum;}

Systemoutprintln("e="+e);

}

}

得到的值为:27182818011463845

随着n值越专大得到的e值越精属确。

扩展资料:

C语言包含的各种控制语句仅有9种,关键字也只有32 个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能,需要通过配合编译系统所支持的各类库进行编程,故c语言拥有非常简洁的编译系统。

参考资料来源:百度百科-c语言

#include <stdioh>

#include <mathh>

int main() {

    double e=10f;

    int n, i=1;

    long f=1;

    printf("Input n:");

    scanf("%d", &n);

    while (i<=n) {

        e += 10/f;

        f=++i;

    }

    printf("%10f", e);

}

以上就是关于编程序按下列公式计算E的值(精度1E-6)全部的内容,包括:编程序按下列公式计算E的值(精度1E-6)、C语言编一个计算e的值的程序、编写程序求自然对数e的近似值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9306796.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存