我还是贴出来吧
#include
void main()
{
int i,k,m,n,num[50],*p;
printf("input number of person: n=");
scanf("%d",&n);
p=num;
for(i=0;i
i=0;
k=0;
m=0;
while(m
if(*(p+i)!=0)//判断这个号(原来的序号)是否出局
k++;//这个号没有出局,就报数,计数器加1
if(k==3)//报3的出局
{
*(p+i)=0;//将出局的这个人标记
k=0;//使计数器置零,以便后面的人报数
m++;//出局人数计数器加1
}
i++;//将指针后移,虽然i不是指针,但p+i就是指针了,所以i就是为指针服务的
if(i==n)//如果指针移到了尾部,则返回到头部
i=0;
}
//以上的循环是主要焦点,后面的就是找出最后那个人,这个好理解
while(*p==0)//用这个可以只判断所找号的前面的号(包括所找号),不用判断后面的。
p++;
printf("The last one is N0.%d\n",*p);
}