java代码:25个小朋友编号从1到25围一个圈,从头开始1到3报数,报到3这个数的退出圆圈,最后一个留在圈里的小孩就是班长,问:班长到底是多少号小朋友?
拿到这个题我们应该先进行分析
首先
应该用一个长度为25的数组来对小朋友的编号来进行录入
int[] arr = new int[25];
for (int i = 0; i < 25; i++) {
a[i] = i + 1;
}
在之后每数到3的小朋友就退出圈外我们应该用一个数字来记录 0-1, 1-2, 2-3 的一个过程
那么还有一直要到只剩下一位同学的时候才停止就意味着一共要删除24人所以也要用一个数字来记录删除的人数
int de = 0;//删除的人数
int count = 0;//记录谁数到了三 计数器
最后需要判断的是小朋友怎么样才算被移出去了
就可以通过给小朋友编号进行赋值的方式来判断 用0来表示小朋友已经被一出去了 不在进入循环即可
最后代码的实现
int[] arr = new int[25];
for (int i = 0; i < 25; i++) {
arr[i] = i + 1;
}
int de = 0;//删除的人数
int count = 0;//记录谁数到了三 计数器
while (de < arr.length - 1) //班上25人最多删24个就要停下来
{
for (int i = 0; i < 25; i++) //把数组中的每一个人遍历一次直到while层停止
{
if (arr[i] > 0) {
count++;// 0 -> 1 -> 2 -> 3 只变化三次
//c 0 c1 c2 c3(de)
if (count == 3) {
arr[i] = 0;
count = 0;
de++;
}
}
}
}
for (int i = 0; i < 25; i++) {
if (arr[i] != 0) {
System.out.println("班长是第" + (i + 1) + "号学生");
}
}