参考答案和解析
正确答案:A
首先n=fun(3),3被当作参数传递进去,进行了第一次调用,3被当作参数传进去后,程序会执行语句elseretllnlfun(k—1)+1;进行第二次调用,而参数是3"1也就是2。2被当作参数传进去后,程序会执行语句elsereturnfun(1[一l)+1;进行第三次调用,而参数是2一l也就是1。l被当作参数传进去后。程序会执行语句elseif(k==1)returnl;不再递归调用,因此最终结果为3次,选项A)正确。
更多“设有如下函数定义 若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是( )。A.3B.2# ”相关问题
  • 第1题:

    设有如下函数定义:

    若执行调用语句“ll=fm(3);”,则函数tim总共被调用的次数是( )。

    A.2

    B.3

    C.4

    D.5


    正确答案:B
    首先n=fun(3),3被当作参数传递进去,这就进行了-次调用,3被当做参数传进去后,程序会执行这句deerctlu"nfun(k-1)+1;这就调用了第二次,而参数是3—1也就是2。2被当做参数传进去后,程序会执行这句elseremmfun(k—I)+1;这就调用了第三次,而参数是2-1也就是1。1被当做参数传进去后,程序会执行这句elseif(k==1)return1:不再递归调用,所以最终结果为3次。

  • 第2题:

    (32)设有如下函数定义

    int fun(int k)

    { if (k<1) return 0;

    else if(k==1) return 1;

    else return fun(k-1)+1;

    }

    若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是

    A)2

    B)3

    C)4

    D)5


    正确答案:B

  • 第3题:

    函数定义为Func(int *p),变量定义为n=100,则下面调用该函数正确的是?

    A.Fun(20)

    B.Fun(20+n)

    C.Fun(n)

    D.Fun(&n)


    B 本题考查的是指针函数。指针函数定义的基本格式为:类型说明符 函数名。其中,“类型说明符”表示返回的指针值所指向的数据类型。

  • 第4题:

    若主函数中有定义语句:int a[10],b[10],c;,在主函数前定义的fun函数首部为:void fun(int x[ ]),则以下选项中错误的调用语句是( )。

    A.fun(b);

    B.fun(&c);

    C.fun(&a[3]);

    D.fun(b[11]);


    答案:D 
    解析:fun函数的形式参数为一个数组,需要实参为一个地址,而b[11]是一个整型元素,参数类型不一致,且b[11]已经溢出,所以D项错误。 

  • 第5题:

    若主函数中有定义句:int a[10] ,b[10],c; 在主函数前定义的fun函数首部为:void fun(int x[ ]), 则以下选项中错误的调用语句是?

    A.fun(b);

    B.fun(&c);

    C.fun(&a[3]);

    D.fun(b[1]);


    b=fun(a,10);