news 2026/5/14 19:24:42

GESP-C++考试(三级)考试重点 (附:【编程题模板】大全)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GESP-C++考试(三级)考试重点 (附:【编程题模板】大全)

一、GESP-C++考试(三级)考试重点

1、C++ 三级考试的【官方定位】

三级是从“语法”走向“算法”的第一关


(1)官方目标总结一句话是:

👉能使用数组、字符串,配合枚举法和模拟法,解决实际问题


(2)📌 注意:

  • 三级考试,不强调算法竞赛

  • 不追求最优复杂度

  • 强调“规则理解 + 程序实现”


2、C++ 三级【知识点总览】

按照大纲,三级内容可以清晰拆成 6 大块


① 数据编码(理解型知识)

(1)知识重点:

原码、反码、补码


(2)考试要求

  • 理解概念

  • 会判断

  • 简单的手算


(3)常见考法

  • 选择 / 判断题

  • 不作为复杂编程核心

掌握“原码、反码、补码”的相关知识


② 进制转换(必考)

(1)知识重点:

二进制、八进制、十进制、十六进制


(2)考试要求

  • 十进制 ↔ 二进制

  • 简单十六进制字符处理

  • 配合字符串 / 位运算


(3)常见考法

  • 编程题

  • 枚举 + 进制拆分

进制转换是三级考试的重点


③ 位运算(三级特色重点)

(1)知识重点:

&、|、~、^、<<、>>


(2)考试要求

  • 会使用

  • 能与枚举 / 判断配合


(3)常见用途

  • 判断奇偶

  • 统计二进制 1 的个数

  • 构造条件判断

要了解位运算的作用,活学活用


④ 算法的概念与描述

(1)知识重点:

自然语言描述、流程图描述、伪代码描述
枚举法、模拟法


(2)实际考试中体现为:

  • 会不会把题目“翻译成程序”

  • 是否逻辑清楚


(3)重点算法

算法地位
枚举法★★★★★
模拟法★★★★★

(4)📌 核心思想

所有可能 → 一个个试
所有步骤 → 一步步做


⑤ 数组

(1)知识重点:

C++ 数组基本应用


(2)必会内容

  • 数组定义、读入

  • 遍历

  • 统计 / 比较

  • 模拟过程


(3)常见题型

  • 最大 / 最小

  • 计数

  • 前缀累加

  • 双重循环枚举

考试中,数组长度不大,重逻辑不重性能


⑥ 字符串及其函数(高频)

(1)知识重点:

字符串大小写转换、搜索、分割、替换等


(2)实际要求

  • string

  • length()

  • substr()

  • 字符遍历

  • ASCII 判断


(3)常见考法

  • 统计字符

  • 字符变换

  • 拆分字符串

  • 简单规则判断(如回文)

字符串的知识与运用


3、三级考试中【明确“不考”的内容】

这是家长和学生最容易焦虑的点,可以直接讲清楚:

❌ 不考内容包括:

  • 递归

  • 排序算法

  • DFS / BFS

  • 动态规划

  • 贪心算法(作为概念不出现)

📌 若题目“像”这些
👉 本质仍是枚举 / 模拟


4、三级编程题【整体特征】

(1)根据大纲+历年真题:

  • 编程题:2 题

  • 每题:25 分

  • 数据范围小

  • 不卡时间


(2)代码基础特征

  • for / while很多

  • 条件判断清晰

  • 输出格式严格


二、三级考试编程题模板

1️⃣:数组 + while / for 模拟(三级最常见)

(1)📌代表代码

