用C语言求e的近似值,用1/1!+1/2!+1/3!+.......1/n!,请问我的哪里错了?

#include <stdio.h>
main()
{ int a=1,b,n=1,nAn;
double e=1;
while(nAn<=1e6)
{ b=1;
nAn=1;
while(b<=n)
{ nAn=nAn*b;
b++;
}
e=e+1/nAn;
n++;
}
printf("e=%lf\n",e);
return 0;
}

还有 e = 1.0/nAn。这个老师不会没教把,整数除以整数还是整数

nAn要大于1e6,因为nAn一开始就小于1e6的

#include <stdio.h>
long long fact(int n) //求阶乘
{
int i;
long long s = 1;
for(i=1;i<=n;i++)
s = s*i;
return s;
}
int main(void)
{
int n=1;
double s=1, s1=0;
while(fabs(s-s1)>=0.00001) //迭代
{
s1 = s;
s = s + 1.0/fact(n);
n++;
}
printf("%lf\n", s);
return 0;
}

不懂就问追问

请问,nAn要大于1e6,有什么用啊?

追答

我开始没有看你的题目意思。。那个nAn一开始大于1e6或者小于都没有用。再说是1e-6,,10的-6次方。。。。1e6是10的6次方。精确算法要用迭代法像我那样

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-12-13
int a=1,b,n=1,nAn;
double e=1;
while(nAn<=1e6) //这里nAn的值是多少,没有赋值就使用的变量追问

你好,这里我确实错了,但是VC6.0执行时并没有出错啊,求解释一下

追答

依赖编译器和编译环境,有的编译器将未赋值的变量整型初始为0,字符串为空,
有的编译器将它弄成个不确定的值,整型表现为数值不确定,每次都不一样结果,字符串访问时表现为该内存不能为read

第2个回答  2012-12-16
45432424

c语言编程题,求e的近似值,e=1\/1!+1\/2!+1\/3!+...+1\/n!,累加项小于1
正确的公式为:e=1+1\/1!+1\/2!+1\/3!+...+1\/n!代码实现如下:include<stdio.h> int fun(int n){ if(n == 1)return 1;return n*fun(n-1);} int main(){ double sum =1.0 ;int i = 1;while((1.0\/fun(i))>=1e-8){ sum +=(1.0\/fun(i));i++;} printf("%.8...

C语言编写,求e的值.e≈1+1\/1!+1\/2!+1\/3!+……+1\/n!
int main(int argc, char* argv[]){ double e=1,t=1;int t1;for (t1=2;t1<=N;++t1){ t*=(double)1\/t1;e+=t;} printf("%lf",e);return 0;} \/\/--- 2.\/\/--- include <stdio.h> const double eps=1

C语言编程序,求e的近似值e≈1+1\/2!+1\/3!+…+1\/n!
sum+=item;n++;}while(fabs(item)>=1e-4);printf("The sum is lf\\n",sum);return 0;}

...要求求e的值,e约等于1+1\/1!+1\/2!+1\/3!+...+1\/N! 要求直至最后一项的...
double b=1,a=1,n,i,j=1;while(a>=1e-7){ n=1;i=1;while(i<=j){ n=n*i;i++;} a=1\/n;b=a+b;j++;} printf("%f\\n",b);} 看不清楚你写的是小于10的几次方,我这是小于10的-7次方

c语言求e=1+1\/1!+1\/2!+1\/3!+1\/4!+...
double e = 1.0;\/\/声明变量e并初始化 for (i = 2; i <= n; i++)\/\/声明for循环 { e += 1.0 \/ jiecheng(i);\/\/e加上当前计算结果(即1\/1!,1\/2!等)} printf("%f", e);\/\/输出e return 0;\/\/结束程序 } 大部分代码我都做了注释,希望你能理解这个程序。希望能帮到您。

关于c语言的题“求S=1\/1!+1\/2!+1\/3!+…+1\/N!”我知道算法但是我的结果最...
这里要涉及截断误差和积累误差。二进制无法精确表示某些十进制小数,而计算机内存容量又是有限的,所以在表示十进制数值时,必然会因为参与表达数值小数部分的二进制位数有限而产生误差。而这个误差又在计算中不断放大,所以能有这么一点误差已经很不错了!不要以为大学是高中考试,必须有标准答案。

C语言 编写程序求e的值 e=1+1\/1!+1\/2!+1\/3!+...
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=sum*n;e+=1\/sum;} System.out.println("e="+e);} } 得到的值为:2.7182818011463845...随着n值...

编写程序,求e的值。e≈1+1\/1!+1\/2!+1\/3!+1\/4!+…+1\/n!用while循环,要求...
具体m的值是多少是不可预见的,按照程序的执行顺序,所以当执行while(m>=1e-6){ }的时候,由于具体m是多少不知道,它的值可能小于1e-6,也可能大于等于1e-6,就达不到你的预期,你在while()前面加一条为m赋值的语句或者直接定义的时候赋值,并且使括号中的判断条件为真,试试。

求C语言编程,e=1+1\/1!+1\/2!+1\/3!+...+1\/n!,精确度1e-6
include<iostream> using namespace std;int main(){ int i=1;double e=1.0,d=1.0;while(d>=1e-6){ d=d\/i;e+=d;i++;} cout<<"e的值为:"<<e<<endl;return 0;}

用C语言编写程序计算:e=1+1\/1!+2\/2!+1\/3!+···
include "stdio.h"int main(int argv,char *argc[]){int n;double s,t;for(t=s=n=1;t>=1.0E-6;s+=t\/=n++);printf("e≈%f\\n",s);return 0; }运行结果:

相似回答