已知一个数列从0项开始的前3项:0,0,1,以后的各项都是其相邻的前3项之和。下列给定的程序中,函数fun()的功能是:计算并输出该数列前n项的和sum。n的值通过形参传入。例如,当n=10时,程序的输出结果应为96.000000。 请改正程序中的错

admin2009-02-15  26

问题 已知一个数列从0项开始的前3项:0,0,1,以后的各项都是其相邻的前3项之和。下列给定的程序中,函数fun()的功能是:计算并输出该数列前n项的和sum。n的值通过形参传入。例如,当n=10时,程序的输出结果应为96.000000。
   请改正程序中的错误,使它能得到正确结果。
   注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
   试题程序:
   #include  <conio.h>
   #include  <stdio.h>
   double fun(int n)
   {
   double  sum,  S0,  S1,  S2,  S;
   int k;
   sum=1.0;
   if  (n<=2)
     sum=0.0;
   s0=0.0;
   s1=0.0;
   s2=1.0;
   /*************found*************/
     for  (k=4;k<n;k++)
      {
      S=S0+S1+s2;
      Sum+=s;   
      S0=s1;
      S1=s2;
   /*************found*************/
      S2=S;
    return sum;
    }
    main()
   {
   int n;
   clrscr();
   printf("Input N=");
   scanf("%d",&n);
   printf("%f\n",fun(n));
   }

选项

答案(1)错误:for(k=4;k<n;k++) 正确:for(k=4;k<=n;k++) (2) 错误:s2=s; 正确:s2=s;}

解析 错误1:循环中包括k=n的情况,所以k要取到n之后才结束循环。错误2:for循环的语句要用大括号,在此处少了“}”,应添上。
转载请注明原文地址:https://jikaoti.com/ti/rSkiFFFM
0

相关试题推荐
最新回复(0)