GESP 一级 · GESP202609 C++ 一级 第 19 题

判断题 · 答案 A · 考点:输入输出

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

题目

下列 C++ 代码执行时如果先后输入 10 和 10 ,则将输出 10小于10 。

int N, M;
cin >> N >> M;
if (N > M)

printf("%d大于%d", N, M);

else

printf("%d小于%d", N, M);

答案:A

考点

输入输出

解题思维

看到 if-else 结构先定位条件表达式,代入已知输入值计算真假,再顺着分支看哪段代码执行。本题核心是条件判断与输出语句的对应关系,属于最基础的流程控制题。做题时先读出输入顺序,确认 N 和 M 的值,再代入 if(N>M) 判断真假,最后看 else 分支的 printf 格式,确保输出字符串与题目描述一致。这类题的通用策略是"读条件→代值→判真假→走分支→验输出",四步走一遍就能避免多数低级错误。

常见错误

错误选项 B 通常源于对条件运算的误判或分支理解偏差。一是把 N>M 当成 N≥M,导致认为 10>10 为真;二是忽略 else 分支的存在,只关注 if 语句,以为条件不成立就不输出;三是混淆 printf 的占位符顺序,把"大于"和"小于"记反。更隐蔽的坑在于题目描述"将输出 10 小于 10",学生容易从数学角度质疑"10 小于 10"为假,却忘了程序输出的是字面字符串而非逻辑判断结果,这种语义陷阱在一级考试中很常见。

详细解析(节选)

考纲定位

本题考查 GESP 一级大纲中的三个核心模块:第 1 章"基本输入输出"中的 cin/printf 语句,第 2 章"运算符"中的关系运算符(>),以及第 3 章"控制结构"中的 if-else 条件分支。命题人把这道题放在试卷里,意在卡住绝大多数考生在"条件真假判断"与"分支执行"之间的认知断层——很多学员能写出 if 语句,却对"当条件不满足时走 else 分支"这一基本流程缺乏直觉,导致在输入相等时误判为 if 条件成立。

解题思维

完整思考链是:先读代码,识别出两个输入变量 N 和 M,然后看 if 条件 N>M。代入输入值 10 和 10,计算 10>10 的布尔结果——这是假。因此程序不会执行 if 分支的 printf,而是落入 else 分支,输出格式字符串"%d 小于%d",其中的%d 分别被替换为 N 和 M 的值,即 10 和 10,最终屏幕显示"10 小于 10"。这一过程属于最基础的流程控制,通法是"读条件→代值→判真假→走分支→验输出",四步走一遍就能避免多数低级错误。

陷阱拆解

错误选项 B 的设计逻辑很典型:命题人利用"条件不满足就不输出"的直觉误区,让考生误以为 if 条件为假时程序直接结束,从而选错。更阴险的是,题目描述"将输出 10 小于 10"中的"小于"是一个字面字符串,并非逻辑关系,学生容易从数学角度质疑"10 小于 10"为假,却忘了程序输出的是字面字符串而非逻辑判断结果,这种语义陷阱在一级考试中很常见。

反命题思维

站在命题人视角,如果把条件改成 N>=M,代入 10 和 10 则条件为真,程序会输出"10 大于 10",答案就会变成 B。如果把输入顺序改为先读 M 再读 N,条件 N>M 依然为假,输出不变,说明输入顺序不影响逻辑。再比如,在 else 分支后加一个 else if (N==M) 输出"相等",就能构造出更复杂的多分支题目,考察对 else-if 链路的理解。这些变式都指向同一个核心考点——条件分支的执行路径,而原题正是把这个考点以最简形式呈现,确保一级考生能清晰区分"条件真假"与"输出内容"的对应关系。

同考点真题

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