P098 计算级数和 ★★

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

所属年份:2012.3;
请编写函数fun,它的功能是计算下列级数和,和值由函数值返回。
S=1+x+x^2/2!+x^3/3!+…+x^n/n!
例如,当n=10,x=0.3时,函数值为1.349859。

#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
double fun(double x, int n)
{
  
}
void main()
{ 
  FILE *wf;
  system("CLS");
  printf("%f ",fun(0.3,10));
/******************************/
  wf=fopen("out.dat","w");
  fprintf(wf,"%f",fun(0.3,10));
  fclose(wf);
/*****************************/
}

【解题思路】
程序定义了变量s1和s,s1表示每项的分母(即各项的阶乘),s存放累加和。循环语句控制累加的次数,在循环体中进行阶乘和累加操作,累加的结果存入s中。此处使用了求乘方函数pow(x,i),其含义是求x的i次方的值。
【参考答案】

double fun(double x, int n)
{
  int i;
  double s=1.0,s1=1.0;
  for(i=1;i<=n;i++)
    {s1=s1*i;          /*各项中的阶乘*/
     s=s+pow(x,i)/s1;  /*按公式求出*/
    }
  return s;
}