GESP 一级 · GESP 202403 C++ 一级 第 18 题

判断题 · 答案 B · 考点:函数

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

题目

C++ 函数 scanf() 必须含有参数,且其参数为字符型字面量,其功能是提示输入。( )

答案:B

考点

函数

解题思维

这道题考scanf参数类型,别被‘字符型字面量’带偏。scanf第一个参数必须是字符串字面量(格式控制串),后续才是变量地址,记住‘格式串+地址’这个铁律。

常见错误

学生容易把scanf当成类似cin的流操作,以为它直接读字符就行,或者混淆char与字符串字面量。题干说‘参数为字符型字面量’,其实scanf需要的是字符串字面量(如"%d"),因为它是C语言遗留的格式化函数,第一个参数永远是指向格式串的指针,后续参数必须是变量的地址(&a),否则无法写入。

详细解析(节选)

【考点】scanf函数调用规范|格式化输入|C++标准库与C语言兼容性

1. 命题视角:为什么这道题是坑?

命题人专门挖了‘字符型字面量’这个点。很多初学者刚学scanf就背公式:scanf("%d", &a); 于是误以为scanf的参数就是‘字符’。其实scanf第一个参数是字符串字面量(格式控制串),类型是const char*;后续参数必须是变量的地址(&a),类型是T*。题干说‘参数为字符型字面量’,看似在说scanf的参数,实则偷换概念——它把‘格式串’说成‘字符型字面量’,而字符型字面量是单个char(如'3'),根本不是scanf需要的。这就是典型的‘术语混淆+类型错位’陷阱。

同考点真题

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