下列给定程序中,函数 fun() 的功能是:计算并输出下列级数的的N项之和SN,直到SN+1大于q为止,q的值通过形参传入。 SN=2/1+3/2+4/3+(N+1)/N 例如,若q的值为50.0,则函数值为49.394948。

admin2010-11-26  18

问题 下列给定程序中,函数 fun() 的功能是:计算并输出下列级数的的N项之和SN,直到SN+1大于q为止,q的值通过形参传入。
           SN=2/1+3/2+4/3+(N+1)/N
   例如,若q的值为50.0,则函数值为49.394948。
   请改正程序中的错误,使它能得出正确的结果。
   注意;不要改动main 函数,不得增行或删行,也不得更改程序的结构.
   试题程序:
   #include <conio.h>
   #include <stdio. h>
   /**************found***************/
   double fun(double q)
   { int n; double s,t;
     n=2;
     s=2.0;
     while (s<=q)
         {
         t=s
    /*************found *************/
          s=s+ (n+1)/n;
          n++;
         }
     printf ("n=%d\n ", n);
    /************found***************/
     return s;
    }
    main ()
    { clrscr();
    printf ("%f\n ",fun (50));
    }

选项

答案(1)错误:double fun (double q) 正确:double fun (int q) (2)错误:s=s+(n+1)/n; 正确:s=s+(double)(n+1)/n; (3)错误:return s; 正确:return t;

解析 该程序中多次出现了函数调用过程中定义混乱的错误,关于类似问题,我们在前面的试题中已经做过比较详细的解释,主要是对基础知识的把握。在这里我们再对函数调用规则做一简单说明。
   C语言规定,在以下几种情况下可以不在调用函数前对被调用函数做类型说明。
   (1)如果函数的值(函数的返回值)是整型或字符型,可以不必进行说明,系统对它们自动按整型说明。但为清晰起见,建议都加以说明为好。
   (2)如果被调用函数的定义出现在主调函数之前,可以不必加以说明。因为编译系统已经先知道了已定义的函数类型,会自动处理的。也就是说,将被调用的函数的定义放在主调函数之前,就可以不必另加类型说明。
   (3)如果已在所有函数定义之前,在文件的开头,在函数的外部已说明了函数类型,则在各个主调函数中不必对所调用的函数再做类型说明。
   除了以上3种情况外,都应该按上述介绍的方法对所调用函数的返回值做类型说明,否则编译时就会出现错误。
转载请注明原文地址:https://jikaoti.com/ti/gnkiFFFM
0

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