下列给定程序中,函数fun()的功能是:传入一个整数m,计算如下公式的值。 t=1/2-1/3-…-1/m 例如,若输入5,则应输出-0.283333。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增

admin2010-09-14  22

问题 下列给定程序中,函数fun()的功能是:传入一个整数m,计算如下公式的值。
   t=1/2-1/3-…-1/m
   例如,若输入5,则应输出-0.283333。
   请改正程序中的错误,使它能得出正确的结果。
   注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
   试题程序:
     #include <conio.h>
    #include <stdio.h>
   double fun(int m)
   {
      double t=l.0;
      int i;
      for (i=2; i<=m; i++)
    /*************found**************/
            t=l.0-1/i;
    /*************found**************/
   }
   main ( )
    {int m;
     clrscr ();
     printf ("\nPlease enter 1 integer numbers
             : In");
     scanf ("%d", &m);
     printf("\n\nThe result is %lfln",
             fun (m));
   }

选项

答案(1)错误:t=1.0-1/i; 正确:t-=1.0/i; (2)错误: ; 正确:return t;

解析 解答类似题目的思路是我们依然先从数学思路着手,即理解数学上的规律,再分析C语言的流程,本题中分母依等差数列递增,最好用循环语句解决。我们先从第1句1/2的表达式来看起:当i从2(必须从2开始)开始循环的时候,虽然 t=1.0-1/i;和t-=1.0/i;的第1个值都是相同的,但随着循环的累加,我们就能发现问题所在了!
转载请注明原文地址:https://jikaoti.com/ti/gIkiFFFM
0

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