计算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>
int main(){
double threshold;
scanf("%lf",&threshold);
double i=0.0,j=1.0,s=1.0,sum=0.0;
int count=0;
if(threshold>1)
printf("%.6f %d",sum,count);//若阈值大于1,直接输出0
else{
while(s>=threshold){//最后一项大于该阈值时
sum=sum+s;
i=i+1.0;//累加,用于计算阶乘
j=j*i;//每一项分母的值
s=1.0/j;//每一项的值
count++;
}
printf("%.6lf %d",sum,count);
}
}
(1)sum=0+1=1; i=0+1=1; j=1*1=1; s=1/1=1; count=1;
(2)sum=1+1=2; i=1+1=2; j=1*2=2; s=1/2=0.5; count=2;
(3)sum=2+0.5=2.5; i=2+1=3; j=2*3=6; s=1/6=0.151515; count=3;
......