GESP C++ 一级真题解析
- 2026-11-12 19:02:55
GESP C++ 一级真题解析
2026年9月卷 · 逐题拆考点 · 备考家长必读
一、先看清试卷长什么样
GESP(CCF编程能力等级认证)C++ 一级的试卷结构非常稳定,考试时长 120 分钟,满分 100 分,60 分及格:
二、客观题精讲:这几道题最能看出坑在哪
坑 1:运算符优先级(每场必考)
【单选第3题】下列代码的输出是?
int a = 4 + -2 * 3;cout << a;解析:先算乘法 -2×3 = -6,再算加法 4+(-6) = -2。口诀:先乘除后加减,同级从左往右。一元负号优先级虽高于乘除,但这里 -2 是整体,不改变顺序。
坑 2:整数除法,"一半分数的坑"都在这
【单选第6题】执行以下代码,输出是?
int a = 8, b = 10;cout << (a % b) << " " << (a * 1 / b) << " " << (a * 1.0 / b);解析:三个表达式考了三个知识点——
① 8%10 = 8(被除数小于除数,余数是它自己)② 8*1/10:整数除以整数,结果还是整数,0.8 直接砍成 0(不是四舍五入!)③ 8*1.0/10:出现小数,除法"升级"为浮点运算,得 0.8
避坑要诀:看到 /,先问一句"两边是不是都是整数?"是,结果一定是整数。
坑 3:前置 ++ 与复合赋值
【单选第7题】执行后 b 的值是?
int b = 8;++b *= 2 + 1;解析:前置 ++ 先让 b 从 8 变成 9,然后执行 b *= (2+1),即 9×3 = 27。注意先算 2+1 再乘,复合赋值优先级很低,最后执行。
坑 4:break 与 continue——一级最大杀手
统计近 13 场真题,break/continue 相关题目出现了 34 次。一字之差,结果天壤之别:break 立刻跳出整个循环;continue 只是跳过本轮剩下的语句,下一轮继续。
【单选第13题】执行后输出是?
int k = 0;while (k < 8) { k += 2; continue; // 后面的语句永远执行不到 if (k > 5) break; cout << k << "#";}if (k >= 8) cout << "FINISH";解析:每轮 k 加 2 后立刻 continue,它后面的 break 和输出都是"死代码",永远不会执行。k 依次变为 2、4、6、8,退出循环后满足 k>=8,只输出 FINISH。
坑 5:数位分离——/10 和 %10 的魔法
【单选第14题】取正整数 N 从右到左第 M 位(个位为第 1 位):
M10 = 1;for (; M > 1; M--) M10 *= 10;cout << ______ ; // 横线处填什么?解析:循环结束后 M10 = 10M-1。先用整数除法 N / M10 砍掉目标位右边的数字,再 % 10 取余,答案选 N / M10 % 10。记住这套"排队组合":
判断题里的三个高频"送分题变送命题"
❶ "n%100 能得到最高位"——错!n%100 保留的是最后两位(123%100=23)。三位数的最高位要用整数除法 n/100。
❷ "2.5 % 2 能正常计算"——错!% 运算符的操作数必须是整型,写成小数会直接编译报错。
❸ "变量没初始化,值不确定"——对!未初始化的局部变量值是随机数,用它累加/累乘,结果不可预测。这是编程题丢分的隐形杀手。
三、编程题:兔子又睡了,麦粒却翻倍了
编程题① 新龟兔赛跑
乌龟跑完 1000 米需要的时间已知,兔子速度和睡觉时长给出,比较谁先到终点,兔子用时保留两位小数。这道题真正检查四件事:
✔ 会用 double 存带小数的数据;✔ 公式写完整——兔子总时间 = 1000÷速度+睡觉时间(最容易漏!);✔ 知道"用时越少越快",别把比较写反;✔ 输出两位小数:cout << fixed << setprecision(2),注意别漏了 fixed。
编程题② 棋盘上的麦粒
第 1 格放 1 粒麦子,以后每格都是前一格的 2 倍,求前 n 格总共多少粒。最适合一级的方法是老老实实循环:一个变量记"当前这格的粒数",一个变量记"总数",每轮先累加再翻倍。
关键细节:n 最大为 30 时,麦粒总数已超过普通 int 的范围(约 21 亿),必须用 long long。题目表面在数麦粒,暗地里提醒:数据范围不是装饰品,读题是写程序的一部分。
四、13 场真题、328 道题的大数据:考什么?
把 2023 年 3 月到 2026 年 6 月共 13 场认证的客观题逐题归类,结论非常清晰:
| 37.8% | ||
| 24.1% | ||
循环 + 运算 = 61.9% 的客观题。这两块练熟不出错,客观题的 50 分基本就是囊中之物。循环的细分考点里,continue(20 次)、数位分离(18 次)、break(14 次)排前三,质数判断也是常客。
五、给备考家庭的 4 条建议
1. 先保编程题。两道编程题 50 分,哪怕客观题全对,编程只拿一半也很难到 60 分以上。
2. 循环要"会追踪"。遇到 break/continue 的题,拿笔把每一步的变量值写下来——认真模拟是识破循环陷阱的唯一法宝。
3. 把 / 和 % 练成肌肉记忆。数位分离、取余判周期、质数判断,本质上都是这两个运算符的排列组合。
4. 别裸考。每年都有大量孩子把 50 分的编程题写成"输出一句话"。考前至少完整刷 3 套真题,限时 120 分钟。
—— END ——
觉得有用的话,点个 “赞” 和 “在看”转发给正在备考 GESP 的家长朋友吧 👇
信息来源:CCF GESP 2026年9月c++一级真题(含官方答案表与参考程序)
