其他分享
首页 > 其他分享> > 报数选队长代码

报数选队长代码

作者:互联网

需求

同学们相约一起游玩,大家准备推举一个人作为临时队长。为了体现合理公平,大家提出了一个规则。所有人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出,剩下的人继续报数,最后留下的当选为队长。求出一组人中的队长是原来第几位同学。

public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入总人数");
        int num = sc.nextInt();
        int[] mates = new int[num];
        //报数变量
        int baoshu=0;
        //退出人数
        int exitNum = 0;

        while(exitNum < num-1){

            for (int i = 0 ; i<mates.length;i++){
                //0代表没退出,因为初始化为0
                if (mates[i] == 0){
                    baoshu++;
                    if(baoshu == 3){
                        //-1代表退出
                        mates[i] = -1;
                        baoshu = 0;
                        exitNum++;
                    }
                }
            }
        }
        //寻找不为-1的下标
        for (int i = 0 ; i<mates.length;i++){
            if (mates[i] == 0){
                System.out.println("第"+ (i+1) + "号同学是队长");
            }
        }
    }

整体思路是用一个数组代表全班同学,因为数组初始化为0,所以0代表还没有被淘汰的同学,设置-1为淘汰的同学。 使用一个while循环,循环条件是只剩下一位同学的时候停止循环。 循环报数,baoshu变量自加,到三则归零,报到3的同学被淘汰,设置为-1 如此循环,直到程序结束。

 

showtooltip

标签:队长,同学,int,代码,num,报数,循环
来源: https://www.cnblogs.com/coding8832/p/14496505.html