Description
输入一个实数x,计算多项式x+(x2)/2!+(x3)/3!+…的和,直到末项的绝对值小于0.00001(保留三位小数)
Input
输入一个实数x
Output
输出多项式的和, 保留三位小数。
Sample Input
1
2
3.2
Sample Output
1.718
6.389
23.533
#include<stdio.h>
#include<math.h>
int main()
{
double fact(int n);
int i;
double x,s;
while(scanf("%lf",&x)!=EOF)
{
i=1;
s=0;
while(pow(x,i)*1.0/fact(i)>=0.00001)//满足成立条件,前提
{
s+=pow(x,i)*1.0/fact(i);//即s=s+pow(x,i)*1.0/fact(i)
i++;//1,2,3数字不断增大
}//本次循环结束,要输出s的值
printf("%.3f",s);
}
return 0;
}
double fact(int n)//定义fact()即阶乘,看起来更方便清楚
{
double sum=1;//老道理:叠乘设一,叠加设零
while(n>0){//循环成立条件
sum=sum*n;
n--;
}//从n开始叠乘,n!=n*(n-1)*(n-2)*。。。。*1
return sum;//返回到原值,刚才设什么返回什么,这边不能return 0
}