展开式求和:输入 1 个实数 x,计算并输出下式的值,直到最后一项的绝对 值小于 0.00001,计算结果保留 2 位小数。要求定义和调用函数 fact(n)计算 n 的阶乘,可以调用 pow( )

引入

展开式求和:输入 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;
}

运行测试

在这里插入图片描述


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章