C++ 的整型 $N$ 被赋值为 5,语句 printf("%d*2",N) 执行后将输出 10。( )
答案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 始终只是文本。刷到类似题,先问自己:格式串里有没有未匹配的占位符?有,那就是纯字符,别当运算看。