请编写函数fun,其功能是:计算并输出当x<0.97时下列多项式的值,直到|Sn-Sn-1|<0.000001为止。 例如,在主函数中从键盘给x输入0.21后,输出为:s=1.100000。 注意:部分源程序在文件PROG1.C中。

admin2017-07-27  24

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

    例如,在主函数中从键盘给x输入0.21后,输出为:s=1.100000。
    注意:部分源程序在文件PROG1.C中。
    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
1  #include<stdio.h>
2  #include<math.h>
3  double fun(double x)
4  {
5  }
6  NONO()
7   {/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/
8   FILE *rf,*wf;int i;double s,x;
9   rf=fopen(’’in.dat’’,’’r’’”);
10   wf=fopen(’’out.dat’’,’’w’’);
11   for(i=0;i<10;i++){
12   fscanf(rf,’’%1f’’,&x);
13 s=fun(x);
14  fprintf(wf,’’%1f\n’’,s);
15  }
16  fclose(rf);fclose(wf);
17 }
18   main()
19  {  double x,s;
20   printf(’’Input:x:’’);  scanf(’’%1f’’,&x);
21    s=fun(x);
22  printf(’’s=%f\n’’,s);
23   NONO();}

选项

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

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

最新回复(0)