引入
展开式求和:输入 1 个实数 x,计算并输出下式的值,直到最后一项的绝对 值小于 0.00001,计算结果保留 2 位小数。要求定义和调用函数 fact(n)计算 n 的阶乘,可以调用 pow( )函数求幂。试编写相应程序。 s=x+x²/2!+x³/3!+x4/4!+…
分析
fact()求阶层,需要注意返回值和自变量的初始化
结束条件 item >= 1e-5
item的值根据pow(x,i)/fact(i)求
代码
#include <stdio.h>
#include <math.h>
//声明阶层函数
double fact(int x);
int main(void) {
/**
展开式求和:输入 1 个实数 x,计算并输出下式的值,直到最后一项的绝对 值小于 0.00001,
计算结果保留 2 位小数。要求定义和调用函数 fact(n)计算 n 的阶乘,可以调用 pow( )函数求幂。
试编写相应程序。 s=x+x2/2!+x3/3!+x4/4!+…
*/
//输入一个实数
double x;
scanf("%lf",&x);
//定义项、和、自变量
double s,item = 1.0;
int i = 1;
while(fabs(item) >= 1e-5){
//调用pow()和fact()求每项的值
item = pow(x,i)/fact(i);
s+=item;
i++;
}
//打印和
printf("s=%.2lf",s);
return 0;
}
//求阶乘
double fact(int n){
int i;
double result = 1;
for(i = 1; i <= n; i++){
result=result*i;
}
return result;
}