题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
分析:最后留下的是第n号那位

 import java.util.Scanner;
public class Prog37{
public static void main(String[] args){
System.out.println("请输入排成一圈的人数:");
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++) {//给数组赋值都为true
isIn[i]=true;
}
//定义圈内人数、报数和索引
int inCount=n;//定义圈内人数
int countNum=0;//定义报数
int index=0;//定义索引
//去掉报数为3的人
while(inCount>1) {
if(isIn[index]) {
countNum++;//开始报数
if(countNum==3) {//当报数累加到3时
countNum=0;//从下一位开始将报数归于0,从1开始重新报数
isIn[index]=false;//将此时索引值对应的数改为false
inCount--;//圈内一个人改为false后,下次此人便不再进行报数,所以inCount-1
}
}
index++;//索引值+1进行下一次if判断
if(index==n) {
index=0;
}
}
//遍历数组中最后还是true的值,表示此人还在留在圈中
for(int i=0;i<n;i++) {
if(isIn[i]) {
System.out.println("最后留下的是原来第"+(i+1)+"号的那位");
}
}
}
}
/*运行结果
请输入排成一圈的人数:
7
最后留下的是原来第4号的那位
*/

Java50道经典习题-程序37 报数的更多相关文章

  1. Java50道经典习题-程序50 文件IO

    题目:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,将原有的数据和计算出的平均分数存放在磁盘文件"stud"中. impo ...

  2. Java50道经典习题-程序18 乒乓球赛

    题目:两个乒乓球队进行比赛,各出三人.甲队为a,b,c三人,乙队为x,y,z三人.已抽签决定比赛名单.有人向队员打听比赛的名单. a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单.分析: ...

  3. Java50道经典习题-程序1 不死神兔

    题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 分析:假如:1月1日有1对兔子,根据题目“从出生后 ...

  4. Java50道经典习题-程序27 求素数

    题目:求100之内的素数分析:素数即除了1和它本身以外不再有其他因数,最小的素数是2 判断一个数n是否是素数的方法:将n分别与2到(n+1)/2取余,若有一个值为0,则n就不为素数,反之为素数 pub ...

  5. Java50道经典习题-程序46 字符串连接

    题目:编写一个两个字符串连接的程序 import java.util.Scanner; public class Prog46 { public static void main(String[] a ...

  6. Java50道经典习题-程序47 输入数字打印星号

    题目:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*. import java.util.Scanner; public class Prog47{ public static ...

  7. Java50道经典习题-程序6 求最大公约数及最小公倍数

    题目:输入两个正整数m和n,求其最大公约数和最小公倍数.分析:用辗转相除法求最大公约数    两个数的最大公约数:设两个数分别为n和m,(n>=m);用定义一个变量i,使用for循环,将i的取值 ...

  8. Java50道经典习题-程序5 判断分数等级

    题目:利用三元运算符来完成此题:从键盘录入一个整型的分数,没有负分满分为100分,学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示.分析:三元运算符的格式为:逻 ...

  9. Java50道经典习题-程序7 处理字符串

    题目:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数.分析:利用while语句,条件为输入的字符不为'\n'. import java.util.*; public class Pr ...

随机推荐

  1. js1

    document.write('<h1>Hello World</h1>'); //写入网页 alert('Hello World'); console.log('Hello ...

  2. Java处理乱码问题

    中文乱码分为GET乱码和POST乱码 GET乱码在Tomcat中配置编码 <Connector port="8080" protocol="HTTP/1.1&quo ...

  3. Dubbo与Zookeeper

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的功 ...

  4. grunt 压缩js css html 合并等配置与操作详解

    module.exports = function(grunt){ //1.引入 grunt.loadNpmTasks('grunt-contrib-cssmin'); grunt.loadNpmTa ...

  5. 五、Jmeter--关联(正则表达式)

    一.什么时候需要关联? 1. 服务器返回的动态变化而且对业务有影响的需要关联. 2. 回放脚本看是否正确,检查下脚本,是否有动态数据影响 3. 一大串字符串,每次请求参数是否有变化 4. 可以找开发问 ...

  6. Ext.tree.Panel

    initComponent : function() { var data = null;        Ext.Ajax.request({            url : 'xxx/xx',   ...

  7. 机器学习:调整kNN的超参数

    一.评测标准 模型的测评标准:分类的准确度(accuracy): 预测准确度 = 预测成功的样本个数/预测数据集样本总数: 二.超参数 超参数:运行机器学习算法前需要指定的参数: kNN算法中的超参数 ...

  8. mysql函数之二:left,right,substring,substring_index MySQL截取字符串函数方法

    函数: 1.从左开始截取字符串 left(str, length) 说明:left(被截取字段,截取长度) 例:select left(content,200) as abstract from my ...

  9. MongoTemplate聚合操作

    Aggregation简单来说,就是提供数据统计.分析.分类的方法,这与mapreduce有异曲同工之处,只不过mongodb做了更多的封装与优化,让数据操作更加便捷和易用.Aggregation操作 ...

  10. 运行jar应用程序引用其他jar包的三种常用方法(jar命令)

    参考:http://blog.csdn.net/wangmuming/article/details/44343017 方法一.使用Extension Classloader来加载 你可以把需要加载的 ...