#include<iostream>
#define N 100
using namespace std;
int main()
{
int a[N];
int* p;
int n = 0; //n表示一共多少人
int m = 0; //m表示被淘汰的人数
int i = 1; //每轮循环中的计数器
int k = 0; //用来表示报数的数
int j = 0; //用于循环的计数器
p = a;
cout << "请输入总人数:";
cin >> n;
cout << "出圈顺序为:" << endl;
for (j = 1; j <= n; j++)
{
*(p+j) = j;
}
while (m < n - 1)
{
if (*(p+i) != 0) //判断该人是否已经淘汰
{
k++;
}
if (k == 3)
{
cout << *(p + i) <<" 号" <<endl;
*(p + i) = 0; //淘汰报数为3的人(即将其值设置为0)
k = 0; //将k置为0,重新报数
m++; //对淘汰人数进行计数
}
i++; //对下一个人进行判断
if (i == n + 1) //到了圈子的末尾出处,下一个位置将是圈子的开始
{
i = 1; //将下一个人置为 1(圈子的开始位置 )
}
}
for (j = 1; j <= n; j++)
{
if (*(p + j) != 0)
{
cout << *(p + j) << " 号" << endl;
}
}
return 0;
}
【C++】:有N个人围成一圈,且按顺序编号,从第一个人开始按1,2,3顺序报数,凡是报到3的人退出圈子,然后从出圈的下一个人开始重复此过程,使用指针编程输出出圈序列
最新推荐文章于 2023-03-19 15:09:14 发布