问题 填空题

下列给定程序中,函数fun()的功能是:根据整型形参n,计算如下公式的值。
A1=1,A2=1/(1+A1),A3=1/(1+A2),…,An=(1/(1+A(n-1))
例如,若p=10,则应输出0.617977。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动mah函数,不得增行或删行,也不得更改程序的蛄构.
试题程序:
#include <conio.h>
#include <stdio.h>
/**************found********************/
iht fun(iht n)
{ float A=l;inti;
/**************foudn********************/
for(i=2;i<n;i++)
A=1.0/(i+A);
return A;
}
main ()
{ int n;
clrscr ();
printf("\nPlease enter n: ");
$canf ("%d", &n);
printf ("A%d=%lf\n", n, fun (n));
}

答案

参考答案:错误:int fun(int n) 正确:float fun(int n)

解析:
(2)错误:for(i=2;i<n;i++) 正确:for(i=2;i<=n;i++)
该题中fun()函数的作用是计算数列前n项的和,而数列的组成方式是:第n项的分母是功口第n-1项的值,分子为 1,如果循环累加按for(i=2;i<n;i++)执行的话,当我们输入n=2的时候会是什么结果循环会怎么执行呢循环不能执行,但数学思路绝对正确,这就矛盾了,所以循环条件应该是for(i=2;i<n;i++)。

单项选择题
单项选择题