GESP 六级 · GESP202609 C++ 六级 第 4 题

选择题 · 答案 B

← 整套速查表 GESP 六级 全部真题

题目

下列代码执行后的输出结果是(  )。

stack<int> s;
queue<int> q;
for (int i = 2; i <= 6; i += 2) {
s.push(i);
q.push(i);
}
s.pop();
q.pop();
cout << s.top() << " " << q.front();
答案:B

解题思维

循环 i=2,4,6 依次入栈入队,栈顶为 6、队头为 2;随后各弹出一个元素,栈顶变为 4、队头变为 4,输出 4 4。

常见错误

A 项是只 push 未 pop 的结果;C 项误以为队列仍保留 6;D 项误以为栈仍保留 6。本质是混淆栈的 LIFO 与队列的 FIFO:两者入队入栈顺序相同,但弹出顺序相反,因此 pop 后栈顶与队头恰好互换。

详细解析(节选)

1. 考纲定位

本题考查《GESP 考试大纲》六级"数据结构"模块中的栈与队列操作。命题人把这道题放在这里,就是要卡住考生对 LIFO 与 FIFO 最本质的区别——很多学生看到"push/pop"就条件反射地想"先进先出",却忘了栈是后进先出。

2. 解题思维

循环 i 从 2 到 6 步长为 2,共执行 3 次:

此时栈顶 s.top() 是 6,队头 q.front() 是 2。

接着各弹出一个:

输出 4 4。

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断