VC软件用C语言编译用C语言编译

编写函数计算N!,调用该函数计算下式的值: S= 1+1/(1+4! )+1/(1+ 4!+7!)+……+1/(1+4!+7!+……+19!) 【提示】定义函数long jc(int k)用于求阶乘分母的数据是一个公差为3的等差数列。
编写函数计算N!,调用该函数计算下式的值: S= 1+1/(1+4! )+1/(1+ 4!+7!)+……+1/(1+4!+7!+……+19!) 【提示】定义函数long jc(int k)用于求阶乘分母的数据是一个公差为3的等差数列。

供参考:

#include <stdio.h>
long jc(int k)
{
    int  i;
    long s = 1;
    for (i = 1; i <= k; i++)
        s *= i;
    return s;
}
int main()
{
    int i;
    double S = 0,t = 0;
    for (i = 1; i <= 19; i += 3)
    {
        t += jc(i);
        S += 1.0 / t;
    }
    printf("S=%f", S);
    return 0;
}


#include <iostream>
using namespace std;

long jc(int k) // 求阶乘的函数
{
    long f = 1;
    for(int i = k; i >= 1; i -= 3)
        f *= i;
    return f;
}

int main()
{
    double S = 0; // 存储结果
    int n = 0; // 记录当前的分母
    for(int i = 0; i <= 4; i++)
    {
        n += 3 * i; // 计算当前项的分母
        S += 1.0 / (1 + jc(n)); // 计算当前项并累加到结果中
    }
    cout << "S = " << S << endl;
    return 0;
}

定义了一个求阶乘的函数,函数名为jc,参数为一个整型数k,返回值是k!。在主函数中,我们先声明了两个变量,分别用来存储最终的结果S和当前项的分母n。在循环中,我们通过计算公差为3的等差数列得到当前项的分母n,然后计算出当前项的值并累加到S中