C语言编程序,求e的近似值e≈1+1/2!+1/3!+…+1/n!

(1)精确到小数点后200位,用户输入n,就运算到1/n!(2)然后用户之后输入100,输出小数点后100的数字

分析:有两种情况
(1)计算前n项
源程序如下:
#include<stdio.h>
int
main()
{
double
item=1,sum=1;
int
n,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
{

item*=1.0/i;

sum+=item;
}
printf("The
sum
is
%lf\n",sum);
return
0;
}
(2)计算各项直到最后一项小于10^(-4)
源程序如下:
#include<stdio.h>
#include<math.h>
int
main()
{
double
item=1,sum=1,n=1;

do
{

item*=1.0/n;

sum+=item;

n++;
}while(fabs(item)>=1e-4);
printf("The
sum
is
%lf\n",sum);
return
0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-02-27
#include <math.h>
main()
{
int n,i,b;
long a=1;
double e,x;
printf("Input n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
a*=i;
e+=1.0/a;

}
printf("e=%lf",e);
x=e-(int)e;
printf(" input bit b(1~14):");/*这边给您输出最多14位的小数*/
scanf("%d",&b);
printf("is %ld",(int)(x*pow(10,b)));
}

精确小数的 可以加
do
{

}while(x<0.0000000001);/*数字自己定*/
的代码
希望对你有所帮助!本回答被网友采纳
第2个回答  2019-09-25
#include
<math.h>
main()
{
int
n,i,b;
long
a=1;
double
e,x;
printf("Input
n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
a*=i;
e+=1.0/a;
}
printf("e=%lf",e);
x=e-(int)e;
printf("
input
bit
b(1~14):");/*这边给您输出最多14位的小数*/
scanf("%d",&b);
printf("is
%ld",(int)(x*pow(10,b)));
}
精确小数的
可以加
do
{
}while(x<0.0000000001);/*数字自己定*/
的代码
希望对你有所帮助!
第3个回答  2012-11-11
程序没多大难度 但是精确小数位数有点不好办追问

那精确到200位 会吗 会的话也可以给分

第4个回答  2018-01-12
#include <math.h>
main()
{
int n,i,b;
long a=1;
double e,x;
printf("Input n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
a*=i;
e+=1.0/a;

}
printf("e=%lf",e);
x=e-(int)e;
printf(" input bit b(1~14):");/*这边给您输出最多14位的小数*/
scanf("%d",&b);
printf("is %ld",(int)(x*pow(10,b)));
}

精确小数的 可以加
do
{

}while(x<0.0000000001);/*数字自己定*/
的代码
希望对你有所帮助!
相似回答