
GESP C++ 二级、三级考什么?从一级进阶的知识点与备考重点
过了 GESP 一级之后,二级、三级要学什么?本文梳理 GESP C++ 二三级新增的知识点(循环、数组、字符串、函数、简单枚举等)、题型难度变化与备考重点,帮孩子平稳进阶。
不少家长的孩子刚过 GESP C++ 一级,正准备往二级、三级走,却发现难度好像一下子上了个台阶:一级还在写"输入两个数、判断谁大"的小程序,二级开始要用循环反复处理数据,三级又冒出了二维数组、嵌套循环这些听起来就有点绕的概念。孩子在家做题时"看讲解都懂,自己一写就卡",也是这个阶段最常见的状态。
这篇文章面向已经了解 GESP 是什么、正打算带孩子从一级进阶到二三级的家庭,把二级、三级各自新增的知识点、题型难度是怎么变化的、以及备考时最该盯住的几个卡点,一次讲清楚。需要提醒的是:本文谈的是知识范围和学习方法,各级别的具体考纲、报名和考试安排请以 CCF GESP 官网最新公告为准。
从一级到二三级:能力跨度到底有多大
先说一个大局观。GESP C++ 1-8 级是一条循序渐进的台阶,一级到三级属于"打语法地基"的阶段,但一级和三级之间的差距,比很多家长想象的要大。
一级考的,本质是"程序是一条一条按顺序执行的指令"这件事:变量、输入输出、加减乘除、简单的 if 分支。孩子只要能把题目翻译成几行顺序执行的代码,就能拿分。到了二级、三级,考查重心开始从"会写几行"转向"会控制程序的流程和数据"——用循环让程序自动重复,用数组批量存放数据,用函数把重复的逻辑打包,再用这些工具去解决稍微需要"想一想"的问题。
可以用一个类比:一级像是学会了写单句话,二级是学会用"重复"和"列表"把很多句话组织起来,三级则是开始写有结构、有层次的段落。跨度主要体现在三点:
- 从"顺序"到"循环":程序第一次有了"自动重复很多次"的能力,孩子要理解循环是怎么转起来、什么时候停。
- 从"单个变量"到"一批数据":数组让孩子第一次批量地存和取数据,随之而来的是下标、越界这些新问题。
- 从"照着写"到"自己想":题目不再直白地告诉你每一步怎么做,而是给一个情境,让孩子自己拆解成循环和判断——这是编程思维真正开始成形的地方,也是第一道坎。
GESP C++ 二级新增了哪些考点
二级是孩子第一次接触"循环"和"数组"这两个核心工具的阶段。相比一级,新增的知识点大致包括:
循环结构:for 与 while
循环是二级的绝对重点。孩子需要掌握两种最基本的循环写法:
- for 循环:适合"明确知道要重复多少次"的场景,比如从 1 加到 100、把 10 个数依次读进来。
- while 循环:适合"不知道具体次数、满足某个条件才停"的场景,比如一直读数据直到输入 0 为止。
真正的难点不在语法,而在循环边界:从 0 开始还是从 1 开始?循环到 n 还是 n-1?多算一次或少算一次(俗称"差一错误")是这个阶段最高频的 bug。
一维数组
数组让孩子第一次可以用一个名字管理"一排"数据,配合循环批量处理。二级常见的数组操作包括:读入 n 个数存进数组、求最大值最小值、求和求平均、倒序输出、统计满足条件的个数等。
这里的新坑是下标越界:一个长度为 n 的数组,合法下标是 0 到 n-1,孩子很容易写成访问第 n 个位置,导致程序出错或结果诡异。
字符串基础
二级开始接触字符串——也就是"一串字符"。基本操作包括读入一个字符串、求它的长度、按位置访问某个字符、遍历整个字符串统计某类字符出现的次数等。字符与数字的关系(比如字符 '0' 到 '9' 在计算机里对应连续的编码)也是这个阶段会慢慢渗透的概念。
简单函数
孩子会开始接触"把一段常用逻辑打包成函数、需要时调用"的思想。二级阶段的函数通常比较简单,比如写一个判断质数、求两数最大值的小函数,重点是理解"参数传进去、结果返回来"这个基本模型。
枚举与模拟思想的萌芽
有了循环,孩子第一次具备了"把所有可能情况都试一遍"的能力,这就是枚举思想的雏形;而"严格按照题目描述的步骤,一步步用代码复现出来",就是模拟思想的萌芽。二级还谈不上复杂算法,但这两种最朴素的解题思路已经开始出现,为后面的进阶埋下种子。
GESP C++ 三级新增了哪些考点
三级是在二级的基础上"加维度、加深度"。如果说二级是学会了单层循环和一维数组,三级就是把它们叠起来、用起来,去解决更需要动脑的题目。
多重循环(嵌套循环)
三级最标志性的新增点是嵌套循环——循环里面再套循环。经典场景是打印各种图形(三角形、乘法表)、遍历二维表格、两两配对地比较数据等。
嵌套循环对孩子的思维是个不小的考验:外层转一圈,内层要完整转一遍;内外层的循环变量不能搞混。很多孩子能看懂一个二重循环在做什么,自己写时却理不清"哪个变量控制行、哪个控制列"。
二维数组
二维数组可以理解成一张"表格"或"棋盘",用行、列两个下标来定位每个格子。三级常见题型包括在矩阵里找最大值、按行或按列求和、统计棋盘上满足条件的格子、简单的图形填充等。它几乎总是和嵌套循环搭配出现。
函数进阶与参数
三级对函数的要求比二级更进一步:不仅要会定义和调用,还要更熟练地设计参数和返回值,把一个稍大的问题拆成几个函数分工完成。理解"函数内部的变量和外部互不干扰"这类作用域概念,也在这个阶段慢慢建立。
更复杂的枚举与简单算法思维
三级的枚举不再是"从 1 数到 n"这么直白,而可能需要双重枚举(比如枚举所有的数对)、或者在枚举的同时做一些判断和累计。配合模拟思想,孩子开始能处理"读懂一段较长的题意,再翻译成多步骤代码"的题目。这是从"语法练习"迈向"算法入门"的关键过渡。
字符处理
在二级字符串基础上,三级会做更多字符层面的处理:大小写转换、判断字符是字母还是数字、统计各类字符、简单的字符加解密(比如把每个字母往后移几位)等。这类题看起来简单,但很考验孩子对"字符本质上也是一种可以做运算的编码"的理解。
题型难度是怎么变化的
GESP 二三级的考试形式和一级一样,都是机考,分客观题(选择、判断)和编程题两部分。变化主要体现在两个方面:
第一,编程题的分量和思维含量上升。 一级的编程题往往几行就能写完,二级要求熟练运用循环和数组,三级则常常需要嵌套循环、二维数组配合,还要先想清楚思路再动手。也就是说,光把语法背熟已经不够了,孩子必须有足够的上机写代码、调试代码的练习量。
第二,客观题开始考"程序阅读"。 除了语法概念,客观题会给出一段代码,让孩子判断它的输出、或者理解它在做什么。这实际上是在考"手动在脑子里(或纸上)模拟程序执行"的能力——对循环和数组不熟的孩子,这类题会明显失分。
下面这张表大致对比二级和三级的重心差异(仅为帮助理解,不代表官方分值):
| 维度 | 二级 | 三级 |
|---|---|---|
| 循环 | 单层 for / while | 多重(嵌套)循环 |
| 数组 | 一维数组 | 二维数组 |
| 字符串 / 字符 | 字符串基础操作 | 更细的字符处理 |
| 函数 | 简单函数、基本调用 | 参数与返回值进阶 |
| 解题思维 | 枚举、模拟的萌芽 | 双重枚举、多步骤模拟 |
| 编程题难度 | 需想清流程再写 | 需先拆解再分步实现 |
两道自编示例题:直观感受二三级的难度差
下面用两道示例题(自编,仅示意题型),帮你直观感受二级和三级编程题的难度差异。这些不是真题,只用来说明"能力跨度"大致长什么样。
示例题(自编,仅示意题型)· 二级难度
题目:输入一个整数 n,再输入 n 个整数,求这 n 个数里最大值和最小值的差。
这类题的典型解法是:用一个数组把数据存下来(或者边读边比较),一层循环扫一遍,同时记录最大和最小值。核心考点是循环 + 一维数组 + 边读边处理。
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int maxv, minv, x;
for (int i = 0; i < n; i++) {
cin >> x;
if (i == 0) {
maxv = minv = x; // 第一个数同时作为初始最大和最小
} else {
if (x > maxv) maxv = x;
if (x < minv) minv = x;
}
}
cout << maxv - minv << endl;
return 0;
}思维量集中在"怎么正确初始化最大最小值"和"一次循环里同时维护两个量",是二级很典型的强度。
示例题(自编,仅示意题型)· 三级难度
题目:给出一个 n 行 m 列的整数矩阵,找出所有"比它上下左右四个相邻格子都大"的格子(边界上的格子只和存在的邻居比较),输出这样的格子有多少个。
这类题一下子就体现了三级的特征:需要二维数组存整张表,用嵌套循环遍历每个格子,再对每个格子检查四个方向的邻居,还要小心处理边界(在最外圈的格子邻居更少)。
#include <iostream>
using namespace std;
int a[105][105];
int main() {
int n, m;
cin >> n >> m;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
cin >> a[i][j];
// 四个方向:上、下、左、右
int dx[4] = {-1, 1, 0, 0};
int dy[4] = {0, 0, -1, 1};
int count = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
bool isPeak = true;
for (int k = 0; k < 4; k++) {
int ni = i + dx[k];
int nj = j + dy[k];
// 邻居存在,才需要比较
if (ni >= 0 && ni < n && nj >= 0 && nj < m) {
if (a[ni][nj] >= a[i][j]) {
isPeak = false;
break;
}
}
}
if (isPeak) count++;
}
}
cout << count << endl;
return 0;
}对比一下就能看出跨度:二级那题一层循环、一维数组就够了;三级这题要同时驾驭二维数组、三层循环(遍历行、遍历列、遍历四个方向)和边界判断,思维负担明显更重。这也是为什么很多孩子在二级还挺顺,一到三级就开始"卡壳"。
备考重点与常见卡点
结合二三级的特点,备考时有几个地方值得家长和孩子特别留意。
卡点一:数组越界
这是二三级最高频的错误,没有之一。孩子容易在下标上出问题:长度为 n 的数组,合法下标是 0 到 n-1,一不小心就访问到第 n 个。二维数组还要同时管好行、列两个下标,出错概率更高。养成"定义数组时留够空间、访问前想一想下标范围"的习惯,能省掉大量莫名其妙的错误。
卡点二:循环边界(差一错误)
循环从几开始、到几结束,是二三级 bug 的重灾区。到底是 i < n 还是 i <= n?累加应该在循环里的哪一步做?这类"差一"的错误往往不会报错,只是结果不对,很难查。建议做题时用一个很小的例子(比如 n=3)在纸上手动走一遍循环,看结果对不对,比盯着代码干想有效得多。
卡点三:把"看懂"当成"会写"
这是这个阶段最需要家长理解的一点。孩子看讲解、看题解时频频点头,"这我懂了",但合上讲解自己写,就无从下手——这不代表偷懒,而是**"读代码"和"写代码"本来就是两种不同的能力**。破解办法只有一个:看懂题解后关掉它,隔一段时间自己从零把代码重写一遍,能独立写出来并通过测试,才算真的会。
备考节奏建议
- 先学透、再刷题:每个新知识点(循环、数组、函数……)先系统理解,再配套写 5-10 道同类小题巩固,不要囫囵吞枣往前赶。
- 所有练习都上机验证:GESP 编程题是机考、由评测机自动判分,"自己觉得对了"不算数。让代码真正跑通、通过测试数据,边界问题才会暴露出来。家里装环境不方便的话,用免安装的在线 IDE,打开浏览器就能写、能测,报错时还有 AI 助教帮孩子解释原因。
- 考前按级做真题:临近考试,按对应级别把历年真题按考试时长完整做几套,训练时间分配、暴露薄弱点。AdaCpp 的 GESP 真题在线练习 收录了各级别历年真题,编程题可在线提交、自动评测,和真实机考体验一致。
如果希望有老师带着按级别走完整条路线,也可以了解 AdaCpp 按 GESP 等级设计的体系课程,每个级别对应明确的知识模块和真题训练,避免自己东拼西凑走弯路。
二级、三级之后呢
二级、三级打好之后,再往上(四级及以上)会逐步进入函数进阶、更复杂的字符串与数组应用,以及递归、排序、查找等真正的"算法入门"内容,和 CSP-J 的衔接也会越来越近。关于整条信奥路线怎么走,可以参考我们的 CSP-J 备考路线图。
最后想对家长说一句:二三级是很多孩子第一次感到"编程有点难"的阶段,出现"看得懂、写不出"的卡壳非常正常,不是孩子不适合学。GESP 全年多次开考,容错空间很大,某一级没过,几个月后补强了再考就是。比起追求跳级和速度,把循环、数组、函数这几样基本功练扎实,让孩子在"自己想出来、自己写出来、跑通了"的过程里积累信心,才是这个阶段最值钱的收获。具体考纲与报名安排,请以 CCF GESP 官网最新公告为准。
作者
分类
更多文章

孩子几岁开始学编程合适?分年龄段启蒙路线与家长指南
孩子几岁学编程最合适?太早会不会揠苗助长?本文按年龄段(学龄前、小学低/中/高年级、初中)给出启蒙建议,说明每个阶段适合什么语言和内容,帮家长找到不焦虑的起点。

不装环境写 C++:在线编译器/IDE 选择指南 + 10 分钟上手第一个程序
C++在线编译器是什么、适合谁?本文对比本地环境与在线IDE的优劣,教你如何挑选C++在线IDE,并用两个完整例子带零基础学生在浏览器里10分钟写出第一个C++程序。

GESP C++ 一级考什么?考纲知识点、题型分布与备考建议(2026)
GESP C++ 一级是很多孩子编程考级的第一站。本文详解一级考纲知识点、机考题型、零基础常见易错点,并给出一份适合零基础孩子的一级备考路线与练习建议。
邮件列表
加入我们的社区
订阅邮件列表,及时获取最新消息和更新