GESP C++ 二级真题分类整理:从分支循环到综合模拟

四季读书网 2 0
GESP C++ 二级真题分类整理:从分支循环到综合模拟

GESP C++ 二级是从“能写简单程序”走向“能写综合循环程序”的阶段。

按照 GESP 考纲,二级重点包括:计算机存储与网络、程序设计语言特点、流程图、ASCII 编码、数据类型转换、多层分支、多层循环、常用数学函数等内容。二级目标是让学生能够独立完成包含分支语句、循环语句、嵌套结构和简单数学函数的综合程序。

一、多层循环枚举

多层循环是二级最核心的内容之一。很多题目本质上不需要复杂算法,只要根据范围合理枚举即可。

1. 百鸡问题

  • B3836 [GESP202303 二级] 百鸡问题

这是一道非常经典的枚举题。

题目给出公鸡、母鸡、小鸡的价格,以及总钱数和总只数,要求统计购买方案数量。数据范围较小,直接枚举公鸡数量和母鸡数量,再计算小鸡数量即可。

教学重点:

  • 枚举公鸡数量;
  • 枚举母鸡数量;
  • 小鸡数量由总只数推出;
  • 判断总价格是否满足;
  • 注意“小鸡每  只  元”的整除条件。

这题非常适合作为二级“二重循环枚举”的入门题。

2. 找素数

  • B3840 [GESP202306 二级] 找素数

题目要求统计区间  中有多少个素数,范围 ,直接对每个数试除判断即可。

教学重点:

  • 素数定义:大于 ,且除了  和自身外没有其他因数;
  • 判断  是否为素数时,只需要枚举  到 
  • 外层枚举区间中的每个数;
  • 内层判断这个数是不是素数。

这题是二级中最典型的“数学概念 + 循环判断”。

3. 平方之和

  • B4002 [GESP202406 二级] 平方之和

题目要求判断一个正整数  是否可以写成两个正整数平方和:

由于 ,可以枚举  和 ,也可以枚举  后判断剩余部分是否为完全平方数。

教学重点:

  • 正整数 ,不能为 
  • 枚举范围可以控制在  以内;
  • 判断完全平方数时,可以用 sqrt 后再平方验证;
  • 多组数据要逐个输出 Yes 或 No

这题适合训练学生使用平方根函数和枚举优化。

4. 数三角形

  • B4356 [GESP202506 二级] 数三角形

题目给出最大直角边长 ,要求统计直角边  均不超过 ,且面积为整数的不同直角三角形数量。面积为:

所以只需要判断  是否为偶数。两个直角边交换后视为同一种三角形,因此可以枚举 

教学重点:

  • 枚举 
  • 枚举 ,并让  避免重复;
  • 判断  是否为偶数;
  • 理解“相同三角形”的定义。

这题是二级枚举题中比较好的思维训练题。

二、数位处理与数字模拟

二级真题中,数位处理出现频率很高。学生必须熟练掌握 %10 取个位、/10 去个位,以及循环拆分整数。

1. 自幂数判断

  • B3841 [GESP202306 二级] 自幂数判断

自幂数是指一个  位数,各位数字的  次方之和等于它本身。例如  满足:

题目要求判断多个数是否为自幂数。

教学重点:

  • 先求数字位数;
  • 再逐位拆分;
  • 每一位求  次方;
  • 最后判断总和是否等于原数;
  • 原数要保留,不能在拆位过程中丢失。

这题是二级数位处理中的核心题。

2. 数字黑洞

  • B3866 [GESP202309 二级] 数字黑洞

题目给出一个符合要求的三位数,每次将三个数字重新排列成最大数和最小数,用最大数减去最小数,重复直到得到 ,输出变换次数。

教学重点:

  • 拆出百位、十位、个位;
  • 对三个数字排序;
  • 组成最大三位数和最小三位数;
  • 重复模拟直到得到 
  • 注意中间结果可能有 ,例如  这种情况要按三位数处理。

这题非常适合训练“按题意重复模拟”。

3. 数位之和与数位和最大值

  • B4036 [GESP202409 二级] 数位之和
  • B4065 [GESP202412 二级] 数位和

B4036 要判断一个数的各位数字和是否为  的倍数。

B4065 要求在多个正整数中,找出数位和的最大值,数字最大可达 ,所以建议使用 long long。(洛谷)

教学重点:

  • 写一个函数求数位和;
  • 注意 while(x > 0) 的写法;
  • 多组数据逐个处理;
  •  不能用 int 保存。

这两题可以放在一起讲,是二级数位专题的基础题。

4. 计数数字出现次数

  • B4007 [GESP202406 二级] 计数
  • B4497 [GESP202603 二级] 数数

B4007 要统计从  到  的所有整数中,数字  出现了多少次,其中 

B4497 要统计区间  中,恰好包含  个数字 2 的正整数个数,其中 

