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

六、🏆 知识点总结

✨ 用数组记录状态

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

✨ 遍历检查

✨ 条件输出

✨ 模拟真实问题


相关推荐
水饺编程11 分钟前
编程基础:令牌粘贴指令,【##】
c语言·c++·windows·visual studio
basketball61612 分钟前
C 的 malloc/free 与 C++ 的 new/delete 一些区别
c语言·开发语言·c++
mmz120713 分钟前
广搜题目练习(c++)
c++·算法
郝学胜-神的一滴16 分钟前
Qt 高级开发 006: 架构全解 + 高效学习指南
开发语言·c++·qt·程序人生·架构
我命由我1234539 分钟前
Visual Studio - Visual Studio 注释快捷键
java·c语言·开发语言·c++·ide·java-ee·visual studio
NashSKY1 小时前
关于支持向量机(SVM)的数学原理、参数拟合、嵌入式部署的完整指南
c++·python·机器学习·支持向量机
99乘法口诀万物皆可变1 小时前
面向电池管理系统(BMS)的 C++ 实时仿真内核
开发语言·c++
晚风_END1 小时前
Linux|操作系统|最新版zfs编译后的适用于centos7的rpm安装包完全离线安装介绍
linux·运维·服务器·c++·python·缓存·github
青瓦梦滋1 小时前
C++特殊类设计(设计模式)和类型转换
c++·设计模式
(Charon)1 小时前
【C++/Qt】Qt 网络工具中的输入校验设计:IP、端口、URL 和空内容判断
服务器·c++·tcp/ip