考虑下面的 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));
这个问题的测验