水题一道,只不过自己的编程思维差太远了,我的代码,其中由于精度问题,wa了一次。
贴一下大神的代码:
#include<iostream>
#include<cstdio>
using namespace std;
double factorial(int a)
{
double iA=1.0;
while(1<a)
{
iA*=(double)a;
a--;
}
return iA;
}
double value_e(int b)
{
double sum=0.0;
while(b>=0)
{
sum+=1.0/((double)factorial(b));
b--;
}
return sum;
}
int main()
{
int a;
float b;
int i=3;
printf("n e\n");
printf("- -----------\n");
printf("0 1\n");
printf("1 2\n");
printf("2 2.5\n");
while(i<=9){
b=value_e(i);
printf("%d %.9lf\n",i,value_e(i));
i++;
}
return 0;
}
贴一下大神的代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main(void)
{
puts("n e");
puts("- -----------");
puts("0 1");
puts("1 2");
puts("2 2.5");
double e=1.0,fac=1.0;
int i;
for(i=1;i<=9;i++)
{
fac/=(double)i;
e+=fac;
if(i>=3)
printf("%d %.9lf\n",i,e);
}
return 0;
}