#include<iostream>
#include<iomanip>
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<m;i++)
{a[i]=i+1;
cout<<a[i]<<setw(4);}
cout<<endl;
while(1)
{
if(*p!=0)
{
if(out==m) break;//判断有没有完全输出数组
call++;//报数的作用
call%=n;//形成1,2,,,,n-1,0的报数,等于0的时候输出
if(call==0)
{
cout<<*p<<setw(4);
*p=0;
#include<iomanip>
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<m;i++)
{a[i]=i+1;
cout<<a[i]<<setw(4);}
cout<<endl;
while(1)
{
if(*p!=0)
{
if(out==m) break;//判断有没有完全输出数组
call++;//报数的作用
call%=n;//形成1,2,,,,n-1,0的报数,等于0的时候输出
if(call==0)
{
cout<<*p<<setw(4);
*p=0;

该程序演示了有m个人围成一圈,按编号循环报数,报到n的人出圈,直至只剩一人。用户输入圈的大小m和报数n,程序通过指针操作实现此过程。代码中,利用数组存储人员编号,通过指针移动和报数计数,当计数为0时,将对应编号设为0表示出圈,最终输出最后剩下的人的编号。
1802

被折叠的 条评论
为什么被折叠?



