「C++」1~4级,你能通过几级?
- 大杂烩
- 2026-04-02
- 677热度
- 0评论
这个季度的GESP等级考试已经结束,下次要到6月份才能参加了,没有参加的同学,你觉得自己的水平到几级了呢?不妨做个测试。
大家好,我是大李!
GESP 2026年3月的认证已经结束。
大李翻阅了 1~4 级的真题,从每一级中挑选了2个代表性且有趣的题目分享给大家。看看以你现在的水平,能闯到第几关?
每级测试结束都有解析,别忘了查看哦!
一级
一级主要考察对计算机系统的初步认知以及 C++ 的基础语法。
T1、硬件与输入输出
原题: 2026年春节联欢晚会上一个武术表演节目《武BOT》。节目中多个人形机器人会表演空翻,它们落地可能会有微微踉跄,但都会迅速调整姿态站稳,并适当移动来和前后左右的其他机器人保持原来队列。如果将机器人视作一个计算机系统,那么在该计算机系统中下面哪一项不能作为输入设备( )。
A. 检测重心的重力传感器
B. 预装的 AI 算法程序
C. 接收动作指令的遥控器
D. 拍摄其他机器人的摄像头
T2、变量命名规则
原题: 如果将下面 C++ 代码中的所有 PI 改写为 Pai,有关说法正确的是( )。
double PI = 3.1415926;
cout << (PI);
A. 程序将报错,因为 Pai 不是 C++ 关键词。
B. 程序将报错,因为 Pai 未定义。
C. 程序将报错,因为 PI 是常量,不能改名。
D. 程序能正常编译执行,且输出结果不变。
T1 解析 选 B。输入设备负责采集外部信息。传感器、遥控接收器和摄像头都是采集数据的硬件;而“AI 算法程序”属于软件/处理系统,不属于硬件输入设备。
T2解析 选 D。C++ 的变量名只要符合命名规则(字母、数字、下划线组成,数字不开头),叫什么都可以。
PI改成Pai只是换个名字,不影响功能。
二级:
二级考察的难点在于逻辑表达式的等效转化以及浮点数的存储特性。
T1:浮点数精度陷阱
原题: 执行下面代码后,输出结果是( )。
cout << ((0.1 + 0.2) == 0.3);
A. 1
B. 0
C. 0.3
D. 编译错误
T2:逻辑转换(德·摩根定律)
原题: 逻辑表达式 !(x > 5 && y <= 10) 对应的等价表达式是( )。
A. x <= 5 && y > 10
B. x > 5 || y <= 10
C. x <= 5 || y > 10
D. x < 5 || y >= 10
T1解析 选 B。在计算机内部,0.1 和 0.2 无法用二进制精确表示。0.1 + 0.2 的实际计算结果是 0.30000000000000004,并不严格等于 0.3。所以输出为 0(假)。
T2解析 选 C。根据德·摩根定律(涨知识):!(A && B) 等价于 !A || !B。对 x > 5 取反得 x <= 5,对 && 取反得 ||,对 y <= 10 取反得 y > 10。
三级
三级重点在于字符处理(ASCII码)、进制转换和位运算。
T1:字符与整型的转化
原题: 如果字符变量的值是字符 '1',那么 (int)'1' 的值是?( )
A. 1
B. -1
C. 49
D. +1 或者 -1
T2:位运算技巧
原题: a、b 是整型变量,各自有互不相同的初始值。下列程序实现了什么效果( )。
a = a ^ b;
b = a ^ b;
a = a ^ b;
A. a, b 的值从始至终都没有改变。
B. a, b 的值实现了互换。
C. a, b 的值互换了以后,又还回去了。
D. a, b 的值没有意义。
T1解析 选 C。字符在内存中存储的是其 ASCII 码值。字符 '0' 的码值是 48,字符 '1' 就是 49。
T2解析 选 B。这是著名的利用“异或运算”交换两个变量值的技巧,不需要额外的临时变量即可完成互换。
四级
四级引入了指针、作用域、结构体和基础排序算法,是业余与专业的“分水岭”。
T1:多级指针运算
原题: 执行下面代码后,输出为( )。
int a = 5;
int* p = &a;
int** q = &p;
**q += 7;
cout << a << " " << *p;
A. 5 5
B. 12 12
C. 12 5
D. 5 12
T2:变量作用域
原题: 执行下面代码后,输出为( )。
int x = 3;
void f() {
int x = 10;
x += 2;
cout << x << " " << ::x << " ";
}
int main() {
f();
return 0;
}
A. 12 3
B. 12 12
C. 5 3
D. 3 12
T1解析 选 B。
p指向a,q指向p。因此**q直接指向变量a。**q += 7使a变为 12。由于p也指向a,*p自然也是 12。
T2解析 选 A。函数内的
int x = 10是局部变量,屏蔽了全局变量。x += 2修改的是局部变量(变 12)。而::x是作用域解析符,指向全局变量x(依然是 3)。
