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

判断题 · 答案 B

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

题目

C++ 的整型 $N$ 被赋值为 5,语句 printf("%d*2",N) 执行后将输出 10。( )

答案:B

解题思维

答案B。根据计算机/编程基础知识分析判断。

常见错误

仔细审题,注意"不正确""不属于""不是"等否定词。用排除法缩小范围。

详细解析(节选)

【考点】printf格式输出|字符串常量|算术表达式

1. 考纲定位 本题考查 GESP 一级"基本输入输出"模块的 printf 格式控制。命题人专门卡住初学者对格式串中"字符常量"和"占位符"的混淆——把 %d 后面的 *2 误当成运算符号,这是 C++ 一级里最高频的审题失误。

2. 解题思维 看到 printf("%d*2", N) 先拆开格式串分析:%d 是占位符,对应参数 N 的值(5);紧随其后的 *2 没有占位符,属于纯字符常量,会被原样输出。因此实际输出是 5 拼接 *2 得到 5*2,而非计算结果 10。

3. 陷阱拆解 A 选项的错误设计利用了初学者"看到算式就下意识求值"的惯性思维。最阴险的细节在于 %d 后面紧挨着的 *2——%d 只负责输出第一个参数的十进制值,它后面的任何字符都是字符串的一部分,C 语言不会自动把格式串里的文本当作表达式运算。如果你只背"printf 输出格式"却不懂格式串是"占位符+普通文本"的两段式结构,就会掉进这个坑。

4. 反命题思维 如果把格式串改成 printf("%d*2", N),输出仍是 5*2;若改成 printf("%d*2", N) 或 printf("%d*2", N),答案都不会变,因为 *2 始终只是文本。刷到类似题,先问自己:格式串里有没有未匹配的占位符?有,那就是纯字符,别当运算看。

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