教学重点:

  • 枚举每个整数;
  • 对每个整数逐位统计某个数字出现次数;
  • B4007 统计总出现次数;
  • B4497 判断是否恰好出现  次;
  • 注意  的处理,不过题目范围从正整数开始。

这一组题适合训练“枚举数字 + 数位统计”。

5. 优美的数字

  • B4411 [GESP202509 二级] 优美的数字

题目定义:一个正整数在十进制下所有数位都相同,则称为优美数字。要求统计不超过  的优美正整数数量,

教学重点:

  • 可以枚举  到 
  • 拆位判断所有数位是否相同;
  • 也可以生成 
  • 对二级学生来说,直接枚举更稳。

这题本质还是数位处理,但判断条件更偏“数位性质”。

三、图形输出与字符矩阵

二级考试非常喜欢图形输出题。这类题不难,但很容易因为空格、换行、字符位置出错。

1. 三角形输出

  • B3837 [GESP202303 二级] 画三角形

题目要求输出一个由大写字母组成的三角形,第  行  个字母,第  行  个字母,以此类推,并且字母从 A 到 Z 循环使用。

教学重点:

  • 外层循环控制行;
  • 内层循环控制每行字符个数;
  • 字母超过 Z 后回到 A
  • 每行末尾不能有多余空格。

这题适合作为二级图形输出入门题。

2. 字母矩阵系列

  • B3865 [GESP202309 二级] 小杨的 X 字矩阵
  • B3924 [GESP202312 二级] 小杨的 H 字矩阵
  • B3955 [GESP202403 二级] 小杨的日字矩阵
  • B4037 [GESP202409 二级] 小杨的 N 字矩阵

这四题本质都是:给定一个奇数 ,按照某些位置规则输出特殊字符,其余位置输出填充字符。题目分别要求打印 X 字、H 字、日字、N 字矩阵。

教学重点:

  • 外层循环枚举行;
  • 内层循环枚举列;
  • 根据  的位置判断输出什么字符;
  • 对角线条件:
    • 主对角线:i == j
    • 副对角线:i + j == n + 1
  • 中间行:i == (n + 1) / 2
  • 第一列、最后一列:j == 1 || j == n

这类题最适合训练二级学生的“坐标意识”。

3. 菱形与正方形

  • B4412 [GESP202509 二级] 菱形
  • B4498 [GESP202603 二级] 画画

B4412 要在  的字符画中画出一个菱形,顶点和边界使用 #,其余位置使用 .

B4498 要绘制一个正方形边框,四个顶点为 +,上下边为 -,左右边为 |,内部为 *

教学重点:

  • 菱形可以用“到中心点的距离”判断;
  • 正方形要区分顶点、边界和内部;
  • 输出每行长度必须相同;
  • 不要输出多余空格。

这一组题可以作为图形输出专题的提高练习。

4. 等差矩阵

  • B4259 [GESP202503 二级] 等差矩阵

题目要求输出  行  列矩阵,第  行第  列填入 。每一行、每一列都是等差数列。

教学重点:

  • 双重循环输出矩阵;
  • 行列从  开始计算;
  • 每行数字之间用空格隔开;
  • 行末空格通常可以不严格,但建议训练规范输出。

这是二级矩阵输出中最基础的一类。

四、简单数学判断与数学函数

二级考纲明确要求常用数学函数,如绝对值函数、平方根函数、最大值函数、最小值函数等。真题中也经常出现平方、平方根、幂和整除判断。

1. 寻找数字

  • B4064 [GESP202412 二级] 寻找数字

题目给出正整数 ,要求判断是否存在正整数  满足:

如果存在输出 ,否则输出 。数据组数可达 

教学重点:

  • 可以从  枚举到 ,因为 
  • 判断  是否等于 
  • 多组数据需要快速处理;
  • 注意乘法过程中使用 long long 更稳。

这题适合训练“根据数据范围确定枚举上界”。

2. 幂和数

  • B4357 [GESP202506 二级] 幂和数

如果一个数  可以表示为两个  的次幂之和:

则称为幂和数。题目要求统计区间  中有多少个幂和数,

教学重点:

  • 先生成所有 
  • 双重枚举两个幂;
  • 标记所有能表示成两个  的次幂之和的数;
  • 最后统计区间内有多少个被标记。

这题有一点“预处理”的味道,但仍然属于二级可接受范围。

3. 黄金格

  • B4448 [GESP202512 二级] 黄金格

题目给出 ,要求统计满足:

的格子数量。 均不超过 

教学重点:

  • 双重循环枚举每个格子;
  • 可以使用 sqrt
  • 更稳的写法是两边都非负时平方比较;
  • 注意行列编号从  开始。

这题是二级中比较典型的“数学表达式翻译成程序”的题。

4. 乘法问题

  • B3954 [GESP202403 二级] 乘法问题

题目要求把若干个正整数相乘,如果乘积超过 ,就输出 >1000000,否则输出乘积。

