C++练习题:用公式e^x求近似值

【问题描述】

e^{x}=1 + x/1!+x^{2}/2! + x^{3}/3! +…+ x^{n }/n!

 给定x和n,利用上述公式求得e^{x}的近似值。

【输出形式】

从控制台输入小数x,和整数n(n >=1),用空格隔开。 (例:7 27)

【输出形式】

向控制台输出求得的e^{x}的近似值(小数点后保留6位有效数据) (得:1096.633156)

#include<iostream>
#include<math.h>
#include<iomanip> 
using namespace std;
int main()   
{
	double x,Sn,An=1,Sum=1;    //Sn记得用double定义,范围太大用int会出错!
	int n;
	cin>>x>>n;
	
	for(int i=1;i<=n;i++)      //求和
	{
		An=pow(x,i);           //分子            
		Sn=1;                  
        //分母,Sn一定要放外循环for里面,让其每次执行完一次内循环的for要刷新,不然Sn会一直累积
		for(int j=1;j<=i;j++)
		{
			 Sn*= j;         //等于Sn= Sn*j;
		} 
	 	     Sum+=An/Sn       //等于Sum=Sum+An/Sn;
	 } 
	 
	cout<<fixed<<setprecision(6)<<Sum;
}

【思路解析】

1.把e^{x}当作是各个项加起来的总和Sum

2.然后把各项拆分成分子An和分母Sn两部分分别求出来再相除

3.分子An部分用pow()函数可以求出

**补充下:pow函数用法: pow(底数,指数),记得要在上面加个头文件#include<math.h>    **

4.分母Sn部分用一个for循环让他从1到第i个数相乘求i的阶乘。

** 补充下:n!就是指n的阶乘,就是指1*2*3*.....*n的积。                                                           **

5.然后用for循环把整个包起来,从1开始加到第n项求总和Sum。

6.因为小数点后保留6位有效数据,所以用上fixed<<setprecision(6)

**补充下:setprecision()函数用法: 在cout中要输出数据前加<<fixed<<setprecision(n),就是为小数点后保留n位有效数据,记得要在上面加个头文件#include<iomanip>                                       **

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值