下列给定程序中,函数fun()的功能是:求出以下分数序列的前n项之和。 2/1,3/2,5/3,8/5,13/8,21/13,…… 和值通过函数值返回main()函数。例如,若输入n=5,则应输出8.391667。 请改正程序中的错误,使

admin2010-09-14  36

问题 下列给定程序中,函数fun()的功能是:求出以下分数序列的前n项之和。
   2/1,3/2,5/3,8/5,13/8,21/13,……
   和值通过函数值返回main()函数。例如,若输入n=5,则应输出8.391667。
   请改正程序中的错误,使它能得出正确的结果。
   注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
   试题程序:   
    #include <conio.h>
   #include <stdio.h>
   /*************found**************/
   fun (int n)
   { int a=2,b=l,c,  k;
     double s=0.0;
     for(k=l;k<=n;k++)
          {s=s+l.0*a/b;
  /*************found**************/
           c=a; a+=b; b+=c;
        }
      return (s);
   }
   main ()
    { int n=5;
      clrscr ();
      printf("\nThe value of function is:
             %1f\n", fun (n));
   }

选项

答案(1)错误:fun(int n) 正确:double fun(int n) (2)错误:c=a;a+=b;;b+=c; 正确:c=a;a+=b;b=c;

解析 该题题干是著名的斐波拉契分数序列,所以循环条件应该是c=a;a+=b;b=c。
转载请注明原文地址:https://jikaoti.com/ti/mIkiFFFM
0

最新回复(0)