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 循环怎么"数路程"

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

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


相关推荐
jimy118 分钟前
基类没有虚析构函数,基类指针删除派生类对象,行为是未定义的
开发语言·c++
xlq223221 小时前
全面复习2
c++
无名猿1 小时前
移动构造与移动赋值:把资源偷过来
c++·性能优化·内存管理·现代c++·语法基础
All for pursuit.2 小时前
【回溯-7】494.目标和
数据结构·c++·算法·leetcode
白杨尚青2 小时前
C++入门篇(十三):vector(上)——动态数组:构造、空间增长与迭代器失效
开发语言·c++·笔记·算法·stl
(Charon)3 小时前
【C++面试】RAII到底是什么:从资源管理理解C++对象生命周期
c++·算法·面试
无名猿3 小时前
成员初始化列表与初始化顺序陷阱:按声明顺序,不是书写顺序
c++·现代c++·语法基础
91刘仁德3 小时前
传输层协议深度拆解:端口寻址、UDP 报文与 TCP 可靠性机制全解析
linux·网络·c++·网络协议·tcp/ip·udp·c
Liuchang09113 小时前
洛谷 P2670 [NOIP 2015 普及组] 扫雷游戏
c++·算法·游戏
顶点多余4 小时前
C/C++常见面试题
开发语言·c++