GESP2025年12月认证C++二级真题与解析(编程题1 (环保能量球))

一、先看原题:


二、题目解析

1、📖 故事背景

小杨在玩一个游戏 👦🎮

规则是这样的:

1️⃣ 每走 1 公里 → 得 1 点能量

2️⃣ 每走 X 公里 → 额外奖励 1 点能量

就像这样👇

  • 第 1 公里:+1

  • 第 2 公里:+1

  • 如果 X = 2

    • 第 2 公里再 +1 🎉

    • 第 4 公里再 +1 🎉

👉 老师问我们:
小杨一共走了 N 公里,他最后能拿多少能量?

2、🧠 先不用代码,用小脑袋想

假设:

  • 走了 5 公里

  • 2 公里奖励一次

我们一公里一公里数 👣

公里数 基础能量 奖励 总能量
1 +1 × 1
2 +1 +1 3
3 +1 × 4
4 +1 +1 6
5 +1 × 7

👉 答案:7

📌 你发现了吗?

  • 每一公里都要加 1

  • 如果公里数能被 X 整除,再多加 1


3、🧩 把问题拆成程序步骤

🧱 程序要做的事

1️⃣ 读入测试次数 T

2️⃣ 对每一组:

  • 输入 N(公里)

  • 输入 X(奖励间隔)

3️⃣ 从 1 跑到 N:

  • 每次 +1

  • 如果 i % X == 0 → 再 +1


4、💻 参考程序

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int t;
    cin >> t;               // 有几组测试

    while (t--) {
        int n, x;
        cin >> n >> x;      // n 公里,x 公里一奖励

        int ans = 0;        // 能量总数

        for (int i = 1; i <= n; i++) {
            ans += 1;       // 每走 1 公里,基础能量 +1

            if (i % x == 0) // 如果是奖励公里
                ans += 1;   // 再奖励 1 点
        }

        cout << ans << endl;
    }

    return 0;
}

5、🔍 逐行讲解

cpp 复制代码
int t;
cin >> t;

👉 一共要算 几次游戏


cpp 复制代码
while (t--)

👉 每一组游戏都要算一次


cpp 复制代码
int n, x;
cin >> n >> x;

👉

  • n:走了多少公里

  • x:每几公里奖励


cpp 复制代码
int ans = 0;

👉 准备一个"小箱子",装能量 ⚡


cpp 复制代码
for (int i = 1; i <= n; i++)

👉 从第 1 公里,一直走到第 n 公里


python 复制代码
ans += 1;

👉 不管怎样,走路就有能量


cpp 复制代码
if (i % x == 0)
    ans += 1;

👉 如果是奖励点(能整除),多给一颗 🌟


6、🎉 本题要点:

  • for 循环怎么"数路程"

  • % 取余判断"是不是奖励点"

  • 把生活问题变成程序逻辑


相关推荐
郝学胜-神的一滴2 小时前
Linux进程与线程控制原语对比:双刃出鞘,各显锋芒
linux·服务器·开发语言·数据结构·c++·程序人生
青岛少儿编程-王老师2 小时前
CCF编程能力等级认证GESP—C++2级—20251227
java·开发语言·c++
javachen__3 小时前
341-十道经典程序设计题目
数据结构·c++·算法
wregjru3 小时前
【C++】2.6 红黑树及其实现(附代码)
开发语言·c++
zgl_200537793 小时前
ZGLanguage 解析SQL数据血缘 之 提取select语句中的源表名
大数据·数据库·c++·数据仓库·sql·数据库开发·etl
Sereinc.Y3 小时前
【移动机器人运动规划(ROS)】03_ROS话题-服务-动作
c++·动态规划·ros·slam
@卞5 小时前
从零实现一个高并发内存池(1)--- 项目介绍
c++
wjlnew5 小时前
c++中的内存管理:栈,堆及RALL机制
c++
无限进步_6 小时前
【C语言】用队列实现栈:数据结构转换的巧妙设计
c语言·开发语言·数据结构·c++·链表·visual studio