CCF · GESP 编程能力等级认证

GESP 考试技巧全攻略

从一级到八级的考纲拆解、题型策略、高频失分点与考场时间分配——一份可以直接照着练的备考指南。基于 CCF 官方大纲与多场真题复盘整理。

1–8认证等级(C++ / Python)
120考试时长(分钟)
60通过分数线
90可跨一级报考
1

考试基本信息先搞清楚考什么、怎么考

GESP(Grade Examination of Software Programming)由中国计算机学会(CCF)发起主办,覆盖中小学阶段,考察语言为图形化编程、Python 与 C++,各级别划分为一至八级。它是一种"学业能力验证"型考试,重在考察编程基础与逻辑思维,而非单纯记忆。

项目说明
主办单位中国计算机学会(CCF)
考试语言图形化编程 / Python / C++
等级划分一级 ~ 八级,逐级递进
考试形式全国考点线下机考,系统自动评测
考试时长约 120 分钟(各级略有差异)
实践机会一年多次认证(约每 3 个月一次),考前有模拟测试可先熟悉系统
衔接价值高级别优秀考生可与 CSP-J/S 等竞赛衔接
2

两条必须记住的核心规则关乎策略,不只是分数

✅ 60 分通过

满分 100 分,成绩达到 60 分及以上即为通过本级认证。编程题占比大,是过线的关键——客观题尽量全对,编程题至少稳拿第一题,基本就能压线。

🚀 90 分可跳级

每级成绩达到 90 分及以上,下次可跨一级报考。例如一级考到 90+,下次可直接报三级,跳过二级——省一次考试。所以对学有余力的同学,目标不应是"及格",而是"冲 90"。

💡

策略含义:1–3 级考的是语法基本功,冲 90 完全可行;而 7 级以上已接近竞赛难度,靠"背考纲"会明显吃力,需要按竞赛标准训练。

3

分级别考点与冲 90 关键一级到八级,逐级看清楚

一级入门关
语法起步
  • 计算机基础与编程环境 / 计算机历史
  • 变量定义与使用、基本数据类型
  • 顺序 / 循环 / 选择 控制结构
  • 算术、关系、逻辑运算
  • 输入输出语句
冲 90 关键:输出格式!多一个空格、YES 写成 Yes 都会判 0 分;注意整数除法 5/2=2,区分 = 与 ==。零基础约 2–3 个月。
二级嵌套关
分支循环嵌套
  • 计算机存储与网络、ASCII 编码
  • 流程图概念、数据类型转换
  • 多层分支 / 循环嵌套结构
  • 常用数学函数(abs / sqrt / max / min)
冲 90 关键:逻辑运算优先级!&& 高于 ||,复杂逻辑勤加括号;else 只匹配最近的 if,不加大括号必错;内外层循环变量别都用 i。约 1–2 个月。
三级转折关
语法→算法
  • 数据编码(原码 / 反码 / 补码)
  • 进制转换(二 / 八 / 十 / 十六)
  • 位运算(& | ~ ^ << >>)
  • 一维数组与字符串处理
  • 枚举法、模拟法
从语法走向算法的第一关,但明确不考递归 / 排序 / DFS / BFS / DP / 贪心。冲 90 关键:枚举和模拟必须熟练——本质是"看懂题 → 照规则写程序",考的是逻辑清晰度。约 2–3 个月。
四级算法关
排序与递推
  • 排序算法(冒泡 / 选择等)
  • 贪心思想、递推
  • 二分思想与边界
  • 结构体与多关键字排序
  • 模拟与逻辑推演
冲 90 关键:算法思路 + 时间复杂度。字符串与排序常合并成一道题(如按成绩降序、同分按姓名字典序)。约需在洛谷等平台针对性训练排序 / 查找类题型。
五级数据结构
栈队与搜索
  • 栈、队列、链式结构
  • DFS 深度优先搜索
  • BFS 广度优先搜索
  • 树结构初步
冲 90 关键:搜索状态设计与剪枝。搜索题失分多在"状态定义错误 / 剪枝不到位",建议先用草稿纸画搜索树再动手。五级优秀考生可衔接 CSP-J/S。
六级算法进阶
DP 入门
  • 动态规划入门
  • 堆、并查集、哈希
  • 经典 DP 模型
开始出现动态规划,但不会像 CSP-S 那样抽象,更偏线性 DP / 背包 / 最长上升子序列等经典模型。冲 90 关键:把状态定义与转移方程写纸上反复推演,先有思路再敲代码。
七级竞赛预演
图论数论
  • 图论基础
  • 最短路、最小生成树
  • 数论
冲 90 关键:模型抽象与复杂边界。真题风格已与 CSP-S 接近,题目背景复杂、数据规模大,对复杂度有硬性要求。建议把 CSP-J/S、NOIP 真题纳入训练。
八级专业级
高级算法
  • 高级动态规划
  • 网络流初步
  • 计算几何基础
冲 90 关键:数学基础 + 代码稳健性。代码量大、易错点多,追求满分需要稳定的实现能力与良好的调试习惯。高分考生几乎都按竞赛标准训练。
4

题型结构与分值分布以一级、四级卷面为例

级别题型题量 × 分值小计
一级 单选题15 × 2 分30 分
判断题10 × 2 分20 分
编程题2 × 25 分50 分
四级(示例) 单选题约 25 × 2 分50 分
判断题约 10 × 1 分10 分
编程题3 题(约 10 + 15 + 15)40 分
📌

各级别题量与分值可能随场次微调,但整体占比稳定:编程题约占一半分值,是通过考试的关键;客观题(选择 + 判断)是拉开"优秀"差距的稳定得分区。复习时编程训练必须放第一位。

