niusouti.com
更多“以下程序运行结果是【8】 。long fib (int g){ switch (g){ case 0∶return 0;case 1∶case2∶return 1;}return (fib (g-1)+fib(g-2));}main (){ long k;k=fib (5);printf ("k=%(d\n)",k);}”相关问题
  • 第1题:

    有以下面程序: include using namespace std; long fib(int n) { if (n>2)return (fi

    有以下面程序:

    include <iostream>

    using namespace std;

    long fib(int n)

    {

    if (n>2)

    return (fib(n-1)+fib(n-2));

    else

    return 2;

    }

    int main()

    {

    cout<<fib(3)<<endl;

    return 0;

    }

    则该程序的输出结果应该是【 】。


    正确答案:4
    4

  • 第2题:

    有以下程序 main() { int k=5,n=0; do { switch(k) { case 1: case 3:n+=1;k--;break; default:n=0;k--; case 2: case 4:n+=2;k--;break; } printf("%d",n); }while(k>0&&n<5); } 程序运行后的输出结果是

    A.235

    B.235

    C.2356

    D.2356


    正确答案:A
    解析:因为变量的初始值分别为“k=5,n =0”,所以程序第一次进入循环时,执行default语句,这时k=4,执行"case 4:”这个分支,结果是“n=2,k= 3”,打印出2;程序然后进行第二次循环,这时“n=2,k =3”,执行"case 3:”这个分支,结果是“n=3,k=2”,打印出3;程序进行第三次循环,这时“n=3,k=2”,执行“case 2:case 4:”这两个分支,结果是“n=5,k=1”,打印出5,这时因为n=5不满足n5的循环条件,因此退出循环,程序运行结束。因此输出结果是235。

  • 第3题:

    下列给定程序中,函数fun()的功能是:用递归算法计算斐波拉契级数列中第n项的值。从第一项起,斐波`拉契级数序列为1, 1,2,3,5,8,13,21,……例如,若给n输入7,

    该项的斐波拉契级数值为13。

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

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

    试题程序:

    include <stdio.h>

    long fun(int g)

    {

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

    switch(g);

    {case 0:return 0;

    switch(g)

    case 1; case 2:return 1;

    }

    return (fun(g-1)+fun(g-2));

    }

    main()

    {

    long fib; int n;

    printf("Input n:");scanf("%d",&n);

    printf("n-%d\n",n);

    fib=fun(n);

    printf("fib=%d\D\n",fib);

    }


    正确答案:(1)错误:switch(g); 正确:去掉分号 (2)错误:case 1;case 2:return 1: 正确:case 1:case 2:return 1;
    (1)错误:switch(g); 正确:去掉分号 (2)错误:case 1;case 2:return 1: 正确:case 1:case 2:return 1; 解析:C语言中,Switch语句之后不能有分号,并且Case语句常量后应用的是冒号。

  • 第4题:

    有如下程序:includelong fib(int n){if(n>2) return(fib(n-1) +fib(n-2) ) ; else

    有如下程序: #include<iostream.h> long fib(int n) { if(n>2) return(fib(n-1) +fib(n-2) ) ; else return(2) ;} void main( ) { cout < < nb(3) ;} 该程序的输出结果是

    A.2

    B.4

    C.6

    D.8


    正确答案:B
    解析:fib(3) =fib(2) +fib(1) ,而fib (2) 的返回值为2,fib(1) 的返回值也为2,故输出的fib (3) 的值为4。

  • 第5题:

    有如下程序:includelong fib(int n){if(n>2)return(fib(n-1)+fib(n-2)); else return(

    有如下程序: #include <stdio.h> long fib(int n) { if(n>2)return(fib(n-1)+fib(n-2)); else return(2); } main() { printf("%d\n",fib(3));} 该程序的输出结果是( )。

    A.2

    B.4

    C.6

    D.8


    正确答案:B
    解析:本题考查函数的递归调用。fib(3)=fib(2)+fib(1),而fib(2)的返回值为2,fib(1)的返回值也为2,故输出的fib(3)的值为4。

  • 第6题:

    有下列程序: main() {int k=5,n=0; do {switch(k) {case 1: case 3:n+=1;k--;break; default:n=0;k--; case 2: case 4;n+=2;k--;break; } printf("%d",n); }while(k>O&&n<5); } 程序运行后的输出结果是( )。

    A.235

    B.0235

    C.02356

    D.2356


    正确答案:B
    解析: 因为变量的初始值分别为k=5,n=0,所以程序第1次进入循环时,执行default语句,输出0,k减1;这时n=0,k=4,程序进行第2次循环,执行case 4:这个分支,结果是n=2,k=3,打印出2;这时n=2,k=-3,程序进行第3次循环,执行case 3:这个分支,结果是n=3,k=2,打印出3;这时n=3,k=2,程序然后进行第 4次循环,执行case 2:case 4:这个分支,结果是n=5,k=1,打印出5,这时因为n=5不满足n5的循环条件,因此退出循环,程序运行结束。所以在屏幕上打印

  • 第7题:

    有如下程序______。 long fib (int n) { if(n>2) returb(fib(n-1)+fib(n-2)); else return(2); } main() {printf("%d\n",fib(3));} 该程序的输出结果是______。

    A.2

    B.4

    C.6

    D.8


    正确答案:B

  • 第8题:

    有以下程序: main( ) { int k=5,n=0; do { switch(k) { case 1: case 3:n+=l;k--;break; defalut:n=0;k--; case 2: case 4:n+=2;k--;break: } printf("%d",n); }while(k>0&&n<5); } 程序运行后的输出结果是( )。

    A.235

    B.0235

    C.02356

    D.2356


    正确答案:B
    本题考查分支语句用法加个句号因为变量的初始值分别为k一5、n一0,所以程序第1次进入循环时,执行default语句,输出0,k减1;这时n=0、k=4,程序进行第2次循环,执行case4:这个分支,结果是n=2、k=3,打印出2;这时n=2、k=3,break跳出,程序进行第3次循环,执行case3:这个分支,结果是n=3、k=2,打印出3;这时n一3、k2,b¨ak跳出,程序然后进行第4次循环,执行case2:case4:这个分支,结果是n=5、k=1,打印出5,break跳出,这时因为n=5不满足n<5的循环条件,因此循环结束。

  • 第9题:

    有程序: long fib(int n) { if(n<2)return(fib(n-1)+fib(n-2)); else return(2); } main( ) {printf("%d\n",fib(3));} 该程序的输出结果是( )

    A.2

    B.4

    C.6

    D.8


    正确答案:B

  • 第10题:

    有如下程序: long fib(int n) {if(n>2) return(fib(n-1)+fib(n-2)); else return(2); } main() { printf("%ld\n",fib(3));} 该程序的输出结果是______。

    A.2

    B.4

    C.6

    D.8


    正确答案:B
    解析:函数fib内部有两个递归调用,当n=3时,fib(n-1)返回2,fib(n-2)也返回2,所以fib(n-1)+fib(n-2)的值为4。

  • 第11题:

    有以下程序 include using namespace std; long fib(int n) { if(n>2) return(fib(n-1

    有以下程序

    include<iostream>

    using namespace std;

    long fib(int n)

    {

    if(n>2)

    return(fib(n-1)+fib(n-2));

    else

    return 2;

    }

    int main( )

    {

    cout<<fib(3)<<endl;

    return 0;

    }

    则该程序的输出结果应该是______。


    正确答案:4
    4 解析:本题主要考查C++中递归函数,主函数通过调用fib( )函数,fib( )函数的内部再通过一个分支结构判断是否进行递归调用或退出递归调用,调用方式为直接递归调用。主函数通过实参将值3赋给fib( )函数的形参n,由于n=3满足if分支语句条件,因此函数进行递归调用,即计算 fib(2)和fib(1)的值;将2赋给fib( )函数的形参后,由于n=2不满足if语句条件,因此程序退出递归,返回2;将1赋给fib( )函数的形参后,函数同样返回2。因此函数递归调用的最终结果为返回2 +2=4,即fib(3)=4,程序最后输出值为4。

  • 第12题:

    单选题
    有如下程序 long fib(int n) { if(n>2) return(fib(n-1)+fib(n-2)); else return(2); } main() { printf("%ld/n",fib(3)); } 该程序的输出结果是()
    A

    2

    B

    4

    C

    6

    D

    8


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

  • 第13题:

    阅读下面程序:include long fib(int n){if (n>2)return (fib(n-1) + fib(n-2));else

    阅读下面程序:

    include <iostream.h>

    long fib(int n)

    {

    if (n>2)

    return (fib(n-1) + fib(n-2));

    else

    return (2);

    }

    void main()

    {

    cout<<fib(3)<<end1;

    }

    则该程序的输出结果应该是【 】。


    正确答案:4
    4

  • 第14题:

    阅读下面程序: include using namespace std; long fib(int n) {if(n > 2) return(fib

    阅读下面程序:

    include<iostream>

    using namespace std;

    long fib(int n)

    {

    if ( n > 2 )

    return (fib(n-1)+fib(n-2));

    else

    return 2;

    }

    int main()

    {

    cout<<fib(3)<<end1;

    return 0;

    {

    则该程序的输出结果应该是【 】。


    正确答案:4
    4 解析:本题主要考察C++中递归函数的调用。递归函数即自调用函数,在函数体内部直接或间接的自己调用自己,即函数的嵌套调用是函数本身。递归调用分为直接递归调用和间接递归调用两种形式。
    本题程序为求解典型递归数列Fibonacci中任意项值的简化程序(主函数中的调用改成 fib(n),即变成求解任意项值)。主函数通过调用fib()函数,fib()函数内部再通过一个分支结构判断是否进行递归调用或退出递归调用,调用方式为直接递归调用。
    主函数通过实参将值3赋给fib()函数的形参n,由于n‘3满足汀分支语句条件,因此函数进行递归调用,即计算fib(2)和fib(1)的值;将2赋给fib()函数的形参后,
    由于n=2不满足if分支语句条件,因此程序退出递归,返回2:将1赋给fib()函数的形参后,函数同样返回2。因此函数递归调用的最终结果为返回2+2=4,即fib(3) =4,程序最后输出值为4。

  • 第15题:

    有如下程序:includelong fib(int n){if(n>2)return(fib(n-1)+fib(n-2)); else retu

    有如下程序: #include<iostream.h> long fib(int n) { if(n>2)return(fib(n-1)+fib(n-2)); else return(2);} void main( ) {cout<<fib(3);} 该程序的输出结果是

    A.2

    B.4

    C.6

    D.8


    正确答案:B
    解析:fib(3)=fib(2)+fib(1),而fib(2)的返回值为2,fib(1)的返回值也为2,故输出的fib (3)的值为4。

  • 第16题:

    有以下程序includemain(){int k=5,n=0;while(k>0){switch(k){defhult:break;case 1:n+

    有以下程序 #include<stdio.h> main() {int k=5,n=0; while(k>0) {switch(k) {defhult:break; case 1:n+=k: case 2: case 3:n+=k; } k--; } printf("%d\n",n); } 程序运行后的输出结果是( )

    A.0

    B.4

    C.6

    D.7


    正确答案:D
    解析:因为没有break语句,当k=2的时候,会顺序执行两条语句,k=1的时候,会顺序执行3条语句。

  • 第17题:

    有如下程序 long fib(int n) { if(n>2)return(fib(n-1)-fib(n-2)); else return(1); } main() { printf("%d\n",fib(5)); }该程序的输出结果是______。

    A.-3

    B.-2

    C.-1

    D.0


    正确答案:C

  • 第18题:

    有下列程序:

    main()

    {int k=5,n=0;

    do

    {switch(k)

    {case 1: case 3:n+=1;k--;break;

    default:n=0;k--;

    Case 2: case 4;n+=2;k--;break;

    }

    printf("%d",n);

    }while(k>0 && n<5) ;

    }

    程序运行后的输出结果是( )。

    A.235

    B.0235

    C.02356

    D.2356


    正确答案:B
    解析:因为变量的初始值分别为k=5,n=0,所以程序第1次进入循环时,执行default语句,输出0,k减1;这时n=0,k=4,程序进行第2次循环,执行case 4:这个分支,结果是n=2,k=3,打印出2:这时n=2,k=3,程序进行第3次循环,执行case 3:这个分支,结果是n=3,k=2,打印出3;这时n=3,k=2,程序然后进行第4次循环,执行case 2:case4:这个分支,结果是n=5,k=1,打印出5,这时因为n=5不满足n5的循环条件,因此退出循环,程序运行结束。所以在屏幕上打印出的结果是0235。

  • 第19题:

    有下列程序: main() { int k=5,n=0; do { switch(k) { case 1: case 3:n+=1;k--;break; default:n=0;k--; case2: case 4;n+=2;k--;break; } printf("%d",n); }while(k>0&&n<5); } 程序运行后的输出结果是( )。

    A.235

    B.235

    C.2356

    D.2356


    正确答案:B
    解析:因为变量的初始值分别为k=5,n=0,所以程序第1次进入循环时,执行default语句,输出0,k减1:这时n=0,k=4,程序进行第2次循环,执行case 4:这个分支,结果是n=2,k=3,打印出2;这时n=2,k=3,程序进行第3次循环,执行case 3:这个分支,结果是 n=3,k=2,打印出3;这时n=3,k=2,程序然后进行第4次循环,执行case 2:case 4:这个分支,结果是n=5,k=1,打印出5,这时因为n=5不满足n5的循环条件,因此退出循环,程序运行结束。所以在屏幕上打印出的结果是0235。

  • 第20题:

    有以下程序: include main ( ) {int k=5,n =0; while ( k>0){switch (k) {default: b

    有以下程序: #include <stdio, h>main ( ) { int k=5,n =0; while ( k>0) { switch (k) { default: break; case 1 : n+ =k; case 2 : case3 : n+ =k; } k--; printf( "% d \n" ,n);}程序运行后的输出结果是( )。

    A.0

    B.4

    C.6

    D.7


    正确答案:D
    解析:在程序中,当L的值为5和4时,case都没有与其匹配的值,所以执行default语句;当k=3时,执行n+=k;得n=3;当L=2时,执行case2:然后顺序执行case3:n+=k;得n=5;当k=1时,执行case1:n+=k;得n=6,然后顺序执行case2:和case3:n+=k;使得n=7。

  • 第21题:

    有以下程序 main ( ) { int k=5,n=0; while (k>0) { switch (k) { default : break; case 1 : n+=k; case 2 : case 3 : n+=k; } k--; } printf ("%d\n",n); 程序运行后的输出结果是

    A.0

    B.4

    C.6

    D.7


    正确答案:D
    解析:本题考查的是switch语句。switch语句中的case或default只是一种入口标号,它并不形成一种子句的概念。当满足其中某个标号的条件而进入switch语句中时,如果没碰到break语句,将一直执行到switch语句的结尾。题目中使用了一个while循环使k从5递减到1,当k=5或4的时候从default标号进入switch,碰到break;语句立即跳出,没有改变n:当k=3时,执行了一次n+=k;;k=2时,也执行了一次n+=k;k=1时,执行了两次n+=k;所以最终n的值为3+2+1+1=7。故应该选择D。

  • 第22题:

    有如下程序:includeusing namespace std;long fib(int n){ if(n>2) return(fib(n-1)+

    有如下程序: #include<iostream> using namespace std; long fib(int n) { if(n>2) return(fib(n-1)+fib(n-2)); else return(n); } void main() { int i; cout<<"请输入一个整数:"; cin>>i;cout<<endl; cout<<fib(i)<<endl; { 当输入4、2时,该程序的输出结果是( )。

    A.5

    B.4

    C.5

    D.6 1 2 2 2


    正确答案:C
    解析:注意递归调用的过程,当输入2作为函数参数时,调用肋()函数直接返回参数值2;当输入参数大于2时有一个递归调用的过程。

  • 第23题:

    有如下程序 long fib(int n) { if(n>2) return(fib(n-1)+fib(n-2)); else return(2); } main() { printf("%ld/n",fib(3)); } 该程序的输出结果是()

    • A、2
    • B、4
    • C、6
    • D、8

    正确答案:B