(05)while循环的应用

1. 输出1900-2012的闰年。(闰年规则:①、能被4整除且不能被100整除的为闰年.②、能被400整除的是闰年)

在这里插入图片描述

2. 输出10000-99999里面的所有回文数。说明:即12321是回文数,个位与万位相同,十位与千位相同。

在这里插入图片描述

3. 购物小游戏

在这里插入图片描述

        System.out.println("===========Shopping管理系统===========");
        System.out.println("**********************************");
        System.out.println("请选择购买的商品编号:");
        double one = 356, two = 534, three = 199;
        System.out.println("编号:0001----T恤\t编号:0002----网球鞋\t\t编号:0003----网球拍");
        System.out.println("**********************************");
        Scanner scanner = new Scanner(System.in);
        boolean flag = true;//flag循环是否继续的标志
        int num;//购买的数量
        String str = "";//接收输入的yes和no
        String no = null;//商品编号
        double money = 0;//消费金额
        while(flag){
            System.out.println("请输入商品编号:");
            no = scanner.next();//得到商品编号
            System.out.println("请输入购买数量:");
            num = scanner.nextInt();
            switch (no){
                case "0001":
                    System.out.println("T恤\t¥"+one+"\t数量"+num+"\t合计¥"+one*num);
                    money += one*num;
                    break;
                case "0002":
                    System.out.println("网球鞋\t¥"+two+"\t数量"+num+"\t合计¥"+two*num);
                    money += two*num;
                    break;
                case "0003":
                    System.out.println("网球拍\t¥"+three+"\t数量"+num+"\t合计¥"+three*num);
                    money += three*num;
                    break;
            }
            System.out.println("是否继续(yes/no)");
            str = scanner.next();
            if ("no".equals(str)) {
                break;
            }
        }
        System.out.println("折扣"+0.8);
        System.out.println("应付金额:"+money*0.8);
        System.out.print("实付金额:");
        double smoney = scanner.nextDouble();//实付金额
        System.out.println("找钱:"+(smoney - money*0.8));
        scanner.close();//关闭资源
4. 猴子摘了一堆枣N个,第一天吃了一半,还嫌不过瘾,又多吃了一个:第二天又吃了剩下的一半零一个:以后每天如此,到第十天,猴子一看只剩下一个了。问最初有多少个枣子?
        int n = 1;//最后剩下的枣子
        int m = 0;//最初的枣子
        int count = 1;
        do {
            m = (n+1) * 2;
            n = m;
            count ++;
        }while(count < 10);
        System.out.println("循环的次数"+count);
        System.out.println("最初的枣子:"+m);
5. 两个乒乓球队进行比赛,各出三人。甲队为A、B、C 3人。乙队为X、Y、Z 3人,已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编写代码找出三队赛手名单。

在这里插入图片描述

6. 一个人拿100元买100只鸡,已知公鸡每只2元,母鸡每只1.5元,小鸡每只0.5元,并且要求公鸡、母鸡、小鸡都至少要有一只,问有多少种买法?

在这里插入图片描述

7. 求反序数:反序数就是将整数倒过来的整数,如整数12345,倒过来是54321。需求:求任何给定的整数的反序数

在这里插入图片描述

8. 指定最大位数N,找出其中的水仙花数(水仙花数:是指一个三位或以上的数字,它的每个位上的数字的n次幂之和等于它本身。例如:153=1*1*1+5*5*5+3*3*3。)
            System.out.print("指定最大位数N:");
            Scanner input = new Scanner(System.in);
            int N = input.nextInt();
            input.close();
            for (int i = 3; i <= N; i++) {
                int a[] = new int[i];
                int num = (int) Math.pow(10, i - 1) + 1;
                System.out.print(i + "位的水仙花数有:\t");
                while (num <= Math.pow(10, i)) {
                    int sum = 0;
                    for (int j = 0; j < i; j++) {
                       int aaa = (int)Math.pow(10, j);
                        a[j] = (int) (num / Math.pow(10, j) % 10);
                    }
                    for (int j = 0; j < i; j++) {
                        sum = sum + (int) Math.pow(a[j], i);
                    }
                    if (num == sum) {
                        System.out.print(num + "\t");
                    }
                    num++;
                }
                System.out.print("\n");
            }
9. 一共30个人,可能包括男人,女人,小孩,他们一家在饭馆吃饭一共花了50元,其中男人花了3元,每个女人花2元,小孩1元,请问男人,女人,小孩各几个人?
        for (int i = 1;i <= 50/3;i++){ //男人
            for (int j = 1 ;  j <= 30-i; j++){ //女人
                for (int k = 1; k<= 30-i-j;k++){ //小孩
                    if ((i+j+k==30) && (i*3+j*2+k*1==50)) {
                        System.out.println(i+" "+j+" "+k);
                    }
                }
            }

下一章,(06)ASCII码表

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值