niusouti.com

下列给定程序中函数fun()的功能是:计算n!。例如,给 n输入5,则输出120.000000。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:include <stdio.h>include <conio.h>double fun (int n){ double result=l.0;/*************found**************/if n==0return 1.0;while (n>l&&n<170)/*****

题目

下列给定程序中函数fun()的功能是:计算n!。例如,给 n输入5,则输出120.000000。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

include <stdio.h>

include <conio.h>

double fun (int n)

{ double result=l.0;

/*************found**************/

if n==0

return 1.0;

while (n>l&&n<170)

/*************found**************/

result *=n--

return result;

}

main ( )

{ int n;

printf ("Input N: ");

scanf ( "%d" &n);

printf ("\n\n%d!=%lf\n\n",n, fun(n));

}


相似考题
更多“下列给定程序中函数fun()的功能是:计算n!。例如,给 n输入5,则输出120.000000。 请改正程序中的错误 ”相关问题
  • 第1题:

    下列给定程序中函数fun()的功能是计算1/n!的值。

    例如:给n输入5,则输出0.0083330

    请改正程序中的错误,使它能得到正确结果。

    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

    试题程序:

    include <stdio.h>

    include <conio.h>

    /******+****found*************/

    int fun(int n)

    {double result=1.0;

    if(n==0)

    return 1.0;

    while(n>1 && n<170)

    /**********found************/

    result *=n++;

    result=1/result;

    return result;

    }

    main()

    {

    int n;

    printf("Input N:");

    scanf("%d",&n);

    printf("\n1/%d!=%If\n",n,fun(n));

    }


    正确答案:(1)错误:int fun(int n) 正确:double fun(int n) (2)错误:result*=n++; 正确:result*=n--;
    (1)错误:int fun(int n) 正确:double fun(int n) (2)错误:result*=n++; 正确:result*=n--; 解析:错误1:函数的返回值为实型数据,所以函数的返回类型应为double。错误2:根据阶乘的概念,从n开始,每递减1的数相乘,直到1,因此此处n递减,而不是递增。

  • 第2题:

    下列给定程序中,函数fun的功能是按以下递归公式求函数值。

    例如:当给n输入5时,函数值为240;当给n输入3时,函数值为60。

    请改正程序中的错误,使它能得到正确结果。

    注意;不要改动main函数,不得增行或删行,也不得更改程序的结构。

    试题程序:

    include <stdio.h>

    /*************found****+*******/

    fun(int n);

    {

    int c;

    /*************found********+*****/

    if(n=1)

    c=15;

    else

    c=fun(n-1)*2;

    return(c);

    }

    main()

    {

    int n;

    printf("Enter n:");

    scanf("%d",&n);

    printf("The result:%d\n\n",fun(n));

    }


    正确答案:(1)错误:fun(int n); 正确:fun(int n) (2)错误:if(n=1) 正确:if(n==1)
    (1)错误:fun(int n); 正确:fun(int n) (2)错误:if(n=1) 正确:if(n==1) 解析:错误1:该行是函数的首部,不是一条语句,因此不能以分号结束。错误2:if垢面应该紧跟一个条件判断表达式,若写成“if(n=1)”,则说明该表达式的值永远为真,也就是说这个条件永远成立,没有递归执行。

  • 第3题:

    下列给定程序中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列为:1、1、2、3、5、8、13、21、…… 例如,若给n输入7,则该项的斐波拉契数值为13。 请改正程序中的错误,使它能得出正确结果。 注意:部分源程序在文件MODll.C中,不得增行或删行,也不得更改程序的结构。


    正确答案:
    (1)去掉分号
    (2)case l:case 2:return l;
    【考点分析】
    本题考查:switch语句,其一般形式为:
    switch(表达式){
    case常量表达式1:语句l;
    case常量表达式2:语句2;
    case常量表达式n:语句n;

    其中switch(表达式)后不应该带有”;”,同时case语句常量后应该是”:“。
    【解题思路】
    c语言中,sw迎ch语句之后不能有分号,并且case语句常量后应用的是冒号。

  • 第4题:

    给定程序MODll.C中函数fun的功能是:计算n!。

    例如,给n输入5,则输出120.000000。

    请改正程序中的错误,使程序能输出正确的结果。

    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!


    正确答案:(1)if (n==0) (2)result *=n--;
    (1)if (n==0) (2)result *=n--; 解析:本题中函数的功能是计算阶乘,其中,阶乘的计算公式分为参数n是1和大于1两种情况,例如,1的阶乘1!=1;5的阶乘5!=5×4×3×2×1。

  • 第5题:

    给定程序MODll.C中函数fun的功能是:求出以下分数序列的前n项之和。和值通过函数值返回到main函数。

    例如,若n=5,则应输出:8.391667。

    请改正程序中的错误,使它能计算出正确的结果。

    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!


    正确答案:(1)double fun(int n) (2)s=s+(double)a/b;
    (1)double fun(int n) (2)s=s+(double)a/b; 解析:本题中函数的功能是求出分数序列的前n项之和。首先根据题干中给出的公式推出每一项之间的关系,求出每一项的表达式,然后求得数列的和。每一项的分母是前一项的分子,分子是前一项分子和分母的和。