
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的近似值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)