GESP 一级 · GESP 202312 C++ 一级 第 23 题

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

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

题目

在 C++ 的程序中,不能用 scanf 作为变量名。

答案:B

考点

函数

解题思维

这道题考的是C++标识符规则与绝对化表述陷阱。拿到题先别急着背结论,想想scanf是不是关键字,再回忆C++标准里哪些名字被严格保留,最后判断‘不能用’这种说法是否太绝对。

常见错误

大部分同学会选A,因为平时做题总被提醒‘不要和库函数重名’,就下意识把scanf当成保留字了。其实C++只保留真正关键字,scanf只是普通函数名,完全合法。还有人会纠结‘会不会和头文件冲突’,以为用了会报错,其实只要在代码里声明了变量,编译器只认局部作用域,不会出错。

详细解析(节选)

【考点】C++标识符规则|scanf函数名与保留字区别|绝对化表述陷阱

考纲定位:本题位于GESP一级‘识别C++变量名与关键字’考点,专门考察‘标识符与关键字’这一核心知识点。命题人把‘scanf’这个函数名伪装成‘绝对不能用’的陷阱,卡住的是死记硬背的考生——他们误以为所有库函数名都是保留字,却忘了C++标准里只有真正的关键字(如if、while、main)才禁止复用。

解题思维:看到题先想‘scanf是不是关键字?’——查C++标准,它不是关键字,只是cstdio头文件里的函数名。因此它完全可以用作变量名,只要不产生符号冲突即可。通法:遇到‘某函数名能否当变量名’的题,先核对是否为关键字(查保留字表),再考虑是否会被宏展开或头文件污染,最后判断命名空间。

陷阱拆解:A选项‘正确’是典型绝对化表述陷阱。命题人利用‘scanf是库函数’这一常识,诱导考生把‘函数名’等同于‘保留字’。其实C++只保留真正关键字,scanf不在其中,所以‘不能用’是假命题。如果你只背结论、不理解本质,就会掉进这个陷阱——以为所有函数名都禁用了。

反命题思维:如果把题干改成‘main’或‘if’,答案立刻变正确,因为它们是真关键字。反之,若改成C语言环境,scanf仍可用,因为C++允许。刷到类似题时,先问自己:‘命题人想考我什么?是关键字规则、头文件污染,还是绝对化表述?’这个思考链能帮你一眼拆穿套路。

考频趋势:基础语法在题库中占比极高(1295题),其中GESP一级就考了332题,2023年单年就有287题,2024年413题,2025年401题,说明这类‘绝对化’陷阱是命题人近年最爱挖的坑。变量与常量考点共77题,GESP一级占40题,基本都在考‘能不能这么写’;基本数据类型267题,GESP一级81题,也常结合关键字规则出题。

预测:基于数据,未来GESP一级和二级仍会高频出现‘某函数/宏名能否当变量名’的判断题,命题人大概率继续用scanf、printf、malloc等常用库函数做幌子,专挑那些‘看似像关键字’的名字下手。考生需牢记:只有C++标准保留字表里的词(约60个)绝对不能用,其余函数名、宏名、全局变量名(除非是全局且未加命名空间)都可以当局部变量用。

同考点真题

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