题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
代码:
#include <stdio.h>
int main()
{
int n=8;
int table[n];
for(int i=0;i<n;i++){ //给数组元素赋初值
table[i]=1;
}
int index=0;
int baoShu=0;
int cnt=n;
while(cnt){
index++;
baoShu++;
if(index>n){
index=1;
}
while(table[index-1]==0){
index++;
if(index>n){
index=1;
}
}
if(baoShu==3){
table[index-1]=0;
printf("%-4d",index);
cnt--;
baoShu=0;
}
}
printf("\n最后留下的是第%d号",index);
return 0;
}
运行:
3 6 1 5 2 8 4 7
最后留下的是第7号
可参考b站视频: