请编写函数fun,其功能是:计算并输出当x

admin2021-02-25  20

问题 请编写函数fun,其功能是:计算并输出当x<0.97时下列多项式的值,直到|Sn一Sn-1|<0.000001为止。

    例如,在主函数中从键盘给x输入0.21后,输出为:s=1.100000。
    注意:部分源程序在文件PROGl.C中。
    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
{}include
double fun(double x)
{
}
NONO()
{/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。  */
  FILE*rf,*wf;int i;double s f x;
  rf=fopen("in.dat","r");
  wf=fopen("out.dat","w");
  for(i=0;i<10 ; i++)  {
    fscanf(rf,"%1f",&x);
    s=fun(x);
    fprintf(wf,"%lf\n",s);
  }
  fclose(rf); fclose(wf);
}
main()
{double x,s;
  printf("Input x:");scanf("%lf”,
&x);
  s=fun(x);
  printf("s=%f\n",s);
  NONO();
}

选项

答案int n=1; /*循环计数*/ double sn=1 ; /*累计数*/ double xn=1,xn1=0; /*x的n值,以 及x的n-1值;*/ while(fabs(xn—xnl)>=0.000001) /*绝对值是否满足条件*/ { xn=xn*x*(0.5一n+1)/n;/*表达式分解 以后xn=(xn一1)*x*(0.5一n+1)/n*/ n+=1; sn+=xn; /*sn累加上xn*/ } return(sn);

解析 (1)根据题干中给出的数列,推出每一项分子是在前一项分子的基础上乘以(0.5.n+1)*x,分母则为阶乘,也就是在前一项分母的基础上乘以n。
(2)在循环中求得每一项,然后对其进行累加求和。
转载请注明原文地址:https://kaotiyun.com/show/K2tp777K
0

最新回复(0)