while (1) { // 找最大 // 找最小 // 修改数组 cnt++; }

(2)👉 相关考点

  • 数组

  • 多次循环

  • 状态是否能正确终止


✅ 三级通用模板

int a[N]; int n, ans = 0; while (true) { // 1️⃣ 找关键元素(最大 / 最小 / 第一个满足) int pos = -1; // 2️⃣ 判断是否结束 if (结束条件) break; // 3️⃣ 修改数组(模拟规则) a[pos] -= x; // 4️⃣ 统计答案 ans++; }

🧠枚举+模拟算法

“这类题不是算,是一步一步 枚举 或者 模拟 出来的。


2、模板 2️⃣:日期 / 日历类【强模拟】

(1)📌代表代码(判断星期几)

w = (w + days[i] - 1) % 7 + 1;

(2)👉 相关考点

  • 模拟真实世界规则

  • 取模

  • 循环推进状态


(3)✅ 三级通用模板

int state = 初始状态; for (int i = 起点; i <= 终点; i++) { state = (state + 变化量) % 周期; }

(4)📌核心思想

根据要求,取模“挪状态”


3、模板 3️⃣:顺序遍历

(1)📌代表代码

a[i] = max(a[i - 1] + 1, a[i]);

(2)👉 相关考点

  • 顺序遍历

  • “前一个影响后一个”


(3)✅ 三级通用模板

for (int i = 2; i <= n; i++) { if (a[i] 不满足规则) { a[i] = 修正后的值; } ans += a[i]; }

(4)🧠核心思想

不回头、不回改,只往前推


4、模板 4️⃣:位运算

┌───────────────┐ │ 1️⃣ 基本位运算符 │ └───────────────┘ & : 按位与(AND) | : 按位或(OR) ^ : 按位异或(XOR) ~ : 按位取反(NOT) << : 左移(乘2^n) >> : 右移(除2^n, 整数除法向下取整) 例子: int a = 5; // 0101 int b = 3; // 0011 int c = a & b; // 0001 -> 1 int d = a | b; // 0111 -> 7 int e = a ^ b; // 0110 -> 6 int f = ~a; // 11111111111111111111111111111010 -> -6 (补码) int g = a << 1;// 1010 -> 10 int h = a >> 1;// 0010 -> 2
┌───────────────┐ │ 2️⃣ 判断奇偶 │ └───────────────┘ int x; bool isEven = (x & 1) == 0; // 偶数 bool isOdd = (x & 1) == 1; // 奇数
┌───────────────┐ │ 3️⃣ 统计二进制 1 的个数│ └───────────────┘ int cnt = 0; while (x) { cnt += (x & 1); x >>= 1; }

5、模板 5️⃣:字符串

(1)C++string函数速查表

┌─────────────┐ │ 1️⃣ 创建与赋值 │ └─────────────┘ string s; // 空字符串 "" string s("Hello"); // 直接初始化 string s2(s); // 拷贝初始化 string s3(5, 'x'); // 重复字符 "xxxxx" s = "World"; // 赋值 s.assign("New"); // assign函数赋值 s.assign(s2, 1, 3); // 从s2索引1开始取3个字符 ┌─────────────┐ │ 2️⃣ 访问与遍历 │ └─────────────┘ s[i] / s.at(i) // 访问字符 s.front() / s.back() // 首尾字符 for(char c : s) // 遍历 cout << c; ┌─────────────┐ │ 3️⃣ 修改与拼接 │ └─────────────┘ s += "abc"; // 拼接 s.append("def"); // 拼接 s.append(s2, 0, 3); // 拼接子串 s.replace(0, 2, "XY"); // 替换 s[0] = 'A'; // 修改字符 s.at(1) = 'B'; ┌─────────────┐ │ 4️⃣ 查找 │ └─────────────┘ s.find("abc") // 返回索引 s.find('c') s.rfind('c') // 反向查找 s.find_first_of("aeiou") // 第一个匹配的字符 s.find_last_of("aeiou") // 最后一个匹配的字符 结果为 string::npos 表示未找到 ┌─────────────┐ │ 5️⃣ 比较 │ └─────────────┘ s1 == s2 s1 != s2 s1.compare(s2) // <0 s1<s2, 0相等, >0 s1>s2 ┌─────────────┐ │ 6️⃣ 子串 │ └─────────────┘ s.substr(pos, len) // 从pos开始,取len个字符 ┌─────────────┐ │ 7️⃣ 插入与删除 │ └─────────────┘ s.insert(pos, "abc") // 插入 s.erase(pos, len) // 删除 s.pop_back() // 删除最后一个字符 ┌─────────────┐ │ 8️⃣ 大小与清空 │ └─────────────┘ s.size() / s.length() // 长度 s.empty() // 是否为空 s.clear() // 清空 ┌─────────────┐ │ 9️⃣ 其他工具 │ └─────────────┘ toupper(c) / tolower(c) // 大小写转换 sort(s.begin(), s.end()) // 排序 reverse(s.begin(), s.end())// 反转

(2)💡记忆小技巧

  • 创建/赋值=,assign(),string(n, c)

  • 访问/修改[],at(),front/back,replace

  • 拼接/插入+=,append(),insert()

  • 删除/清空erase(),pop_back(),clear()

  • 查找/子串find(),rfind(),substr()

  • 大小/比较size(),empty(),compare()

  • 工具→ 排序、反转、大小写转换


6、模板 6️⃣:字符画 / 输出模拟

(1)📌代表代码

for (int row = 0; row < 5; row++) { for (char digit : n) { // 每个字符 → 一块图形 } }

(2)👉 相关考点

  • 双层循环

  • 先看图形,找出规律,按照规律输出图形

  • 输出格式是否精确


(3)✅ 三级通用模板

for (int row = 0; row < H; row++) { string line = ""; for (每个元素) { line += 当前行应该输出的内容; } cout << line << endl; }

(4)🧠考试提醒

三级很多人不是不会,是“少空格 / 多空格”


7、模板 7️⃣:字符串拆分 + 局部判断

(1)📌代表代码

for(int j=2;j<=m-2;j++){ s1 = s.substr(0,j); s2 = s.substr(j,...); // 判断 s1, s2 }

(2)👉 相关考点

  • substr

  • 枚举分割点

  • 对每一段做判断(回文)


(3)✅ 三级通用模板

for (int cut = L; cut <= R; cut++) { string left = s.substr(0, cut); string right = s.substr(cut); if (判断 left && 判断 right) { // 满足条件 } }

(4)🧠 考试提醒

先切,再查


8、模板 8️⃣:进制转换

(1)📌 十进制 → 二进制

int n; cin >> n; while (n > 0) { cout << n % 2; n /= 2; }

(注意:顺序反的,要看题目要求,是不是倒回来)


(2)📌 字符 → 数字(十六进制)

if (c >= '0' && c <= '9') val = c - '0'; else val = c - 'A' + 10;

9、模板 9️⃣:数学函数

(1)C++ 常用数学函数:

#include <iostream> #include <cmath> // 数学函数头文件 #include <algorithm> // max, min using namespace std; int main() { // ----------------------------- // 1️⃣ 绝对值 // ----------------------------- int a = -5; double b = -3.14; cout << abs(a) << endl; // 5 cout << fabs(b) << endl; // 3.14 (浮点数绝对值) // ----------------------------- // 2️⃣ 取整函数 // ----------------------------- double x = 3.7, y = -3.7; cout << ceil(x) << endl; // 4 向上取整 cout << floor(x) << endl; // 3 向下取整 cout << round(x) << endl; // 4 四舍五入 cout << round(y) << endl; // -4 // ----------------------------- // 3️⃣ 幂与开方 // ----------------------------- cout << pow(2,3) << endl; // 2^3 = 8 cout << sqrt(16) << endl; // 4 cout << cbrt(27) << endl; // 立方根 3 // ----------------------------- // 4️⃣ 最大值 / 最小值 // ----------------------------- int m = 10, n = 20; cout << max(m,n) << endl; // 20 cout << min(m,n) << endl; // 10 return 0; }

(2)💡记忆小技巧

  1. 绝对值abs/fabs

  2. 向上 / 向下 / 四舍五入ceil/floor/round

  3. 平方根 / 幂sqrt/pow

  4. 最大/最小值max(a,b)/min(a,b)


10、【三级编程题万能总模板】

#include <bits/stdc++.h> using namespace std; int main() { // 1️⃣ 输入 int n; cin >> n; // 2️⃣ 定义数据结构 // int a[ ]; // string s; // 3️⃣ 核心算法 // 枚举 / 模拟 / 位运算 // 4️⃣ 输出 cout << ans << endl; return 0; }

三、总结

🎯GESP C++ 三级编程题考的是:

  • 能不能看懂题

  • 能不能用循环“照着规则写程序”

而不是:

  • 算法技巧

  • 编程速度

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 2:16:10

红外遥控的价值回归——在智能时代的独特意义

随着蓝牙、WiFi、zigbee等无线技术的发展&#xff0c;智能家电逐渐成为市场主流&#xff0c;很多人认为红外遥控这种“老旧技术”已经过时&#xff0c;甚至很多新发布的手机也取消了红外发射模块。但实际上&#xff0c;红外遥控在智能时代依然有着不可替代的价值&#xff0c;它…

作者头像 李华
网站建设 2026/5/10 14:53:22

专用网络安全路由器是否比普通路由器更安全?

专用的网络安全路由器是否真的比普通路由器更安全&#xff1f; 我想很多用户都有这个问题&#xff0c;毕竟能更放心谁有甘于随大流呢&#xff1f; 本文&#xff0c;就为大家分享下&#xff0c;这专用网络安全路由器真的适用吗&#xff1f; 所谓专用网络安全路由器&#xff0c…

作者头像 李华
网站建设 2026/5/14 7:10:45

基于RK3568的YOLOv11模型端侧部署与性能调优完整指南

文章目录 【深度实战】RK3568平台YOLO11模型从零到部署完整指南 前言 技术架构概览 一、开发环境搭建 1.1 Anaconda环境配置 1.2 RKNN工具链安装 下载核心组件 安装依赖和工具包 1.3 PyTorch环境配置 二、数据集准备与标注 2.1 数据集结构设计 2.2 图像标注工具配置 标注操作流…

作者头像 李华
网站建设 2026/5/11 3:17:24

广州沙太路属于天河区吗?具体位置解析

广州沙太路是广州市内一条重要的交通干道&#xff0c;它位于天河区北部&#xff0c;连接着天河与白云两区。这条路对于经常往来于广州大道北、广州东站附近以及白云山周边区域的市民来说十分熟悉。了解沙太路的具体区划归属&#xff0c;有助于更好地规划出行和认识广州城市格局…

作者头像 李华
网站建设 2026/5/14 7:09:59

VS2026关闭代码托管的影响与替代方案,VS2026托管功能移除

最近微软在Visual Studio 2026中移除了内置的托管功能&#xff0c;这一变化让许多开发团队需要重新评估他们的开发和部署流程。托管功能的关闭意味着以往直接通过IDE进行代码托管、构建和发布的一体化体验发生了根本改变。作为长期依赖VS进行项目管理的开发者&#xff0c;我认为…

作者头像 李华
网站建设 2026/5/11 2:35:52

在物理实验中,电子双缝衍射是一个经典的实验,它展示了电子的波动性。今天,我们就用MATLAB的GUI界面来模拟这个实验,通过输入不同的参数,观察衍射图样的变化

基于matlabgui界面下的电子双缝衍射实验的现象模拟&#xff0c;设置的可输入参数有&#xff1a;缝宽a&#xff0c;双缝间距b&#xff0c;加速电压U&#xff0c;缝屏距离D和电子数目n- 首先&#xff0c;我们需要在MATLAB中创建一个GUI界面&#xff0c;这可以通过guide命令来实现…

作者头像 李华