21 计算e
作者: Turbo时间限制: 1S章节: 循环
问题描述 :
利用公式e=1+ 1/1! + 1/2! + 1/3! + … + 1/n!,编程计算e的近似值,直到最后一项的绝对值小于threshold(该项不包括在结果内),输出e的值并统计累加的项数。
输入说明 :
输入一个实数threshold,表示累加的阈值,数列中最后一项的值大于等于该阈值。Threshold最小可为1e-10。
输出说明 :
输出一个实数表示e的值,保留6位小数,并输出一个整数,表示累加的项数。两个数字之间用一个空格分隔,在行首和行尾没有多余的空格。
输入范例 :0.00001
输出范例 :2.718279 9
#include<stdio.h>
#include<math.h>
double jiec(double n){
double sum=1.0,i;
for(i=1.0;i<=n;i++)
sum=sum*i;
return sum;
}
int main(){
double threshold,e=0.0,n=0.0;
scanf("%lf",&threshold);
if(1.0>=threshold)
{
e=1.0;
n=1.0;
while(fabs(1/jiec(n))>=threshold){//这里的阶乘函数必须返回的数值类型是double
e=e+1/jiec(n);
n++;
}
}
printf("%.6lf %d\n",e,(int)n);
return 0;
}