按1,2,3循环报数,报3的出局,求剩下最后一个的编号
以下为,C/C++语言实现:
#include<stdio.h>
#include<string.h>
#define N 10 //不能有分号 否则a[N] 会变成:a[20;]
void count3()
{
int a[N]={0};//行不写具体会出错。
int n=N;
int t=0; //报数
while (n>1){ //只剩下一个人时才停止报数
for(int i=0;i<N;i++)
{
//printf("%d--%d; ",a[i][0],a[i][1]);
if(a[i]==1) continue;
else if(a[i]==0)
{ t++;
if(t%3==0) //也要改成按5,6等报数
{
a[i]=1; //退出的人标识i置1
n--; //还未退出人数减1
}
}
}
}
for(int j=0;j<N;j++)
{
if(a[j]==0) printf("%d----%d; ",j+1, a[j]);
}
}