GESP2023年6月认证C++三级( 第三部分编程题(1、春游))


一、🎒 故事背景:春游点名危机!

👩‍🏫老师带着同学们去春游啦!

班上有 n 个同学,每个人都有一个编号:

复制代码
0, 1, 2, 3, ..., n-1

到了集合时间,老师开始点名!

但是......😵

有的同学很调皮:

👉 有人会 重复报名字

👉 有人 根本没来!

老师着急地说:

"谁没到?快帮我找出来!"


二、🧠 我们的任务

👉 输入:

  • n(总人数)

  • m(报数次数)

  • m 个编号(谁喊了名字)

👉 输出:

  • 如果 全来了 👉 输出 n

  • 否则 👉 输出 没来的同学编号(从小到大)


三、🏗️ 思路(用故事理解!)

1、🌟 第一步:准备"签到本"

我们准备一个数组:

复制代码
bool arrive[1000];

🎯含义:

👉 arrivei = false 👉 同学 i 还没来

👉 arrivei = true 👉 同学 i 已经到了


2、🌟 第二步:初始化(全部没来)

复制代码
for (int i = 0; i < n; i++)
    arrive[i] = false;

🧠就像老师说:

"我先假设大家都没到!"


3、🌟 第三步:听同学报数

复制代码
for (int i = 0; i < m; i++) {
    int code;
    cin >> code;
    arrive[code] = true;
}

🎯意思:

👉 谁报名字,就标记为"来了"

就算有人喊了 10 次:

👉 还是只算来了一次 ✔


4、🌟 第四步:检查谁没来

复制代码
bool all = true;

for (int i = 0; i < n; i++) {
    if (!arrive[i]) {
        // 说明没来
    }
}

🧠我们一个个检查:

👉 "0号来了吗?"

👉 "1号来了吗?"

👉 ......


5、🌟 第五步:输出结果

🎯情况1:有人没来

复制代码
if (!arrive[i]) {
    cout << i;
}

👉 输出没来的编号


🎯情况2:全来了!

复制代码
if (all)
    cout << n;

🎉输出总人数 n!


四、💻 参考代码

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

bool arrive[1000];

int main() {
    int n, m;
    cin >> n >> m;

    // 初始化:全部没来
    for (int i = 0; i < n; i++)
        arrive[i] = false;

    // 记录报到
    for (int i = 0; i < m; i++) {
        int code;
        cin >> code;
        arrive[code] = true;
    }

    // 检查谁没来
    bool all = true;
    for (int i = 0; i < n; i++) {
        if (!arrive[i]) {
            if (all) {
                cout << i;
                all = false;
            } else {
                cout << " " << i;
            }
        }
    }

    // 如果全来了
    if (all)
        cout << n;

    cout << endl;
    return 0;
}

五、🎯 举个例子(加深理解)

1、🌟输入:

复制代码
3 5
0 0 0 0 0

👉 只有 0号一直喊 😂


2、🧠分析:

同学 状态
0 来了
1 ❌没来
2 ❌没来

3、🎯输出:

复制代码
1 2

六、🏆 知识点总结

✨ 用数组记录状态

✨ 去重(重复报数不影响)

✨ 遍历检查

✨ 条件输出

✨ 模拟真实问题


相关推荐
.YM.Z17 小时前
C++——【继承】的底层逻辑与【多态】实现机制
c++·多态·继承
汉克老师17 小时前
GESP2026年9月认证C++三级( 第一部分选择题(1~7题)精讲
c++·gesp·小学生·学c++编程
Logic10118 小时前
C语言/数据结构位运算题解:异或XOR找出数据表中的“独特编号“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
小小龙学IT18 小时前
Qt QPainter 2D 绘图系统深度解析:从画笔到渲染引擎适
c++·qt
wabs66618 小时前
关于二叉树【力扣100.相同的树的思考】
数据结构·c++·算法·leetcode·二叉树·递归法
小小龙学IT19 小时前
Boost.PFR 开源结构体字段反射库深度解析
c++·开源
程序猿编码19 小时前
零依赖纯手写:C++ 实现完整神经网络,张量反向传播全打通
c++·神经网络·transformer·大模型推理
码匠许师傅19 小时前
【C++三方组件】utfcpp:UTF-8 字符串处理避坑
c++
蒸蒸yyyyzwd19 小时前
八股学习 MVCC 慢查询优化和 read 过程
c++·八股
APEX真好玩19 小时前
把高频传感器(IMU)数据封装进 MP4:FFmpeg 私有数据轨实践
c++