程序分析
实现思路
1.输入人数,并声明长度为人数的数组,并给数组元素赋值(非0元素值);
2.定义两个变量 count(用于累加存储第三个人),index(循环索引)
代码实现
import java.util.Scanner;
/*题目:
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),
凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
*/
public class Test {
public static void main(String[] args) {
//1.输入人数,并声明长度为人数的数组
Scanner input = new Scanner(System.in);
System.out.println("请输入人数:");
int num = input.nextInt();
int peoples[] = new int[num];
//给数组赋值
for (int i = 0; i < peoples.length; i++) {
peoples[i] = 1;
}
//2.定义两个变量 count(用于累加存储第三个人),index(循环索引)
int count =0;
int index =0;
while(num>2) {
if(peoples[index]!=0) {//不是置零的,继续数数
count++;
if(count==3) {
count =0; //累加到3清零
peoples[index]=0; //把数到3的置零
num--;//人数减一,去掉一人
}
}
index++;
if(index==peoples.length)
index =0;
}
for (int i = 0; i < peoples.length; i++) {
if(peoples[i]!=0) {
System.out.printf("原来排在第%d个位置的人留下了。\n",(i+1));
}
}
}
}