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

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

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

题目

下面的 C++ 代码执行时如果先输入 10 回车后输入 20 并回车,其输出是( )。

int N, M;
printf("第一个数:");
scanf("%d", &N);
printf("第二个数:");
scanf("%d", &M);
printf("%(N+M)=%d", N+M, int(N+M));
答案:C

考点

输入输出

解题思维

答案C。逐行追踪代码:从main开始,记录每个变量的值变化。注意循环的起止条件和累加过程。

常见错误

逐行模拟时建议画表格记录变量值的变化过程,特别是循环体中的变化。

详细解析(节选)

【考点】输入输出|printf格式占位符

考纲定位:本题考查《GESP C++一级大纲》"输入输出与变量"模块中的printf格式化输出。命题人刻意用%(N+M)检验学生是否理解%在格式字符串中是占位符而非普通字符——90%考生会误以为它能输出数值。

解题思维:按执行流:先输出提示语,再scanf读入N、M。最后printf时,因格式串含字面%(N+M),这部分不会被替换,仅%d被N+M的值30替换。因此输出为%(N+M)=30。通法:处理printf时逐个解析格式串,区分占位符与纯文本。

陷阱拆解:选项A、B是典型误解题意图的产物——把%(N+M)当成数字或表达式输出。选项D过于绝对。最阴险处在于%在C++中是格式符前缀,若格式串写错(如漏写%)会导致输出异常,这里故意保留%制造视觉误导,只背printf用法而不理解占位符机制必栽跟头。

反命题思维:若把格式串改为"%d=%d",答案成A;若改为"%d+%d=%d",答案成B。刷到类似题先问:格式串里哪些是占位符?哪些是字面?命题人想考你对printf占位符边界条件的理解。

同考点真题

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