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

六、🏆 知识点总结

✨ 用数组记录状态

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

✨ 遍历检查

✨ 条件输出

✨ 模拟真实问题


相关推荐
吹什么轩11 小时前
c++复习:map和set的使用
开发语言·c++
fpcc12 小时前
跟我学C++中级篇—内存流
开发语言·c++
吹什么轩13 小时前
c++复习:模拟实现list来更好的理解和应用list
开发语言·c++
AmyLin_200113 小时前
PDF 色彩保真工程实践【5】核心实现(下):拼装 Image XObject、页面资源与内容流
c++·pdf·sdk·颜色空间·印刷·icc·cmyk
乱七八糟的屋子14 小时前
MTL4 (Matrix Template Library) 超详细实战教程|C++高性能稠密/稀疏矩阵计算
c++·矩阵·稀疏矩阵·mtl4·matrixtemplate·c++线性代数·高性能数值计算
依然鸣15 小时前
PTA团体程序设计天梯赛L2真题讲解L2-045-048
数据结构·c++·经验分享·学习·算法·pat考试·pat
有点。15 小时前
C++深度优先搜索(二)
开发语言·c++·深度优先
思麟呀16 小时前
C++(七):std::any+std::string_view
开发语言·c++
小小龙学IT16 小时前
Taskflow:用一张“任务图“玩转现代 C++ 并行编程开源项
c++·开源·github
wuminyu17 小时前
JUC包的AQS与JVM的ObjectMonitor机制对比分析
java·linux·c语言·jvm·c++