news 2026/4/10 1:25:53

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/3/26 11:27:51

阿姆智创15.6寸触摸工控一体机:赋能自动化工业设备智能升级

在工业4.0加速渗透的今天&#xff0c;工控设备作为生产环节的“神经中枢”&#xff0c;其稳定性、适配性与定制化能力影响着智能制造的落地效率。阿姆智创15.6寸触摸工控一体机&#xff0c;以硬核品质与灵活定制服务&#xff0c;成为自动上料机、智能分拣机、视觉设备等场景的理…

作者头像 李华
网站建设 2026/3/27 16:55:38

“数字签名+网络安全专业”2026届最新毕设选题推荐参考

下面是 结合网络安全/信息安全专业方向、并适合使用 PyQt5 开发桌面界面的 10 个“数字签名”相关的热门本科毕设选题。每个选题都包含&#xff1a; &#x1f4cc; 功能点介绍 &#x1f6e0;️ 技术栈实现建议 &#x1f4a1; 创新点说明 &#x1f4ca; 难度评估分类&#x…

作者头像 李华
网站建设 2026/4/3 4:42:30

高因子高分区【SCI/SSCI】期刊推荐

&#x1f4d9;优质期刊&#xff0c;见刊快&#xff0c;易录用&#x1f4d8;覆盖各个领域&#xff0c;审稿最快只要1-2个月&#xff01;▍版面有限&#xff0c;更多学科扫码咨询编辑老师&#xff01;想了解更多期刊详情可直接扫码咨询编辑老师&#xff01;&#x1f447;&#x1…

作者头像 李华
网站建设 2026/3/27 20:57:32

Java毕设选题推荐:基于springboot的装修公司房屋装修管理系统基于springboot的装修公司家装项目管理系统【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/9 21:49:43

FT32F072RBAT7/CBAT7/KBBT7/KBBU7/KBCW7 32位MCU单片机解析

当智能硬件走向“高算力低功耗丰富外设”时代&#xff0c;8位机常常力不从心&#xff0c;而主流32位MCU又面临成本敏感、封装庞大、开发复杂等痛点。辉芒微推出的 FT32F072xx 系列&#xff08;含 RBAT7/CBAT7/KBBT7/KBBU7/KBCW7 等子型号&#xff09;恰逢其时&#xff1a;Corte…

作者头像 李华