❗

注意大纲修订:CCF 已明确删除一级标准中误列入的"位运算",一级备考不必在此花时间;同时 C++ 考题统一以 C++11 标准为准,不涉及未定义行为。但 break / continue 在历年真题中反复出现,必须掌握。

5

考场实战策略120 分钟怎么用

开考先读一遍全部编程题

拿到试卷先把 2–3 道编程题都通读一遍,在草稿纸上记下每题"输入是什么、输出要求什么、数据范围多大",再决定先做哪道。避免一上来死磕第一题,结果卡住浪费时间。

先做最有把握的题

推荐顺序:先做最有把握的编程题 → 再做客观题 → 最后回来啃难题。客观题卡壳往往是某个语法细节想不起来,纠结太久最容易心态崩;而编程题思路一旦对了,写起来很快。

每道编程题先写"暴力版本"

不要一上来就追求最优解。先写能过样例的暴力版本,确保拿到基础分,再根据数据范围考虑优化。二级及以下数据量小,暴力枚举往往直接能过。

严格对齐输出格式

机考自动评测逐字符比对。多一个空格、少一个换行、大小写不一致(YES / Yes)、英文标点写成中文标点,都会判 0 分。写完务必对照题目输出样例逐字检查。

预留 10–15 分钟检查

检查内容:输出格式、循环边界(0 还是 1 起)、变量类型与溢出、数组越界、特殊情况(输入为 0 / 1 / 空)。这些边界条件往往是满分与低分的分水岭。

6

高频失分点预警这些坑,几乎每场都有人掉

✕输出格式类

  • 多余/缺少空格与换行
  • YES 写成 Yes、N 写成 no
  • 英文标点误用中文标点
  • 该输出整数却输出了小数

✕语法细节类

  • =(赋值)与 ==(相等)混淆
  • if(a=5) 永远为真
  • 整数除法:5/2=2 而非 2.5
  • && 与 || 优先级搞错
  • else 不加大括号,匹配错 if

✕循环与数组类

  • 循环边界写错(< 与 <=)
  • 数组下标从 0 还是 1 起搞混
  • 内外层循环变量都用 i
  • 忘记处理 0 或循环结束条件错误
  • 数位拆分时位数与下标混淆

✕算法与边界类

  • 空输入、极值(0 / 1 / 最大)未处理
  • 时间复杂度超标导致超时
  • 递归边界 / 传值与传引用混淆
  • 搜索时状态设计错误、剪枝不到位
  • DP 状态定义不清、初始化遗漏
🛡️

应对方法:在本地 IDE 里预先准备一套测试用例集,包含常规、边界、错误三类情况,写完每道题都跑一遍,能挡住绝大多数"会做但拿不到分"的问题。

7

高频必备代码模板二级起必须手写熟练

① 数位拆分 / 数字反转

处理"每一位数字"的万能骨架,二级最爱考。

// 逐位拆分,处理每一位
while (n > 0) {
    int d = n % 10;   // 取出个位
    // 对 d 做处理(累加 / 判断奇偶 / 统计)
    n /= 10;        // 去掉个位
}

② 素数判断

bool isPrime(int x) {
    if (x < 2) return false;
    for (int i = 2; i * i <= x; i++)
        if (x % i == 0) return false;
    return true;
}

③ 双重循环图形打印

外层控行、内层控列;先画前几行找规律,再写代码。

for (int i = 1; i <= n; i++) {        // 行
    for (int j = 1; j <= n; j++)    // 列
        cout << "*";              // 视位置输出空格或字符
    cout << '\n';                // 记得换行!
}

④ 进制转换(余数倒序)

// 十进制 → 任意进制,结果需倒序输出
string s = "";
if (n == 0) s = "0";
while (n > 0) {
    int d = n % base;
    s += (d < 10 ? char('0' + d) : char('A' + d - 10));
    n /= base;
}
reverse(s.begin(), s.end());
8

备考规划与刷题方法把每一套真题用透

📖 真题三刷法

第一遍 · 限时模考

严格按考试时间做整套真题,目的是暴露问题,分数不重要。做完对答案,把错题和"蒙对"的题全部标记出来。

第二遍 · 专题拆解

按知识点模块(如数位拆分、图形打印、排序、搜索)分类重做,把薄弱模块逐个攻破。

第三遍 · 母题归纳

把每类题的通用解法模板提炼出来,形成自己的"套路库",遇到新题能快速归类。

🔍

刷真题的价值不在"碰到原题",而在熟悉出题人的命题语言。GESP 的特点是"朴素题面 + 硬核内核"——场景是小学生都读得懂的,但背后的算法模型不浅。

🎯 各级别训练量参考

级别备考周期建议训练量核心方法
一级零基础 2–3 个月选择判断 2 套真题 + 编程题 5 道抠输出格式与基础语法
二级过一级后 1–2 个月选择判断 2 套真题 + 编程题 8 道图形打印、数位拆分两大模板
三级过二级后 2–3 个月6 大模板各 3 道 + 真题 2 套枚举、模拟熟练度
四级及以上视基础真题 + 洛谷 / CSP 系列题算法思路 + 复杂度控制
📚

三级六大编程模板:① 数组 + 循环模拟 ② 日期/日历类(取模推进状态)③ 顺序遍历(不回头)④ 位运算(判奇偶 / 统计二进制 1)⑤ 字符串处理(大小写 / 查找 / 拆分 / 回文)⑥ 进制转换(余数倒序)。

9

考前 & 考场自查清单点一点,逐项确认

在线编译器