参考答案和解析
正确
更多“23、函数或过程调用需要用到栈。”相关问题
  • 第1题:

    栈在()中有所应用。

    A.递归调用

    B、函数调用

    C.表达式求值

    D、前三个选项都有


    参考答案:D
    解释:递归调用、函数调用、表达式求值均用到了栈的后进先出性质。

  • 第2题:

    函数调用的整个过程就是栈空间操作的过程。下面不属于栈操作过程的是()

    A、把被调函数的栈空间收回

    B、保护调用函数的运行状态和返回地址

    C、传递参数

    D、将控制转交被调用函数


    参考答案:A

  • 第3题:

    当一次函数调用发生时,对其执行过程正确描述的是(28)。

    A.复制实参变量的值→控制流转移到该函数的起始位置→分配一个栈帧→开始执行该函数→控制流返回到函数调用点

    B.控制流转移到该函数的起始位置→复制实参变量的值→分配一个栈帧→开始执行该函数→控制流返回到函数调用点

    C.控制流转移到该函数的起始位置→分配一个栈帧→复制实参变量的值→开始执行该函数→控制流返回到函数调用点

    D.分配一个栈帧→复制实参变量的值→控制流转移到该函数的起始位置→开始执行该函数→控制流返回到函数调用点


    正确答案:D
    解析:当一次函数调用发生时,其执行过程可归纳为以下5个步骤:①在内存的栈空间中为其分配一个栈帧,用来存放该函数的形参变量和局部变量;②把实参变量的值复制到相应的形参变量中;③控制流转移到该函数的起始位置;④该函数开始执行;⑤当这个函数执行完以后,控制流和返回值返回到函数调用点。

  • 第4题:

    调用递归过程或函数时,处理参数及返回地址需要用一种称为( )的数据结构。

    A.队列

    B.栈

    C.多维数组

    D.顺序表


    正确答案:B
    解析:在递归函数执行时函数调用过程中形成嵌套时,最后被调用的函数最先返回。例如,用递归方法求3的阶乘(以factorial(n)表示n的阶乘)的过程如下:factorial(3)=3*factorial(2)=3*(2*factorial(1))=3*(2*1)=3:1:2=6。显然,要求3的阶乘,需要递归调用2的阶乘,要求2的阶乘,需要先求出l的阶乘,依此类推,求出1的阶乘后才得到2和3的阶乘。求解的过程满足后调用先返回的特点,因此需要使用到栈。

  • 第5题:

    在函数调用过程中,如果函数A调用了函数B,函数B又调用了函数A,则


    正确答案:B

  • 第6题:

    递归过程或函数调用时,处理参数和返回地址,通常使用一种称为()的数据结构。

    • A、队列
    • B、多维数组
    • C、线性表
    • D、栈

    正确答案:D

  • 第7题:

    程序运行过程中,把函数(或过程)调用与响应调用所需要的代码相结合的过程称为()。

    • A、语义分析
    • B、代码连接
    • C、静态绑定
    • D、动态绑定

    正确答案:D

  • 第8题:

    在函数调用过程中,如果函数A调用函数B,函数B又调用函数A,则这种函数调用被称为()

    • A、间接递归调用
    • B、直接递归调用
    • C、间接循环调用
    • D、直接循环调用

    正确答案:A

  • 第9题:

    调用递归过程或函数时,处理参数及返回地址需要用一种称为()的数据结构。

    • A、队列
    • B、栈
    • C、多维数组
    • D、顺序表

    正确答案:B

  • 第10题:

    单选题
    程序运行过程中,把函数(或过程)调用与响应调用所需要的代码相结合的过程称为()。
    A

    语义分析

    B

    代码连接

    C

    静态绑定

    D

    动态绑定


    正确答案: B
    解析: 静态绑定(又称为静态编联或静态装配)是指绑定在编译阶段完成,即绑定过程在程序运行之前完成。动态绑定是指绑定在程序执行阶段完成,绑定过程在程序运行时才动态完成。本题是在函数调用时把函数与代码结合起来,也就是说是在程序运行中进行绑定的。

  • 第11题:

    单选题
    在函数调用过程中,如果函数A调用函数B,函数B又调用函数A,则这种函数调用被称为()
    A

    间接递归调用

    B

    直接递归调用

    C

    间接循环调用

    D

    直接循环调用


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

  • 第12题:

    单选题
    调用递归过程或函数时,处理参数及返回地址需要用一种称为()的数据结构。
    A

    队列

    B

    C

    多维数组

    D

    顺序表


    正确答案: A
    解析: 当在一个函数的运行期间调用另一个函数时,在运行被调用函数之前,系统需要先完成3个操作,即将所有的实参、返回地址等信息传递给被调函数保存;
    为被调函数的局部变量分配存储区;
    将控制转移到被调函数的入口。
    从被调函数返回调用函数之前,系统还要完成3个操作,即保存被调函数的计算结果;
    释放被调函数的数据区;
    依照被调函数保存的地址将控制转移到调用函数。
    当有多个函数构成嵌套调用时,按照"后调用先返回"的原则,上述函数之间的信息传递和控制转移必须通过"栈"来实现,每当调用一个函数时,就在栈顶为它分配一个存储区,每当退出一个函数时,就释放它的存储区,当前正在运行的函数的数据区必在栈顶。递归函数的运行过程类似于多个函数的嵌套调用,只是调用和被调用函数是同一个函数。

  • 第13题:

    当程序运行时,如果遇到引用空指针、下标越界或显式调用panic函数等情况,则先触发panic函数的执行,然后调用延迟函数。调用者继续传递panic,因此该过程一直在调用栈中重复发生:函数停止执行,调用延迟执行函数。如果一路在延迟函数中没有recover函数的调用,则会到达该携程的起点,该携程结束,然后终止其他所有携程,其他携程的终止过程也是重复发生:函数停止执行,调用延迟执行函数()

    此题为判断题(对,错)。


    参考答案:错

  • 第14题:

    调用递归过程或函数时,处理参数及返回地址需要用一种称为(11)的数据结构。

    A.队列

    B.栈

    C.多维数组

    D.顺序表


    正确答案:B
    解析:本题考查数据结构基础知识。
      在函数调用过程中形成嵌套时,则应使最后被调用的函数最先返回,递归函数执行时也是如此。例如,用递归方式求4的阶乘(以factorial(n)表示求n的阶乘)的过程如下所示:
      factorial(4)=4*factorial(3)
            =4*(3*factorial(2))
            =4*(3*(2*factorial(1)))
            =4*(3*(2*1)
            =4*(3*2)
            =4*6
            =24
      显然,要求4的阶乘,需要通过递归调用求出3的阶乘,要求出3的阶乘,必须先求出2的阶乘,依此类推,求出1的阶乘后才能得到2的阶乘,然后才能得到3和4的阶乘。该求解过程中的函数调用和返回需要满足后调用先返回的特点,因此需要使用栈结构。

  • 第15题:

    在程序的执行过程中,实现嵌套调用函数正确返回可以用(119)结构。

    A.队列

    B.栈

    C.树

    D.图


    正确答案:B
    解析:函数调用的过程是:系统首先将当前函数的上下文环境信息压入堆栈,然后执行被调用的函数;执行结束后,系统将程序执行信息弹出栈,继续执行原来的程序。可见,堆栈的特点恰好满足要求。

  • 第16题:

    在程序的执行过程中,用______结构可以实现嵌套调用函数的正确返回。

    A.队列

    B.栈

    C.树

    D.图


    正确答案:B
    解析:栈是在同一端进行插入和删除运算的线性表,具有先进后出的特性。栈的这种特性正好适用函数嵌套调用的过程。(1)调用函数时:系统将为调用者构造一个由参数表和返回地址组成等信息的活动记录,并将其压入到由系统提供的运行时刻栈的栈顶,然后将程序的控制权转移到被调函数。若被调函数有局部变量,则其活动记录还包括为局部变量分配的存储空间。(2)被调函数执行完毕时:系统将运行时刻栈顶的活动记录退栈,并根据退栈的活动记录中所保存的返回地址将程序的控制权转移给调用者继续执行。

  • 第17题:

    子程序调用过程中,需要把运行现场的数据保存到()中,返回主调函数在从中间取出。

    • A、栈
    • B、图
    • C、二叉树
    • D、队列

    正确答案:A

  • 第18题:

    在编程过程中函数需要先定义再调用。


    正确答案:正确

  • 第19题:

    栈在()中有所应用。

    • A、递归调用
    • B、函数调用
    • C、表达式求值
    • D、前三个选项都有

    正确答案:D

  • 第20题:

    在调用一个函数的过程中又直接或间接地调用该函数自己,这种调用称为函数的()调用。


    正确答案:递归

  • 第21题:

    单选题
    递归过程或函数调用时,处理参数及返回地址,要用一种称为()的数据结构。
    A

    队列

    B

    多维数组

    C

    D

    线性表


    正确答案: C
    解析:

  • 第22题:

    填空题
    在调用一个函数的过程中又直接或间接地调用该函数自己,这种调用称为函数的()调用。

    正确答案: 递归
    解析: 暂无解析

  • 第23题:

    单选题
    递归过程或函数调用时,处理参数和返回地址,通常使用一种称为()的数据结构。
    A

    队列

    B

    多维数组

    C

    线性表

    D


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

  • 第24题:

    单选题
    子程序调用过程中,需要把运行现场的数据保存到()中,返回主调函数在从中间取出。
    A

    B

    C

    二叉树

    D

    队列


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