P068 迭代求多项式 0.5-n+1 ★★

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

所属年份:2011.3
请编写函数fun,其功能是:计算并输出当x<0.97时,如下多项式的值,直到|Sn-Sn-1|<0.000001为止。

P068

例如,若主函数从键盘给x输入0.21后,则输出为S=1.100000。

#include  <math.h>
#include  <stdio.h>
double fun(double x)
{ 

}

void main()
{ int i;
  double x,s;
  FILE *out;
  printf("Input x: ");
  scanf("%lf",&x);
  s=fun(x);
  printf("s=%f\n ",s);
  /******************************/				 /*这里包含输出文件程序*/
  out=fopen("out.dat","w");
  for(i=20;i<30;i++)
    	fprintf(out,"%f\n",fun(i/100.0));
  fclose(out);
  /******************************/
}

【考点分析】
本题考查:多项式的计算;变量数据类型及初始化;do…while循环语句,注意循环条件;多项式的求和,通项的确定。
【解题思路】
本题要求计算并输出当x<0.97时多项式的值。解答这类题,首先应该分析多项式的特点, 由于从第二项开始的所有项都能把分子与分母用两个表达式进行迭代,所以可利用一个循环语句完成操作,循环条件为fabs(s1-s0)>=le-6。

【参考答案】

double fun(double x)
{ 
   double s1=1.0,p=1.0,sum=0.0,s0,t=1.0;
   int n=1;
   do
   {
      s0=s1;
      sum+=s0;
      t*=n;
      p*=(0.5-n+1)*x;
      s1=p/t;
      n++;
   }while(fabs(s1-s0)>=1e-6);
   return sum;
}