GESP 一级 · GESP 202412 C++ 一级 第 24 题

判断题 · 答案 B

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

题目

在 C++ 中,对浮点变量 float f,则语句 cin >> f; cout << (f<1);;在输入是 2e-1 时,输出是 0。( )

答案:B

解题思维

答案B。cout用于输出到标准输出(通常是屏幕)。cin从标准输入读取。

常见错误

cout和cin在iostream头文件中定义,使用时需#include <iostream>。

详细解析(节选)

【考点】浮点科学计数法|条件表达式输出|布尔值输出

命题人卡住的是考生对"浮点数科学计数法"和"布尔表达式输出"这两个基础概念的混淆。在 GESP 一级大纲里,这属于 C++ 基础语法模块,绝大多数初学者会误把 2e-1 当成 20 或 0.02,却忘了科学计数法里 e 的指数表示幂次,2e-1 实际是 2×10⁻¹=0.2。

解题的关键在于先正确解析输入,再代入比较。cin >> f; 把 2e-1 读入为 0.2,接着 cout << (f<1); 中,(f<1) 是布尔表达式,0.2<1 为真,C++ 输出布尔值时,true 对应 1,false 对应 0,因此屏幕应该输出 1,而不是 0。题目断言"输出是 0",显然与事实相反,故选 B(错误)。

陷阱设计非常典型:选项 A"正确"是利用考生对科学计数法的记忆偏差,误以为 2e-1 是 20 或 0.02,从而得出 f<1 为假、输出 0 的错误推论;而命题人真正想考的是"浮点输入解析 + 布尔输出规则"的组合判断。如果你只背"浮点输出 0 或 1"的结论,却不去拆解输入格式,就会掉进这个坑。

反命题思维:如果题目把输入改成 2e0,f 变为 2,f<1 为假,输出就是 0,此时答案会翻转为 A;若改成 2e-2,f=0.02,f<1 仍为真,输出仍是 1,答案不变。所以刷到这类题,先问自己"命题人想考我什么"——是考科学计数法解析,还是考布尔输出规则?分清主次,才能避开陷阱。

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