📜  门| GATE-CS-2015(套装2)|第 48 题

📅  最后修改于: 2021-09-25 04:17:43             🧑  作者: Mango

考虑下面的 C 程序。

#include 
int *A, stkTop;
int stkFunc (int opcode, int val)
{
    static int size=0, stkTop=0;
    switch (opcode)
    {
    case -1:
        size = val;
        break;
    case 0:
        if (stkTop < size ) A[stkTop++]=val;
        break;
    default:
        if (stkTop) return A[--stkTop];
    }
    return -1;
}
int main()
{
    int B[20];
    A=B;
    stkTop = -1;
    stkFunc (-1, 10);
    stkFunc (0, 5);
    stkFunc (0, 10);
    printf ("%d\n", stkFunc(1, 0)+ stkFunc(1, 0));
}

上面程序打印出来的值是___________
(一) 9
(乙) 10
(三) 15
(四) 17答案: (C)
说明: main中的代码,基本上是初始化一个大小为10的栈,然后压入5,再压入10。

最后,printf 语句打印两个弹出操作的总和,即 10 + 5 = 15。

stkFunc (-1, 10);   // Initialize size as 10
    stkFunc (0, 5);    // push 5
    stkFunc (0, 10);   // push 10

    // print sum of two pop
    printf ("%d\n", stkFunc(1, 0) + stkFunc(1, 0));

这个问题的测验