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

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

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


相关推荐
不想写代码的星星14 小时前
虚函数表:C++ 多态背后的那个男人
c++
端平入洛2 天前
delete又未完全delete
c++
端平入洛3 天前
auto有时不auto
c++
哇哈哈20214 天前
信号量和信号
linux·c++
多恩Stone4 天前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc
蜡笔小马4 天前
21.Boost.Geometry disjoint、distance、envelope、equals、expand和for_each算法接口详解
c++·算法·boost
超级大福宝4 天前
N皇后问题:经典回溯算法的一些分析
数据结构·c++·算法·leetcode
weiabc4 天前
printf(“%lf“, ys) 和 cout << ys 输出的浮点数格式存在细微差异
数据结构·c++·算法
问好眼4 天前
《算法竞赛进阶指南》0x01 位运算-3.64位整数乘法
c++·算法·位运算·信息学奥赛
yyjtx4 天前
DHU上机打卡D31
开发语言·c++·算法