把上面的问题用c++完整写出来
时间: 2024-12-16 09:17:57 浏览: 3
当然可以,这是一个使用C++解决上述问题的基本代码实现。我们首先创建一个向量来存储每个学生的到达状态,然后通过遍历输入的报到信息来进行判断。
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
int n, m;
std::cin >> n >> m; // 班级人数和报到次数
std::vector<bool> visited(n, false); // 初始化所有学生未到达
std::vector<int> reports(m); // 存储报到的编号
// 读取报到的编号
for (int i = 0; i < m; ++i) {
std::cin >> reports[i];
if (!visited[reports[i]]) { // 如果学生还未报到
visited[reports[i]] = true; // 标记为已到达
}
}
// 找出并输出未到达的学生编号
std::vector<int> missing Students;
for (int i = 0; i < n; ++i) {
if (!visited[i]) {
missing.push_back(i);
}
}
// 如果有未到达的学生,按顺序输出
if (!missing.empty()) {
std::sort(missing.begin(), missing.end());
std::cout << " ";
for (int num : missing) {
std::cout << num << " ";
}
std::cout << "\n";
} else {
std::cout << n << "\n"; // 所有人都到达了
}
return 0;
}
```
在这个代码中,我们使用了C++标准库中的`vector`来简化数组操作,`cin`用于输入数据,`sort`函数用于排序结果。如果最后`missing`列表非空,就输出它们,否则输出所有人都到达的信息。
阅读全文