🗺️ 计算机科学 4
第 24-25 关
👑 🗡️ 🐣

练习数组迭代

Practice Array Iteration

本节课任务:
在一群敌人中,找出那个“最特别”的!
(最强的 💪 或 最弱的 🤏)

#24 脆弱的士气 #25 疯狂 Maxer

本节课关卡

扣哒世界 · 计算机科学4 · C++ · 第24–25关

C++ · 本节课关卡

24 · 脆弱的士气

先读关卡目标,观察地图,再运用本课知识。

25 · 疯狂Maxer 反击

先读关卡目标,观察地图,再运用本课知识。

学习路线:读目标 → 看图解 → 写代码 → 运行检查

一、什么是数组迭代?

Array / List (数组/列表)

一排排好队的东西(敌人、硬币)。

Index (索引/手指)

一个数字变量,像手指一样,从 0 指到最后一个。

“从头到尾,一个一个看过去。”

int enemyIndex = 0;

while (enemyIndex < enemies.size()) {
    auto enemy = enemies[enemyIndex];
    
    // 👉 这里对 enemy 做事情
    
    enemyIndex += 1;
}

二、寻找“最大值” (Max Search)

💪

策略:打擂台

  1. 初始化: 假装目前看到的最大生命值是 0。
  2. 比较 (Compare): 如果当前敌人比记录的更强...
  3. 更新 (Update): 把“最强”的奖牌颁给它!
就像找班里最高的同学:
手里拿个牌子写着 "0 cm"。
看到第一个人,哇比0高,牌子改成他的身高。
看到第二个人,如果更高,就换牌子...

🏆 寻找最强者的函数

auto findStrongestEnemy(auto enemies) {
    auto strongest = null;
    auto maxHealth = 0; // 🐣 初始值设为很小
    int index = 0;

    while (index < enemies.size()) {
        auto enemy = enemies[index];
        
        // 💪 谁更强?比一比!
        if (enemy.health > maxHealth) {
            strongest = enemy;
            maxHealth = enemy.health;
        }
        index += 1;
    }
    return strongest;
}

关键点:

  • > 大于号:找更大的。
  • maxHealth = 0:初始门槛很低,谁都能上来。

三、寻找“最小值” (Min Search)

🤏

策略:反着来

  1. 初始化: 假装目前记录的生命值是 99999 (无穷大)。
  2. 比较 (Compare): 如果当前敌人比记录的更弱 (health 更小)...
  3. 更新: 记录下这个新的“最弱者”。
为什么要设成 99999?

如果初始设成 0,没有任何敌人的血量会比 0 还要小,你就永远找不到最弱的那个啦!

🚑 寻找最弱者的代码

auto weakest = null;
auto minHealth = 99999; // 🏔️ 初始值设为很大
int index = 0;

while (index < enemies.size()) {
    auto enemy = enemies[index];
    
    // 🤏 谁更弱?比一比!
    if (enemy.health < minHealth) {
        weakest = enemy;
        minHealth = enemy.health;
    }
    index += 1;
}

if (weakest) {
    hero.attack(weakest);
}

关键点:

  • < 小于号:找更小的。
  • minHealth = 99999:门槛很高,很容易被“更小”的取代。

⚖️ 终极对比:两个模式

结构都是一样的,只有两个地方不同!

🔥 找最大 (Max)

初始值:
很小 (0)

比较符号:
>

if val > best:

❄️ 找最小 (Min)

初始值:
很大 (99999)

比较符号:
<

if val < best:

我的知识宝藏 · 一页复习

扣哒世界 · 计算机科学4 · C++ · 第24–25关

C++ · 知识点图
关键字方法 / 函数字符串数字

一、什么是数组迭代?

一排排好队的东西(敌人、硬币)。

enemyIndex += 1;

二、寻找“最大值”

初始化: 假装目前看到的最大生命值是 0。

🏆 寻找最强者的函数

> 大于号:找更大的。

index += 1;

三、寻找“最小值”

初始化: 假装目前记录的生命值是 99999 (无穷大)。

🚑 寻找最弱者的代码

< 小于号:找更小的。

index += 1;

⚖️ 终极对比:两个模式

结构都是一样的,只有两个地方不同!

本节课关卡:24. 脆弱的士气;25. 疯狂Maxer 反击