首页 > 试题广场 >

对运行中输入的x,计算级数:

[问答题]
对运行中输入的x,计算级数:
1+x-x2/2!+x3/3!-…(-1)n+1xn/n!

要求输出精度为10-8。分别用 for和 while语句各编写一个程序。


推荐
while语句
//===============================================
//EX0201.cpp
//级数求和
//===============================================
#include<iostream>
#include<cmath>    // abs()
using namespace std;
//-----------------------------------------------
int main()
{
    double x;
    cin>>x;
    double sum=1;
    double t=x;
    int i=2;
    while(abs(t)>1e-8)
    {
        sum +=t;
        t*=(-1)*x/i;
        i++;
    }
    cout.precision(8);
    cout<<fixed<<"x="<<x<<", sum="<<sum<<"\n";
}//==============================================
for语句
//===============================================
//EX0201.cpp
//级数求和
//===============================================
#include<iostream>
#include<cmath>    // abs()
using namespace std;
//-----------------------------------------------
int main()
{
    double x;
    cin>>x;
    double sum=1;
    double t=x;
    for(int i=2; abs(t)>1e-8; i++)
    {
        sum +=t;
        t*=(-1)*x/i;
    }
    cout.precision(8);
    cout<<fixed<<"x="<<x<<", sum="<<sum<<"\n";
}//==============================================


发表于 2018-05-07 20:31:22 回复(0)

//while循环

#include<iostream> #include<cmath> #include<iomanip> using namespace std; int main() { double x,y; cin>>x; y=x; double sum=1; int i=2; while(abs(y)>1e-8) { sum+=y; y*=(-1)*x/i; i++; } cout<<fixed<<setprecision<<sum<<endl; return 0; }
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main()
{
    double x,y;
    cin>>x;
    y=x;
    double sum=1;
    for(int i=2;abs(y)>1e-8;i++)
    {
        sum+=y;
        y*=(-1)*x/i;
    }
    cout<<fixed<<setprecision(8)<<sum<<endl;
    return 0; } 
//注释:1.精度的控制是由项来决定的,而非总的和;注意for循环的条件;

编辑于 2019-11-13 20:17:18 回复(0)
#include <iostream>
#include <cmath>

using namespace std;
int mul(int num);

int main()
{
    // +-级数
    int x;
    double sum(1.0);
    cout << "enter a number" << endl;
    cin >> x;
    for (double i = 1, sign = 1; abs(sum) > 1e-8; i++, sign *= -1)
    {
        sum += sign * (pow(x, i) / mul(i));
        cout << sum << endl;
    }
    cout << sum << endl;
}

int mul(int num)
{
    if (num == 1)
    {
        return 1;
    }
    return num * mul(num - 1);
}

编辑于 2020-03-15 16:15:54 回复(0)