GESP 一级 · GESP 202606 C++ 一级 第 7 题

选择题 · 答案 C · 考点:输入输出

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

题目

如下 C++ 代码执行时,其说法错误的是( )。

int N, M;
cin >> N >> M;
if (N > M)
    cout << "A " << (N - M);
else
    cout << "B " << (M - N);
答案:C

考点

输入输出

解题思维

答案C。if-else可以嵌套,if子句和else子句都可以嵌套if-else。else与最近的未匹配if结合。

常见错误

else与最近的未匹配且未加花括号的if结合。建议用花括号明确层次。

详细解析(节选)

【考点】输入输出|条件分支|基本运算

考纲定位:GESP一级《C++基础语法》控制流模块,命题人用一道"if-else"判定卡住所有没分清"真/假/等"边界的学生。

解题思维:先读题——代码按N与M大小关系输出不同前缀和差值。关键观察:只有N>M走A分支,否则(含N=M)走B分支。代入每组数据:4>3→A 1;3<4→B 1;3=3→B 0;4=4→B 0。直接比对选项,C说输出A 0,与执行结果矛盾。

陷阱拆解:C项是典型偷换概念陷阱。命题人把"N=M"归入else分支却故意写成A的前缀,诱导只背"if-N>M-A, else-B"模板的考生掉进"等号算if"的误区。绝对化表述"如果输入3 3,将输出A 0"正是错误所在。

反命题思维:若把条件改成N>=M,则3 3会输出A 0,C就变正确;若把else改为仅N==M时输出B,则4 4会输出B 0,D仍对。刷到类似题先问"命题人想考我什么",别只记结论。

同考点真题

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