《C++大学教程》4.34阶乘

题目:

对一个非负整数n来说,它的阶乘可以写成 n! (读作“n的阶乘”),其计算公式定义如下:

 n! = n x (n-1) x (n-2)x......x1(对于大于1的 n )

 n! = 1 ( 对于等于0或者等于1的n )

例如,5!=5 x 4 x 3 x 2 x 1,结果是120.下面用while语句完成:

a)编写一个程序,要求读入一个非负整数,然后计算和打印它的阶乘;

b)编写一个程序,使用如下公式:

e=1+1/1!​+1/2!​+……+1/(n−1)!​

c)编写一个程序,使用如下的公式估算e^x的值:

e=1+x/1!​+(x^2)/(2!)​+……+( x^(n-1) )/( (n−1)! )

程序如下:

a)编写一个程序,要求读入一个非负整数,然后计算和打印它的阶乘;

//4.34a.cpp

#include 
using namespace std;

int main()
{
    unsigned int num;
    cout << "请输入一个非负整数:";
    cin >> num;

    double jiecheng = 1; // 存放阶乘的变量

    if (num == 0 || num == 1)
    {
        jiecheng = 1;
    }
    else
    {
        while (num != 0)
        {
            jiecheng *= num;
            num--;
        }
    }

    cout << " 它的阶乘是 " << jiecheng << endl;
    return 0;
}

运行截图:

b)编写一个程序,使用如下公式:

e=1+1/1!​+1/2!​+……+1/(n−1)!​

//4.34b.cpp

#include 
#include 
using namespace std;

int main()
{
    int i = 0, sumNumber, num;
    double e = 1;
    cout << "e得精度是:";
    cin >> sumNumber; // 累加求和的项数,也是精度

    if (sumNumber > 1) // 控制当精度为1时,e=1
    {
        i = 1;
    }

    while (i < sumNumber)
    {
        num = i;             // 用于计算阶乘的数
        double jiecheng = 1; // 存放阶乘的变量
        if (i == 0)
        {
            jiecheng = 1; // 此时e=1
            break;
        }
        else
        {
            while (num != 0)
            {
                jiecheng *= num;
                num--;
            }
        }
        e += (1 / jiecheng);
        cout << setprecision(6) << fixed;
        i++; // 控制循环
    }
    cout << " e = " << e << endl;
    return 0;
}

运行截图:(精度为1和2为特殊情况)
注意:标准e=2.718281828459045

《C++大学教程》4.34阶乘_第1张图片

c)编写一个程序,使用如下的公式估算e^x的值:

e^x=1+x/1!​+(x^2)/(2!)​+……+( x^(n-1) )/( (n−1)! )

//4.34c.cpp

#include 
#include 
#include 
using namespace std;

int main()
{
    int i = 0, sumNumber, num;

    double e = 1;
    int x; // x表示的e的幂数
    cout << "请输出e的幂数:";
    cin >> x;

    cout << "e^" << x << "次幂要求的精度是:";
    cin >> sumNumber; // 累加求和的项数,也是精度

    if (sumNumber > 1) // 控制当精度为1时,e=1
    {
        i = 1;
    }

    while (i < sumNumber)
    {
        num = i;
        double jiecheng = 1; // 存放阶乘的变量
        if (i == 0)
        {
            jiecheng = 1; // 此时e=1
            break;
        }
        else
        {
            while (num != 0)
            {
                jiecheng *= num;
                num--;
            }
        }
        e += (pow(x, i) * (1 / jiecheng));
        cout << setprecision(6) << fixed;
        i++; // 控制循环
    }
    cout << "e = " << e << endl;
    return 0;
}

运行截图:(满足特殊情况,精度为1)

注意:百度e²≈7.3891

《C++大学教程》4.34阶乘_第2张图片

你可能感兴趣的:(C++大学教程,c++,开发语言)