有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位.
#include <stdio.h>
int baoshu(int n) //定义一个报数的函数
{
int a[n];
int i,count,num,flag;//i为循环变量,count为1~n人次循环,num为3人循环 ,flag为标记原来位
count = 0;
num = 0;
for(i = 0;i < n;i++)//给每个人编号
{
a[i] = i+1;
}
while(count != n - 1) //退出n-1个人时退出循环
{
for(i = 0;i < n;i++)
{
if(a[i] == 0)//报到为3的人退出
{
continue;
}
num++;
if(num == 3)
{
num = 0;
a[i] = 0;
count++;
}
}
}
for(i = 0;i < n;i++)
{
if(a[i] == 0)//不为0的为最终留下的人
{
continue;
}
flag = a[i];
break;
}
printf("留下的是原来的%d号\n",flag);
}
int main()
{
int n;
printf("输入人数:");
scanf("%d",&n);
baoshu(n);
return 0;
}