您的位置:首页 > 其它

围圈报数踢三游戏

2015-12-13 15:41 176 查看
n个人围成一个圈,从1到3报数,报到三的退出,求最后留下的人。

# include<stdio.h>
int main()
{
int i,k,m,n,num[20],*p;
scanf("%d",&n);
p=num;
//给每个位置的人一个编号
for(i=0; i<n; i++)
*(p+i)=i+1;
i=0;
m=0;
k=0;
//当退出的人数小于总人数的时候
while(m<n-1)
{
//如果某个位置退出了编号置零
//这里没有被退出就继续数数
if(*(p+i)!=0)
k++;
//数到为3的时候
if(k==3)
{
//玩家退出
*(p+i)=0;
//重新计数
k=0;
//记录又多了一个人退出了
m++;
}
//循环i++,准备观察下一个人
i++;
//如果一圈循环完了,从第一个开始
if(i==n)
i=0;
}
//遍历数组寻找最后哪个值不等于0就是最后剩下的玩家
while(*p==0)
p++;
printf("%d",*p);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: