P072 计算多项式的值 1/(1*2*…*n) ★★

03-程序设计题 软件121, 唐鼎威 919浏览

所属年份:2011.3
请编写函数fun,其功能是:计算并输出下列多项式的值。

例如,在主函数中从键盘为n输入50后,输出为S=1.718282。

P072

#include <stdio.h>

double fun(int  n)
{

}

int main()
{
    int  n;
    double  s;
    printf("\nInput n:  ");
    scanf("%d",&n);
    s=fun(n);
    printf("\n\ns=%f\n\n",s);
    return 0;
}

【解题思路】

本题要求计算并输出多项式的值,通式为:1/(1*2*……*n),在给出的参考程序中,由于函数的返回值为双精度型,所以定义sum、tmp为双精度型,再对符合条件的n,使用中间变量tmp求出1到n的累乘值,即题目中每个多项式中分子的值,再通过sum+=1.0/tmp;计算出所有多项式之和,最终返回值。

【参考答案】

double fun(int  n)
{
    double sum=0, t=1;
    int i;
    for(i=1; i<=n; i++) {
        t = t*i;
        sum += 1/t;
    }
    return sum;
}