有N个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位(c++).
#include "iostream.h"
#define nmax 50 N 为 50
void main()
{
int i=0,k=0,m=0,n=0;
int person[nmax]; 存放人的数组
int *p=person; 指向数组指针
cout << "Input the total number of the student:n=";
cin >> n; N 小于等于 50
for (i=0; i<n; i++)
{
p[i]=i+1; p[0]=1;p[1]=2;p[2]=3;...;p[i]=i+1;
各元素值非 0,表示均未出列
}
i=0;
while(m<n-1)
{
if (p[i]!=0)
{
k++;
}
if (k==3)
{
p[i]=0; 用 0 表示该人已出列
m++; 累计已出列的人数
k=0;
}
i++;
if(i==n)
{
i=0;
}
}
cout << endl;
while (*p==0)
{
p++;
}
cout << "the left person is: person[" << *p-1 << "]" << endl;
}