32 计算e
问题描述 :
利用公式e=1+ 1/1! + 1/2! + 1/3! + ... + 1/n!,编程计算e的近似值,直到最后一项的绝对值小于threshold(该项不包括在结果内),输出e的值并统计累加的项数。
输入说明 :
输入一个实数threshold,表示累加的阈值,数列中最后一项的值大于等于该阈值。Threshold最小可为1e-10。
输出说明 :
输出一个实数表示e的值,保留6位小数,并输出一个整数,表示累加的项数。两个数字之间用一个空格分隔,在行首和行尾没有多余的空格。
输入范例 :0.00001
输出范例 :2.718279 9
思想:注意小数精度,以及输入1的时候的处理,绝对值是大于等于,特例处理。
#include <stdio.h> #include <math.h> int main(){ double num; double res=0.0; int count = 0; scanf("%lf",&num); double cur = 1.0; int i = 1; double k = 1.0; while(fabs(cur)>num){ k *=i; i++; cur = 1.0/k; res+=cur; count++; } res -=cur; res+=1; if(fabs(num)==1){ printf("%.6f %d",2.000000,2); }else printf("%.6f %d\n",res,count); return 0; }