有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子求最后留下的人
想了一下午终于做好了 记录一下 嘿嘿#include<stdio.h>
int main()
{
int a,flag=0;
int i,n,count;
printf("Please input a number:");
scanf("%d",&n);
count=n;
for (i = 1;i <= n;i++)//报数之前所有人为1,为0表示出圈
{
a = 1;
}
for (i = 1; ;i++)
{
if (i == n+1)//到最后一个人时衔接到第一个人
{
i=1;
}
if (a != 0)
{
flag++;
}
else //为0时跳过报数
{
continue;
}
if (flag%3 == 0)//每当报数为3时出圈
{
a = 0;
count--;
}
if (count == 1)//当只剩一个人时循环结束
{
break;
}
}
for (i = 1;i <= n;i++) //寻找最后为1的人即是最后留下来的人
{
if (a == 1)
{
printf("a[%d]\n",i);
}
}
return 0;
}
文档来源:51CTO技术博客https://blog.51cto.com/u_15306866/3177781
页:
[1]