#include<stdio.h>
#include<math.h>
int main()
{
int m,n,i,choose,temp=1,flag=0;
do{
printf("======================菜单=========================\n");
printf(" 1、开始或继续, 0、退出!\n");
printf("===================================================\n");
printf("请选择操作:");
scanf("%d",&choose);
system("cls");
switch(choose){
case 1: printf("请输入上限数:");
scanf("%d",&n);
if(flag>0||temp>1)
{ flag=0;
temp=1;
}
while(n>1){
if(n%2==0)
n/=2;
else
n=(n-1)/2;
flag++;
printf("第%d次剩余人数:%d\n",flag,n);
for(i=1;i<=n;i++)
{ printf("%d ",i*2*temp); //剩余人数所在的位置数
m=i*2*temp;//选中的人的位置数
}
printf("\n");
temp*=2;
}
printf("挑选次数:%d\n",flag);
printf("最终选中人的的位置:%d\n",m);
break;
case 0:choose=0;
break;
}
}while(choose!=0);
return 0;
}
结果:200人时选中的人是128号