简单的C++编程

来源:百度知道 编辑:UC知道 时间:2024/05/21 21:01:36
编写程序,根据公式求e=1+(1/1!)+(1/2!)+(1/3!)+......
(a)使用for循环,计算到公式的前50项。
(b)使用while循环,知道公式最后一项的值小于10的-4次方为止。
只希望各位给出阶乘的表示以及表示方法,至于50阶乘过大问题,可以截止到20阶乘进行计算,谢谢!

#include<iostream.h>

//使用for循环
void fun1()
{
double i, y, x=1, e=1;
for(i=1; i<=50; i++)
{
x*=i;
y = 1/x;
e+=y;
}
cout<<"e="<<e<<endl;
}

//使用while循环
void fun2()
{
double i=1, y=1, x=1, e=1;
while(y>=0.0001)
{
x*=i;
y = 1/x;
e+=y;
i++;
}
cout<<"e="<<e<<endl;
}

void main()
{
fun1();
fun2();
}

这个计算起来很麻烦的,因为50!的值是3.0414093201713378043612608166065e+64,已经超过long型的范围了

这道题我以前考试二级C语言时,使用Turboc2.0开发过,现在实在不想再写这种面向过程的程序了。

一点都不难,你为什么不自己想想??

我愿意给你一个提示,也算是提醒你注意吧。因为我以前写时没能注意,结果出问题了。
就是:“50!”是一个非常非常大的数,我用tc2时,使用long型变量,也容纳不下。所以,在计算阶乘时,切记要先求“倒数”,后算阶乘。而不要先求阶乘,后求“倒数”,那么一定超出了变量的范围。
例如求1/50!,应该先算1/50,在乘以1/49再乘以1/48……最后乘以1/1,就可以避免超过取值范围的问题了。

这可是我以前开发的经验和教训啊……

#include &q