教学重点:

  • 循环读入并累乘;
  • 一旦超过  可以提前标记;
  • 注意输出格式是固定字符串;
  • 乘积可能快速变大,建议使用 long long

这题适合训练“边计算边判断上限”。

五、日期时间与过程模拟

1. 时间跨越

  • B4260 [GESP202503 二级] 时间跨越

题目给出当前年月日时和  小时之后,要求计算新的年月日时。,但仍然可能跨日、跨月、跨年,需要判断闰年。

教学重点:

  • 先让小时加上 
  • 如果小时超过 ,日期加一;
  • 日期超过当月天数,月份加一;
  • 月份超过 ,年份加一;
  • 二月天数要根据闰年判断。

这是二级中非常好的“分支 + 模拟 + 边界”题。

2. 环保能量球

  • B4447 [GESP202512 二级] 环保能量球

题目给出行走距离  和奖励间隔 ,基础能量为 ,每走满  公里额外奖励  点,所以答案是:

题目有多组数据。

教学重点:

  • 理解整除含义;
  • 多组数据循环处理;
  • 不要逐公里模拟;
  • 输出每组数据的答案。

这题虽然简单,但很适合训练学生从题意中提炼公式。

六、递推与简单序列模拟

1. 小杨做题

  • B3923 [GESP202312 二级] 小杨做题

第  天做  题,第  天做  题,从第  天开始每天做前两天题数之和。如果某一天做题数大于等于 ,后续就不再做题。要求第  天结束后总共做了多少题。

教学重点:

  • 类似斐波那契递推;
  • 要累计总题数;
  • 达到停止条件后后面天数不再增加;
  • 注意停止发生在“当天做完之后”。

这题是二级中非常适合引入“递推思想”的题。

按难度梯度整理

第一梯度:二级基础题

适合刚学完一级、开始进入二级的学生。

题目
主要考点
B4447 环保能量球
整除、公式
B4259 等差矩阵
双重循环输出
B4498 画画
分类输出、边界判断
B3837 画三角形
嵌套循环、字符循环
B4036 数位之和
数位和、倍数判断
B4065 数位和
数位和最大值
B4007 计数
枚举、统计数字出现次数

这一阶段的目标是:

熟练掌握二级最基本的循环、分支、输出格式和数位拆分。

第二梯度:二级核心题

适合系统训练二级常见模型。

题目
主要考点
B3836 百鸡问题
二重枚举、条件判断
B3840 找素数
素数判断、循环优化
B3841 自幂数判断
数位拆分、幂运算
B3866 数字黑洞
三位数拆分、过程模拟
B3923 小杨做题
递推、停止条件
B3954 乘法问题
累乘、上限判断
B4002 平方之和
枚举、平方数判断
B4064 寻找数字
四次方判断
B4411 优美的数字
数位性质判断
B4497 数数
区间枚举、数位计数

这一阶段基本覆盖二级考试中最常见的数学与模拟题型。

第三梯度:二级图形专题

图形输出是二级必须单独练的一类题。

题目
主要考点
B3865 小杨的 X 字矩阵
双对角线判断
B3924 小杨的 H 字矩阵
左右边界、中间行
B3955 小杨的日字矩阵
多条横线、左右边界
B4037 小杨的 N 字矩阵
主对角线、左右边界
B4412 菱形
中心距离、字符画

这一阶段重点训练:

  • 坐标  判断;
  • 主对角线、副对角线;
  • 中间行、中间列;
  • 边界位置;
  • 输出格式完全一致。

第四梯度:二级提高题

适合冲刺满分和训练边界细节。

题目
主要考点
B4260 时间跨越
日期模拟、闰年判断
B4356 数三角形
枚举、去重、奇偶性
B4357 幂和数
幂枚举、预处理
B4448 黄金格
双重循环、数学函数

这些题虽然仍然属于二级范围,但对学生的题意理解、分类讨论和边界处理要求更高。

二级备考建议

二级训练建议按下面顺序进行:

  1. 先练基础循环和输出:等差矩阵、画三角形、画画;
  2. 再练数位处理:数位之和、数位和、计数、数数;
  3. 接着练数学判断:找素数、平方之和、自幂数判断、寻找数字;
  4. 最后练综合模拟:数字黑洞、小杨做题、时间跨越、黄金格。

二级最容易出错的地方主要是:

  • 忘记初始化计数器;
  • 内外层循环变量写混;
  • 字符图案多输出空格;
  • 数位拆分时破坏原数;
  • 三位数处理中没有保留前导零意义;
  • 日期题没有处理闰年和月底;
  • 使用 int 时忽略较大的数字范围;
  • 输出格式与题目要求不完全一致。

二级的核心不是难算法,而是把 多层循环、分支判断、数位拆分、图形输出、简单数学函数 练到非常稳定。

抱歉,评论功能暂时关闭!