GESP 2024 年 3 月 C++ 二级判断题 1-10 解析
第 1 题
题目: 输出是 28.5。 答案: 错误
这里卡在类型转换。int(s) 会直接把小数部分截掉,不会四舍五入。
int(18.5) // 结果为 18
所以 18 + 10 得到的是 28,不是 28.5。
第 2 题
题目: Xyz、xYz、xyZ 是不同变量? 答案: 正确
C++ 对大小写很敏感。变量名只要字母大小写不同,就算不同标识符。
abc != Abc != aBc
这个规则很基础,但考试里经常拿来绕人。
第 3 题
代码: cout << (8 < 9 < 10)
题目: 输出 true?
答案: 错误
< 是从左到右结合的。先算 8 < 9,结果是 true,在表达式里会转成 1,再算 1 < 10,结果还是 true。
默认情况下,cout 打印布尔值不是字符串 true,而是 1 或 0。如果想直接输出文字形式,要打开 boolalpha。
#include <iostream>
using namespace std;
int main() {
cout << boolalpha;
cout << (8 < 9 < 10);
return 0;
}
这段代码输出 true。不用的时候,可以用 noboolalpha 关掉。
第 4 题
代码: for(i=0; i<100; i+=2);
题目: i 的范围是 0 到 99?
答案: 错误
这段循环每次加 2,实际取值是 0, 2, 4, ..., 98。它不会走到 99,更谈不上覆盖 0 到 99。
顺手一提,末尾那个分号也很容易被忽略,真写代码时要小心。

