有m个人围成一圈,顺序编号,编号固定,从1道n循环报数,遇到n出圈,依次类推。。。。。

#include
#include
using namespace std;
int main()
{
int a[100],m,n,i,*p,call=0,out=0;
p=a;
cout<<"请输入圈的大小m:";
cin>>m;
cout<<"请输入报数n:";
cin>>n;
for(i=0;i{a[i]=i+1;
cout<cout<while(1)
{
if(*p!=0)
{
if(out==m) break;//判断有没有完全输出数组
call++;//报数的作用
call%=n;//形成1,2,,,,n-1,0的报数,等于0的时候输出
if(call==0)
{
  cout<<*p<   *p=0;
  out++;
}
}
//当指针p又回到a[0]所指的位置,先不能再将指针p位置后移不然会错开一位
if(p==&a[m-1])
{ p=a;//回到a[0]相当于指针后移了一位
if(*p!=0)
{
call++;
call%=n;
if(out==m) break;
if(call==0)
{
  cout<<*p<   *p=0;
  out++;
}
}
}
p++;
}
return 0;
}

你可能感兴趣的:(c/c++)