下面 C++ 代码执行后的输出是( )。
int m = 14;
int n = 12;
if (m % 2 == 0 && n % 2 == 0)
cout << "都是偶数";
else if (m % 2 == 1 && n % 2 == 1)
cout << "都是奇数";
else
cout << "不都是偶数或奇数";这题考的是取模运算判断奇偶和逻辑与的条件分支。拿到题先别急着看代码,心里过一遍:m 和 n 分别是多少?除以 2 余几?两个条件同时满足吗?满足就进第一个 if,不满足再想是不是两个都奇,都不行就掉 else。
很多学生看到两个 if 就慌,以为要分别判断 m 和 n 是不是偶数,其实命题人就是把两个偶数凑在一起,专门卡住那些只盯着 m 看的人。选项 C 的文字特别绕,‘不都是偶数或奇数’听着像‘至少有一个不是偶数或者都是奇数’,但代码里这句话只在一奇一偶时才输出。如果你把‘不都是’理解成‘不是两个都’,又没注意到‘或奇数’这个歧义,很容易误选 C。还有人习惯画表格,但这题是单次判断,画表反而浪费时间,直接算余数最快。
取模运算判断奇偶是 GESP 一级「表达式与运算」模块的经典考点,命题人把两个偶数放一起,就是要卡住「多人并行判断」的疏忽——很多考生只盯着 m 的余数,忽略了 n 也要参与同一步骤。
看到题先判断 m%2 和 n%2 各自等于几,14%2=0、12%2=0,两个都是 0。再逐行检查条件:第一个 if 要求两个余数同时为 0,成立,直接输出“都是偶数”;第二个 else if 和 else 分支根本不会执行。这一类「多变量同条件」题通法:先算每个变量独立结果,再按条件组合,一旦满足就跳出,别去算后面的分支。
选项 C 的“不都是偶数或奇数”是命题人专门埋下的语义陷阱。“不都是偶数”是“至少有一个是奇数”,“或奇数”又加一层歧义,读起来像“不都是偶数,或者都是奇数”,实际上代码里输出这句话的前提是「既不是两个都偶也不是两个都奇」,即一奇一偶。文字越绕越容易让人以为 C 是正确答案,但真实逻辑链完全指向 A。选项 D 属于凑数的干扰项,用来测试你是否有「没找到答案就乱选」的习惯。
如果改成 m=14、n=13,第一个 if 不成立,第二个 if 也不成立,会掉进 else 输出“不都是偶数或奇数”。再换 m=15、n=13 则进入第二个 if 输出“都是奇数”。刷到类似题先问自己:命题人是不是在考「多条件同时成立」还是「混合情况」,别被文字绕晕了。
基础语法在题库共考过 1295 题,覆盖 11 个考试级别(2008-2026);逐年分布:2008 年 1 题、2011 年 1 题、2019 年 3 题、2023 年 287 题、2024 年 413 题、2025 年 401 题、2026 年 109 题、null 年 80 题。分赛事:GESP 一级 332 题、GESP 二级 283 题、GESP 三级 215 题、GESP 四级 186 题、GESP 七级 91 题、GESP 八级 79 题、GESP 六级 78 题、GESP 五级 23 题、CSP 提高级 3 题、CSP 入门级 3 题、NOIP 提高组 初赛 2 题。控制结构在题库共考过 429 题,覆盖 7 个考试级别(2009-2026);逐年分布:2009 年 2 题、2023 年 81 题、2024 年 138 题、2025 年 160 题、2026 年 45 题、null 年 3 题。分赛事:GESP 一级 133 题、GESP 二级 133 题、GESP 三级 84 题、GESP 四级 76 题、CSP 入门级 1 题、NOIP 提高组 初赛 1 题、NOIP 普及组 初赛 1 题。循环结构在题库共考过 609 题,覆盖 12 个考试级别(2008-2026);逐年分布:2008 年 7 题、2009 年 3 题、2010 年 3 题、2011 年 6 题、2012 年 5 题、2013 年 7 题、2014 年 8 题、2015 年 4 题、2016 年 12 题、2017 年 11 题、2018 年 13 题、2019 年 4 题、2022 年 1 题、2023 年 77 题、2024 年 128 题、2025 年 158 题、2026 年 161 题、null 年 1 题。分赛事:GESP 二级 172 题、GESP 一级 139 题、GESP 三级 89 题、GESP 四级 87 题、NOIP 普及组 初赛 56 题、NOIP 提高组 初赛 23 题、GESP 五级 16 题、GESP 六级 9 题、CSP 入门级 8 题、CSP 提高级 5 题、GESP 七级 3 题、GESP 八级 2 题。
暂无足够依据预测未来可能怎么考。