题目要求
猴子选大王。输入猴子的个数n,所有的猴子从1-n编号排成一圈,从1号猴子开始数数,数到3的倍数猴子被淘汰,最后剩下的是大王。输出是大王的猴子的编号(提示:使用数组,每个数组元素相当于一个猴子,猴子的编号就是数组元素下标加一。)
思路
输入猴子的总数为a,新建数组x[a],利用for循环给数组中的元素赋初值为1,定义留下来的猴子数为left=a,while循环的条件为left>1,if(x[index]==1)说明该猴子未被淘汰,继续报数,用num来计数,当num%3 ==0的时候,说明该猴子要被淘汰,num=0;x[index]=0,left–;
当跳出while循环时,遍历数组,看哪只猴子的值为1,就输出。
实验代码
package shiyan4;
import java.util.Scanner;
public class shiyan4 {
public static void main(String[] args) {
System.out.println("请输入猴子的总数");
Scanner out=new Scanner (System.in);
int a=out.nextInt();//输入猴子的数量
out.close();
int [] x=new int [a];
for(int i=0;i<x.length;i++) {
x[i]=1;
}
int left=a;
int num=0;//报数
int index=0;//数组下标
while(left>1) {
if(x[index]==1) {
num++;//该猴子未被淘汰,继续报数
if(num%3==0) {
num=0;
x[index]=0;
left--;
}
}
index++;
if(index==a) {
index=0;//保证首尾位相连
}
}
for(int j=0;j<x.length;j++) {
if(x[j]==1) {
System.out.println("猴王的编号为: "+(j+1));
}
}
}
}
有问题可以私信或者评论,
java的学习还是要多注重上机操作和思考
要继续坚持呀,
fighting