A-A+
下列给定程序中 函数fun()的功能是:传入一个整数m 计算如下公式的值。 t=1/2-1/
问题详情
下列给定程序中,函数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("nnThe result is %lfln",
fun (m));
}请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:(1)错误:t=1.0-1/i; 正确:t-=1.0/i;(2)错误: ; 正确:return t;
(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个值都是相同的,但随着循环的累加,我们就能发现问题所在了!