以下是计算N!(N的阶乘)的FORTRAN程序:READ(*,*)N______DO 10 K=1,N10 S=S*KEND为使程序完整,应在横线处放入( )。A.S=1 B.S=N C.S=0 D.什么都不放

题目
以下是计算N!(N的阶乘)的FORTRAN程序:
READ(*,*)N
______
DO 10 K=1,N
10 S=S*K
END
为使程序完整,应在横线处放入( )。

A.S=1
B.S=N
C.S=0
D.什么都不放

相似考题
更多“以下是计算N!(N的阶乘)的FORTRAN程序: ”相关问题
  • 第1题:

    下面的程序是用do-while语句计算10的阶乘。请在程序的每条横线处填写1个语句,使程序的功能完整。

    注意:请勿改动main()主方法和其他已有的语句内容;仅在横线处填入适当的语句。

    源程序文件代码清单如下:

    public class DoWhileLoop

    {

    public static void main(______)

    {

    int n=10;

    long result=1;

    do

    {

    _____;

    }

    _____;

    System.out.println("10的阶乘为:"+result);

    }

    }


    正确答案:String args[] result*=n-- while(n>=1)
    String args[] result*=n-- while(n>=1) 解析:本题主要考查main()主方法的使用、 while循环语句的用法。解答本题的关键是熟练掌握main()主方法的使用、while循环语句的用法。在本题中,string args[]的作用是声明字符数组args,result*=n--语句的作用是获得n的阶乘并赋值给变量result。

  • 第2题:

    要求以下程序的功能是计算main () { int n; float s; S=1.0; for (n=10; n>1; n--) s=S+1/n; printf("%6.4f\n",S); } 程序运行后输出结果错误,导致错误结果的程序行是

    A.s=1.0;

    B.for(n=10;n>1;n--)

    C.s=s+1/n;

    D.prind("%6.4f\n",s);


    正确答案:C
    解析:程序中由于n为整型,所以1/n的结果始终为0,故程序最后输出的结果为0,其结果错误,原因为在表达式1/n中1和n均为整型,所以应该将1改为1.0,这样表达式1.0/n的值不为0,为该数学表达式的值,因此我们可以知道导致程序运行后输出结果错误的行为s=s+1/n;,所以,4个选项中选项C符合题意。

  • 第3题:

    下面是用来计算n的阶乘的递归函数,请将该函数的定义补充完整。(注:阶乘的定义是n!cn*(n-1)*...*2*1)

    unsigned fact(unsigned n)

    {

    if (n<=1)

    return 1;

    return 【 】;

    }


    正确答案:n*fact(n-1)或者fact(n-1)*n或者n*fact(-1+n)或者fact(-1+n)*n
    n*fact(n-1)或者fact(n-1)*n或者n*fact(-1+n)或者fact(-1+n)*n 解析:递归的使用。

  • 第4题:

    【程序说明】 程序功能是计算1~10的阶乘。

    【程序】

    SET TAIK OFF

    CLEAR

    N=1

    DO WHILE N<11

    Y=1

    (1)

    ? STR (N,2)+“的阶乘是:”+STR (Y,8)

    (2)

    ENDDO

    SET TAIK ON

    RETURN

    (3)

    PARAMETERS N,Y

    IF N>1

    DO FP WITH N-1,Y

    (4)

    ENDIF

    RETURN

    (1)

    A.DO FP WITH N-1,Y

    B.DO FP WITH N,Y-1

    C.DO FP WITH N,Y

    D.DO FP WITH N-1,Y-1


    正确答案:C
    解析:从整个程序结构上看,主程序中每给N赋一个值,就调用过程求出该N值的阶乘,并通过 Y返回该阶乘的结果,因此第一个填空处应是调用过程语句。从过程中语句“DO FP WITH N-1,Y”可判断出在过程中是通过递归调用(过程在执行中自己调用自己)实现对阶乘的运算,因此推断出过程名为“FP”。程序中第(1)处填空应是“DO FP WITH N,Y”。

  • 第5题:

    下面是一个递归Java程序,其功能为 ( )long Factorial(int n){ if(1==n){ return 1; } else return n*Factorial(n-1);}

    A.求1-n的和

    B.求2到n的和

    C.求n的阶乘

    D.求2-n的积


    正确答案:C
    解析:该题考查的是递归调用。在Java中允许方法的递归调用,即允许方法调用自身。当算阶乘的时候最多的是用到递归调用,本题的功能是求n的阶乘。

  • 第6题:

    以下能够正确计算n!的程序是( )。

    A.

    B.

    C.

    D.


    正确答案:C

  • 第7题:

    下面是通过建立计算阶乘的自定义函数计算组合C(M,N)一M!/(N!*(M—N))!)的值,其中的M,N通过键盘输入。请在( )处填上正确的语句。


    正确答案:
    I=I+1【解析】I的值应该随选环而进行增1运算。

  • 第8题:

    试题2

    本程序中,函数fun的功能是计算整数n的阶乘。程序中存在若干错误,请找出并改正。(注意:不改动程序的结构,不得增行或删行。)

    #include <stdio.h>

    double fun(int n)

    { double result=1.0;

    while (n>1 && n<170)

    result*=- -n;

    return;

    }

    main()

    { int n;

    clrscr ();

    printf(“Enter an integer:”) ;

    scanf(“%d”,&n);

    printf(“\n\n%d!=%lg\n\n”,n,fun(n)) ;

    nono ();

    {int n,i;

    FILE *rf, *wf ;

    rf = fopen (“g03.in”,“r”) ;

    wf = fopen(“g03.out”,“w”) ;

    for (i=1; i<=10;i++)

    { fscanf(rf, “%d”,&n) ;

    fprintf (wf, “%lg\n”,fun( n ) );

    }

    fclose (rf) ;

    fclose (wf) ;

    }


    正确答案:
    试题2分析
    **********************
    本题中函数的功能是计算整数n的阶乘,result存放阶乘的结果,result*=- -n;是先将n的值减1,然后在于result相乘,此举并没有将n本身计算进去。最后返回的时候,返回的应该是result。
    试题2答案
    *************************
    [1] 第5行的result*=--n改为result*=n--;[2] 第6行的return后面加上返回值(result)。

  • 第9题:

    阅读下列FORTRAN程序:
    MOIUH=N(5)+NdO)
    WRITE( *,‘(2X,15),)MQIUH END
    FUNCTION N(K)
    N=0
    DOIO J=1,K N=N+J 10 CONTINUE RETURN END
    程序运行后的结果是:

    A. 65
    B. 85
    C. 90
    D. 70

    答案:D
    解析:
    这是一个函数子程序调用题,第一次5与K对应,第2次10与K对应。
    答案:D

  • 第10题:

    阅读下列FORTRAN 程序:
    MQIUH=N(5)+N(10)
    WRITE(*,’(2X,15)’)MQIUH
    END
    FUNCTION N(K)
    N=0
    DO 10 J=1,k
    N=N+J
    10 CONTINUE
    RETURN
    END
    程序运行后的结果是:
    (A)65 (B)85
    (C)90 (D)70


    答案:D
    解析:

  • 第11题:

    数据结构里,递归问题的解决都要靠栈来完成,以下可以递归实现的有()。

    • A、斐波那契数列
    • B、n!(n的阶乘)
    • C、汉诺塔问题
    • D、n的k次幂

    正确答案:A,B,C,D

  • 第12题:

    单选题
    给定下列FORTRAN子程序如下:   SUBROUTINE SUB(K,A)   A=SQRT(K*K+1.0)   END   下列调用语句中正确的是()
    A

     CALL SUB(N,N)

    B

     CALL SUB(X,X)

    C

     CALL SUB(N,X*X)

    D

     CALL SUB(11,X)


    正确答案: B
    解析: 暂无解析

  • 第13题:

    以下程序的功能是计算:。includemain(){int n; float s; s=1.0; for(n=10;n>1;n--)s=s+

    以下程序的功能是计算:。#include <stdio.h> main() { int n; float s; s=1.0; for(n=10;n>1;n--) s=s+1/n; printf("%6.4f\n",s); } 程序运行后输出结果错误,导致错误结果的程序行是( )。

    A.s=1.0;

    B.for(n=10;n>1;n--)

    C.s=s+1/n;

    D.printf("%6.4f\n",s);


    正确答案:C
    解析:该程序的运行结果是1.0000,算法错误。在s=s+1/n中,因为n为整型,所以循环中1/n始终为0。这就是本题算法错误的原因。应把s=s+1/n改为s=s+1.0/n。

  • 第14题:

    下列给定程序中,函数fun()的功能是:计算整数n的阶乘。

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

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

    试题程序:

    include <stdio.h>

    double fun(int n)

    {

    double result=l.0;

    whil (n>l&&n<170)

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

    result*=--n;

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

    return;

    main()

    {int. n;

    clrscr();

    printf("Enter an integer: ");

    scanf("%d",&n);

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

    }


    正确答案:(1)错误:result*=--n; 正确:result*=n--; (2)错误:return; 正确:return result;
    (1)错误:result*=--n; 正确:result*=n--; (2)错误:return; 正确:return result; 解析:该题采用循环语句计算n的阶乘。当n大于1且小于170时,令result与n相乘,同时n自动减1,循环至n=2(n=1时无需相乘):注意:o和1的阶乘都等于1,可用条件语句和循环语句实现上述功能。

  • 第15题:

    要求以下程序的功能是计算:s=1+1/2+1/3+…+…1/10

    main( )

    { int n; float s;

    s=1.0;

    for(n=10;n>1;n--)

    s=s+1/n;

    printf("%6.4f\n",s);

    }

    程序运行后输出结果错误,导致错误结果的程序行是

    A.s=1.0;

    B.for(n=10;n>1;n--)

    C.s=s+1/n;

    D.printf("%6.4f\n",s);


    正确答案:C
    解析:当“/”两侧均为整型数时,运算结果为整数,因此1/n(n>1)的结果总为0,而不是小数。

  • 第16题:

    有如下递归函数:

    int Fun(int n){

    if(n<=1) return 1;

    ______

    }

    请补充完整,使得函数Fun能够正确计算形参n的阶乘。


    正确答案:else return n*Fun(n-1);
    else return n*Fun(n-1); 解析:此题考查的是递归函数。函数Fun中的参数n小于2时,Fun函数返回1,其余返回值为n*Fun(n-1)。

  • 第17题:

    以下程序计算1+1/3+1/5+…+1/(2N+1),直至1/(2N+1)小于0.00001,横线处应补充的程序是( )。

    A.2n

    B.2n+1

    C.2*n

    D.2*n+1


    正确答案:D
    本题考查do-while循环的用法。题目中没有给出累加次数,故不能使用for循环,在do循环中,由累加项term的值作为退出循环的条件。根据题目要求,应该填写2*n+1。本题的关键是while(term>=0.00001)语句,题目要求计算直至1/(2N+1)小于0.00001,所以term=1/(2N+1),因此n=2*n+1。

  • 第18题:

    关于下面函数,哪一个是错误描述?n为整数deffactorial(n):ifn<=0:returnifn==1:return1returnn*factorial(n-1)

    A.求整数n的阶乘

    B.factorial(5)是函数调用

    C.是递归函数

    D.求任意两个数值n和n-1的乘积


    正确答案:D

  • 第19题:

    下面是用来计算n的阶乘的递归函数,请将该函数的定义补充完整。(注:阶乘的定义是n!=n*(n-1)*...*2*1)

    unsigned fact (unsigned n)

    {

    if(n<=1)

    retum 1;

    return【 】;

    }


    正确答案:n*fact (n-1)
    n*fact (n-1) 解析:本题考核递归函数。一般递归函数由递归出口和递归体两部分组成。递归出口给出了递归终止的条件;递归体给出了递归的方式。题中程序给出了递归出口,但是没有给出递归体,由阶乘的定义可知其递归体应该为n*fact (n-1)。

  • 第20题:

    以下是计算N!(N的阶乘)的FORTRAN程序:
    READ(*,*)N
    ______
    DO 10 K=1,N
    10 S=S*K
    END
    为使程序完整,应在横线处放入( )。

    A.S=1
    B.S=N
    C.S=0
    D.什么都不放

    答案:A
    解析:

  • 第21题:

    阅读以下FORTRAN程序
    READ(*,*)M,N
    K=MOD(M,N)
    10 IF(K.GT.0)THEN
    M=N
    N=K
    K=MOD(M,N)
    GOTO 10
    END IF
    WRITE(*,*)N
    END
    若运行以上程序时,由键盘输入25,11,则程序输出为( )。

    A.3
    B.2
    C.1
    D.0

    答案:C
    解析:
    K=MOD(M,N)=MOD(25,11)=3>0
    则M=11,N=3,K=MOD(11,3)=2>0
    则M=3,N=2,K=MOD(3,2)=1>0
    则M=2,N=1,K=MOD(2,1)=0,可得最后N=1

  • 第22题:

    汉诺塔问题可以用递归解决,以下也可用递归实现的是()

    • A、求1-n的和
    • B、求n的阶乘
    • C、斐波那契数列
    • D、n^k(^表示幂)

    正确答案:A,B,C,D

  • 第23题:

    栈的应用很广泛,递归问题的解决都要靠栈来完成,以下可以递归实现的有()。

    • A、斐波那契数列
    • B、n!(n的阶乘)
    • C、汉诺塔问题
    • D、迷宫问题

    正确答案:A,B,C,D

  • 第24题:

    多选题
    汉诺塔问题可以用递归解决,以下也可用递归实现的是()
    A

    求1-n的和

    B

    求n的阶乘

    C

    斐波那契数列

    D

    n^k(^表示幂)


    正确答案: C,D
    解析: 暂无解析