成功执行下面的 C++ 代码,先后从键盘上输入 5 回车和 2 回车,输出是( )。
cin >> a;
cin >> b;
cout << a + b;答案D。逐行追踪代码:从main开始,记录每个变量的值变化。注意循环的起止条件和累加过程。
逐行模拟时建议画表格记录变量值的变化过程,特别是循环体中的变化。
【考点】变量声明|类型推断|未定义变量
🎯 考纲定位 本题考查《GESP 大纲》基础语法模块中"变量必须先声明后使用"的硬性规则。命题人专盯初学者"看到 cin 就以为能直接赋值"的惯性思维,卡住的是对声明必要性的认知盲区。
🧠 解题思维 正确思考链:看到 cin >> a; 先确认 a 是否已声明——未声明直接报错,程序无法运行,输出自然不确定。通法是:所有输入输出操作前,必须检查变量是否已用 int a; 等语句显式声明,否则编译即失败。
🪤 陷阱拆解 选项 A 和 B 都假设了隐式声明(以为 cin 会自动定义变量),这是 C++ 不存在的能力;C 把 a + b 误认为会输出两个数,混淆了表达式求值与流输出,且仍忽略声明问题。D 是唯一触及"未声明即非法"本质。
🔄 反命题思维 命题人视角:若把题干改成"在代码前加入 int a, b;",答案会立刻变成 A(输出 7);若改成 double a, b;,输出仍是 7(浮点默认格式)。所以遇到类似题,先问自己"变量有声明吗?"——没声明,一切输出都是假象。