有100个人围成一圈,并编号,从一开始报数(1-3循环报),每次抽出报过3的人,问最后的人原来是几号.把这个问题用c++编写,我需要c语言的一个程序。
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/24 13:24:12
有100个人围成一圈,并编号,从一开始报数(1-3循环报),每次抽出报过3的人,问最后的人原来是几号.把这个问题用c++编写,我需要c语言的一个程序。
有100个人围成一圈,并编号,从一开始报数(1-3循环报),每次抽出报过3的人,问最后的人原来是几号.
把这个问题用c++编写,我需要c语言的一个程序。
有100个人围成一圈,并编号,从一开始报数(1-3循环报),每次抽出报过3的人,问最后的人原来是几号.把这个问题用c++编写,我需要c语言的一个程序。
最后剩的3个数是:58号、91号、100号继续下去最后一个人是原来的91号.
#include
#define N 10 //定义个数
#define C 3 //定义报数
int main()
{
int a[N];
int i,j,count;
//初始化数组
for(i=0;i
a[i]=i+1;
}
全部展开
#include
#define N 10 //定义个数
#define C 3 //定义报数
int main()
{
int a[N];
int i,j,count;
//初始化数组
for(i=0;i
a[i]=i+1;
}
count=N;//计数器
//循环处理前N-1个编号,每次查找出,将计数器递减,直到为1
printf("依次出局:\n");
for(i=0,j=0;count>1;)
{
if(a[i%N]!=0)//如果此数不为0,代表没有出局
{
if(j==C-1)//累加到报数个
{
i=i%N;//循环取编号
printf("%d ",a[i]);//输出
a[i]=0; //置0,代表出局
j=0; //置j=0,重新计数
count--; //计数器减一
while(a[i]==0)//寻找下一个没有出局的编号
{
i++;
i=i%N;//循环取编号
}
continue;//直接执行下一个外循环
}
else//否则累加报数个数
j++;
}
i++;
}
//处理最后一个
printf("\n最后一个:%d\n",a[i]);//输出
getchar();
return 0;
}
收起