有29人排成一行,编号1-29,从1号开始,1至2报数,报数2的不动,报数1的退出,留下来的再1至2报数。有算式

来源:百度知道 编辑:UC知道 时间:2024/06/15 20:17:51
这样不断重复,直至最后1人。最后的人是第几号?如果是38人呢?69人呢?

#include<stdio.h>

#define X 27

int loc=0;

void baoshu(int s[])
{
int i,a=1,flag=0;
for(i=0;i<X;i++)
{
if( s[i]==1&&a==1 )
{
s[i]=0;
loc=i+1;
a=2;
flag=1;

printf(" %d ",loc);
}
else if( s[i]==1&&a==2 )
{
a=1;
flag=1;

}
}
if(flag==1)baoshu(s);

}

void main()
{
int i,pp,s[X];
for(i=0;i<X;i++)
{
s[i]=1;
/* if( (i+1)%2==0 )//为偶数号
s[i]=1;//报2设置1不动
else{s[i]=0;}//报1设置0退出*/
}
printf("退出队列的次序是:\n");
baoshu(s);
printf("\n最后一个人是%d\n",loc);
}

#define X 27 如果要测试其他人数的话就修改这里的

穿红黄两色衣服的各有2人,身穿蓝衣服的有1人,现将这5人排成一行,要求穿相同颜色衣服的人不能相邻 有一些小朋友排成一行, 学校上操正好排成人数相等的7行,张三排在中间一行,从左从右数 都是第3个,问共 有多少人? 4名男生,3名女生排成一行,男生女生相间,各有多少种排法? 假设有足够多的黑白围棋子,按照下面的规律排成一行: 有25棵树,要求排成6行,并且必须5棵一行.要怎么栽? l六(1)班同学做操,排成3行少1人,排成4行多3人,排成5行少1人,排成6行多5人.六(1)班有多少人? 六(1)班做操,排成3行少1人,排成4行多3人,排成5行少1人,排成6行多5人.六(1)班有多少人? 有一班排成3行多2人,排成4行多1人,排成5行多4人,排成6行少1人,这班人数不超过100人,求该班人数 24个人按照5人排一行排成6行该怎么排