100 个小朋友围成一个圈,设定编号为 1~100,依次按 1、2、3、4、5、6、7、8、9 循 环报数,报到 9 的出圈,直到所有小朋友出圈。请写代码打印出各个小朋友出圈顺序。c++完成
时间: 2024-10-08 14:22:58 浏览: 54
oj_从1开始报数_编号1至n_n个死囚犯围成一圈_报到数m时_继续上述操作_
5星 · 资源好评率100%
以下是一个简单的C++代码示例,用于模拟上述过程并打印出各个小朋友出圈的顺序:
```c++
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> kids(100); // 创建一个包含100个小朋友的向量
for (int i = 0; i < 100; i++) {
kids[i] = i + 1; // 将小朋友编号赋值给向量元素
}
int圈数 = 0; // 圈数计数器
while (kids.size() > 1) { // 当小朋友人数大于1时循环报数
for (int i = 0; i < kids.size(); i++) {
if (kids[i] % 10 == 9) { // 如果当前小朋友编号除以10的余数为9,则出圈
kids.erase(kids.begin() + i); // 移除该元素
i--; // 在向量中处理过的位置跳过一位,确保后面不会再重复处理到相同的位置
}
}
cout << "圈 " << ++圈数 << ": "; // 输出圈数并开始处理剩下的小朋友
for (int i = 0; i < kids.size(); i++) { // 遍历剩下的小朋友
cout << kids[i] << " "; // 输出编号并检查是否需要出圈
}
cout << endl; // 换行
}
cout << "最后剩下的小朋友顺序为: "; // 输出最后剩下的小朋友顺序
for (int i = 0; i < kids.size(); i++) { // 遍历剩下的小朋友
cout << kids[i] << " "; // 输出编号
}
cout << endl; // 换行
return 0;
}
```
这段代码首先创建了一个包含100个小朋友编号的向量,并使用循环将这些编号赋值给向量元素。然后,使用一个循环模拟报数过程,每次报到9时将对应的小朋友从向量中移除。当小朋友人数小于等于1时,程序结束并输出剩下的小朋友顺序。请注意,此代码假设小朋友编号从1开始,而不是从0开始。
阅读全文