编写c++源程序计算e=1+11!+12!+13!+....+1n!+.....计算e的值,直到1n!<10的-7,用do while

编写c++源程序计算e=1+11!+12!+13!+....+1n!+.....计算e的值,直到1n!<10的-7,用do while,第1张

最好的方法是用递归

其次是用while(因为是条件循环1/n!<10的-7次方)

结果你非得用for循环,很麻烦的~

如果是我也把for循环的条件部分直接写true的死循环,然后根据条件break

写代码太麻烦了 思路如下:

整个题目分为两个部分,一部分是求阶乘,一部分是求和。

求阶乘的部分可以写在子函数里。

阶乘自然用到累乘器 int y=1;

之后就是for循环:

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

y=i;

关于return 的是y 还是1/y 看你自己的兴致了。

这个n可以通过函数参数传进来。

求和的部分自然也需要用到累加器:int e=0;

然后for(int i=1;true;i++)e=1/y(i)

假设y就是封装的子函数

然后再循环体中加入判断条件break一下跳出循环即可;

最后用printf打印出来就可以了。

这题本来就用面向过程的方法就能解决,而且还要求用printf打印出来,完全没必要用c++

用c语言就可以了。

要求:误差小于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 时结束了循环,这个只是到这一项为止,该项的值比精度小,但是不能保证被舍掉的后面部分(无穷项之和)阶乘的倒数之和比指定的精度小!

#include<stdioh> int main(){ int n ,i,t=1; float e=1; scanf("%d", &n); for(i=1;i<=n;i++){ t=i; e+=10/t; } printf("%f", e); return 0; }

麻烦采纳,谢谢!

代码如下 : 运行过了 输出e=2718282 不知是否满意 望采纳

#include<stdioh>

void main(){

long fun(int n);

int i;

double e=0;

double eps=1e-6;//eps表示精度 此处指10的-6次方

for(i=0;10/fun(i)>eps;i++)

{

e+=10/fun(i);

}

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

}

long fun(int n)//求n!的函数

{

if(n==0)

return 1;

else

return nfun(n-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;

}

#include<stdioh>

int main( )

{

int i,j;

long long fact;

long double sum=10;

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

{

fact = 1;

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

{

fact =j;

}

sum = sum + ( (long double)1/(long double)fact);

printf("sum=%019Lf\n",sum);

}

printf(" e =%19Lf\n",sum);

// printf("%ld",sizeof(long double));

}

while:::

{

int i=1, j;

long long fact = 1;

long double sum=10 ;

while((float)1/(float)fact>=00001)

{

fact = 10;

j=1;

while( j<=i)

{

fact =j;

j++;

}

i++;

sum +=((long double)1/(long double)fact);

printf("sum=%019Lf\n",sum);

}

printf("sum=%19Lf\n",sum);

}

以上就是关于编写c++源程序计算e=1+1/1!+1/2!+1/3!+....+1/n!+.....计算e的值,直到1/n!<10的-7,用do while全部的内容,包括:编写c++源程序计算e=1+1/1!+1/2!+1/3!+....+1/n!+.....计算e的值,直到1/n!<10的-7,用do while、编写程序求自然对数e的近似值、e=1+1/1!+1/2!+1/3!+....1/n! 编写程序用这个公式计算e的近似值这里是n用户输入的整数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9348640.html

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

发表评论

登录后才能评论

评论列表(0条)

保存