【程式37】 題目:有n個人圍成一圈,順序排號。從第一個人開始報數 (從1到3報數),凡報到3的人退出圈子,問最後留下的是 原來第幾號的那位。
阿新 • • 發佈:2019-02-13
/* 2017年3月10日11:42:46 java基礎50道經典練習題 例37 Athor: ZJY && Purpose: 【程式37】 題目:有n個人圍成一圈,順序排號。從第一個人開始報數 (從1到3報數),凡報到3的人退出圈子,問最後留下的是 原來第幾號的那位。 */ import java.util.Scanner; public class ProgramNo37_1 { public static void main(String[] args) { System.out.print("請輸入有幾個人參加:n = "); Scanner sc = new Scanner(System.in); int number = sc.nextInt(); sc.close(); //定義標識的某人是否還在圈內 boolean[] isIn = new boolean[number]; for (int i=0; i<isIn.length; i++) isIn[i] = true; //定義還在圈內的人數, 報數, 索引 int inCount = number; int countNum = 0; int index = 0; while (inCount > 1) { if(isIn[index]) { countNum++; if(0 == countNum%3) { inCount--; countNum = 0; isIn[index] = false; } } index++; if(index == number) index = 0; } for (int i=0; i<isIn.length; i++) if(isIn[i]) { System.out.println("留下的是: "+(i+1)); } } }
/* 2017年3月10日11:42:46 java基礎50道經典練習題 例37 Athor: ZJY Purpose: */ import java.util.Scanner; public class ProgramNo37_2 { public static void main(String[] args){ System.out.print("請輸入一個整數:"); Scanner scan = new Scanner(System.in); int n = scan.nextInt(); scan.close(); //定義陣列變數標識某人是否還在圈內 boolean[] isIn = new boolean[n]; for(int i=0; i<isIn.length; i++) isIn[i] = true; //定義圈內人數、報數、索引 int inCount = n; int countNum = 0; int index = 0; while (inCount > 1) { if(isIn[index]){ countNum++; if(countNum==3){ countNum = 0; isIn[index] = false; inCount--; } } index++; if(index==n) index = 0; } for(int i=0; i<n; i++) if(isIn[i]) System.out.println("留下的是:"+(i+1)); } }