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


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

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

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

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

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

但是......😵

有的同学很调皮:

👉 有人会 重复报名字

👉 有人 根本没来!

老师着急地说:

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


二、🧠 我们的任务

👉 输入:

  • n(总人数)

  • m(报数次数)

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

👉 输出:

  • 如果 全来了 👉 输出 n

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


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

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

我们准备一个数组:

复制代码
bool arrive[1000];

🎯含义:

👉 arrive[i] = false 👉 同学 i 还没来

👉 arrive[i] = 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

六、🏆 知识点总结

✨ 用数组记录状态

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

✨ 遍历检查

✨ 条件输出

✨ 模拟真实问题


相关推荐
aq55356002 小时前
Laravel8.x新特性全解析
c++·elasticsearch·mfc
我星期八休息2 小时前
Linux 进程核心原理全解:从冯诺依曼体系到进程控制全链路深度剖析
大数据·linux·服务器·开发语言·数据结构·c++·散列表
Cando学算法2 小时前
回声服务器项目
linux·开发语言·c++·计算机网络·ubuntu
不想写代码的星星2 小时前
我写的代码竟然敢和我比摸鱼?C++ 延迟计算那些事儿
c++
格林威2 小时前
面阵相机 vs 线阵相机:堡盟与大恒相机选型差异全解析 附C++ 实战演示
开发语言·c++·人工智能·数码相机·计算机视觉·视觉检测·工业相机
t***5442 小时前
如何在Dev-C++中配置Clang编译器
开发语言·c++
t***5443 小时前
Dev-C++ 中使用 Clang 调试有哪些常见问题
开发语言·c++
珹洺3 小时前
C++AI多模型聊天系统(四)SSH反向隧道/虚拟局域网(VLAN)调用本地Ollama大模型
c++·人工智能·ssh
小π军3 小时前
STL之multiset 常见API介绍
数据结构·c++·算法