P040 计算多项式的值 1/(1+2+…+n) ★★

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

所属年份:2011.9;2012.3
编写函数fun,其功能是:根据以下公式计算s,并计算结果作为函数值返回,n通过形参传入。

例如:若n的值为11时,函数的值为1.833333

P040

#include <stdio.h>

float fun(int  n)
{

}

main()
{  int n; float s;
   printf("\nPlease enter N:"); scanf("%d", &n);
   s = fun(n);
   printf("the result is: %f\n", s);
}

【考点分析】
本题考查:计算给定表达式的值,注意变量数据类型及强制转换操作。for循环语句,return语句。

【解题思路】
此类计算表达式值的程序,首先需要根据题意分析表达式的规律,得出通项,然后再完成程序语句。

本题中表达式的规律是1+2+…+n的倒数之和,那么可以通过for循环语句来实现第1项到第n项的变化。

这里其实就是累加算法,方法是先根据题目要求定义变量,注意该变量的数据类型,然后对其进行初始化操作,因为该变量作用是累加器,所以初始值应为0(或0.0,这里根据变量数据类型来确定),再通过for循环语句来完成累加过程。

本题中 t 用来表示每一项的分母,每一项的分母都是由前一项分母加项数(迭代)。注意:由于 t 定义成一个整型,所以在 s=s+1.0/t 中不能把1.0写成1。

【参考答案】

float fun(int  n)
{
    int i, t=0;
    float s=0.0;
    for(i=1; i<=n; i++)
    {
        t = t + i;      /* 计算中间表达式 */
        s = s + 1.0/t;
    }
    return s;
}