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

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; 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++ 三级编程题考的是:能不能看懂题能不能用循环“照着规则写程序”

    而不是:算法技巧编程速度

    Read more

    Python 流程控制完全指南:条件语句 + 循环语句 + 实战案例(零基础入门)

    Python 流程控制完全指南:条件语句 + 循环语句 + 实战案例(零基础入门)

    🔥草莓熊Lotso:个人主页 ❄️个人专栏: 《C++知识分享》《Linux 入门到实践:零基础也能懂》 ✨生活是默默的坚持,毅力是永久的享受! 🎬 博主简介: 文章目录 * 前言: * 一. 顺序语句:基础执行语句 * 二. 条件语句:实现 “如果… 否则…” 逻辑 * 2.1 核心语法格式 * 2.2 关键注意点 * 2.3 空语句 pass:占位符作用 * 2.4 练习题 * 三. 循环语句:实现 “重复执行” 逻辑 * 3.1 while 循环:条件满足就一直执行 * 3.2 for 循环:

    By Ne0inhk
    【Python基础:语法第一课】Python 基础语法详解:变量、类型、动态特性与运算符实战,构建完整的编程基础认知体系

    【Python基础:语法第一课】Python 基础语法详解:变量、类型、动态特性与运算符实战,构建完整的编程基础认知体系

    🎬 个人主页:艾莉丝努力练剑 ❄专栏传送门:《C语言》《数据结构与算法》《C/C++干货分享&学习过程记录》 《Linux操作系统编程详解》《笔试/面试常见算法:从基础到进阶》《Python干货分享》 ⭐️为天地立心,为生民立命,为往圣继绝学,为万世开太平 🎬 艾莉丝的简介: 文章目录 * 1 ~> 常量和表达式 * 2 ~> 变量和类型 * 2.1 变量是什么 * 2.2 变量的语法 * 2.2.1 定义变量 * 2.2.2 使用变量 * 2.3 变量的类型:对于不同种类的变量作出区分 * 2.3.1 整数 * 2.

    By Ne0inhk
    Gemini 3.0 Pro 与 Sora 2 震撼发布:Python 开发者如何用“上帝视角”构建下一代多模态应用?(附全链路源码)

    Gemini 3.0 Pro 与 Sora 2 震撼发布:Python 开发者如何用“上帝视角”构建下一代多模态应用?(附全链路源码)

    摘要: 2026 年伊始,AI 圈再次迎来核爆级更新。 Google 的 Gemini 3.0 Pro 彻底打破了上下文窗口的物理极限。 神秘的 Banana2 模型以其惊人的“思维链”推理能力霸榜 HuggingFace。 而视频生成领域的“双子星” Sora 2 与 Google Veo 3 更是将 AI 视频带入了 4K/60FPS 的电影级时代。 然而,面对高达 20+ 种的新增模型和碎片化的 API 文档,开发者该如何接招? 本文将从底层技术原理出发,深度解析新一代模型的架构革新。 并手把手教你利用 向量引擎(Vector Engine) 的聚合能力。 在 10 分钟内搭建一套支持“文本-思考-视频”

    By Ne0inhk

    2026最新保姆级教程:Windows 下使用 uv 从零配置 Python (OpenCV) 环境指南

    Windows 下使用 uv 从零配置 Python (OpenCV) 环境指南 本文档适用于在一台全新的 Windows 电脑上,使用 uv 快速配置vscode + Python 3.10 开发环境,并安装 OpenCV 库。同时包含关于 uv 的进阶说明。 B站配套视频 2026最新:使用uv管理python&opencv 🟢 第一步:安装 uv 包管理器 既然电脑上什么都没有,我们需要先安装这个核心工具。 1. 按下 Win + R 键,输入 powershell,按回车打开终端。 2. 复制并粘贴以下命令,按回车运行(三选一): * 或者进如 uv 下载链接 找到

    By Ne0inhk