请编写函数fun(),其功能是计算并输出下列多项式的值: F=1+1/1!+1/2!+1/3!+1/4!+…+1/m! 例如,若主函数从键盘给键盘给m输入5,则输出为F=2.716667。 注意:m的值要求大于1但不大于100。部分源程序给出如下。

admin2013-03-25  29

问题 请编写函数fun(),其功能是计算并输出下列多项式的值:
    F=1+1/1!+1/2!+1/3!+1/4!+…+1/m!
例如,若主函数从键盘给键盘给m输入5,则输出为F=2.716667。
注意:m的值要求大于1但不大于100。部分源程序给出如下。
请勿改动main()函数与其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。
试题程序:
#include
double fun(int m)
{
}
void main()
{  int m;
  double f;
  FILE * out;
  printf("Input m:");
scanf("% d",&m);
f=fun(m);
printf("F=%f\n",f);
out:fopen("outfile.dat","w");
  for(m=10;m<10;m++)
  fprintf(out,"%f\n",fun(m));
  fclose(out);
}

选项

答案 double t,s=1.0; //初始化求解多项式的值s int i,j; for(i=1;i<=m;i++) //m项多项式的循环 { t=1.0; //阶乘求解初始化 for(j=1;j<=i;j++) t*=j; s+=1.0/t; //求得多项式的和 } return s;

解析 该程序的功能是计算并输出多项式的值。该题的解题思路是,根据题干中给出的数列,首先推出每一项的表达式,然后再对多项式进行累加求和。
    根据题干中给出的数列,推出每一项是阶乘的倒数,所以首先在循环中求得每一项的阶乘。其中阶乘的计算公式定义为:
    m!=m*(m一1)*(m一2)*…*1(m>1)
    m!=1(m=1)
    公式分为参数m是1和大于1的两种情况,例如,1的阶乘1!=1;5的阶乘5!=5*4*3*2*1。
    然后求得阶乘分之一的累加和。
转载请注明原文地址:https://kaotiyun.com/show/AXJp777K
0

最新回复(0)