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;
}

 

posted @ 2022-02-27 10:34  梦想是能睡八小时的猪  阅读(75)  评论(0)    收藏  举报