给定程序MODll.C中函数fun的功能是:求出以下分数序列的前n项之和。和值通过函数值返回到main函数。 2/1 ,3/2 ,5/3 , 8/5 , 13/8 , 21/13…… 例如,若n=5,则应输出:8.391667。

admin2013-03-29  37

问题 给定程序MODll.C中函数fun的功能是:求出以下分数序列的前n项之和。和值通过函数值返回到main函数。
    2/1  ,3/2 ,5/3 , 8/5 , 13/8 , 21/13……
    例如,若n=5,则应输出:8.391667。
    请改正程序中的错误,使它能计算出正确的结果。
    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
/****************found*****************/
void fun(int n)
{  int a,b,c,k;double s;
    s=0.0; a=2;b=1;
    for(k=1,k<=nj k++)  {
/****************found*****************/
    s=s+(Double)a/b;
    c=a;a=a+b; b=c;
    }
    retuEn s;
}
main()
{  int n=5;
    printf("\nThe value of function
is:%lf\n",fun(n));
}

选项

答案(1)double fun(int n) (2)s=s+(double)a/b;

解析 (1)fun函数中的语句“double s;"以及“return s;"说明fun函数具有double返回值,所以应将“fun(int n)"改为“double fun(int n)"。
    (2)第二标识下“s=s+(Double)a/b;"对s进行累加,a和b均是int变量,计算结果也是int会丢失精度,需要强制类型转换,将a或b转换成double型。“(Double)a"强制类型转换是错误的,C语言中不存在“Double’’关键字,第二标识下应改成“s=s+(double)a/b;"。
转载请注明原文地址:https://jikaoti.com/ti/6In0FFFM
0

最新回复(0)