首页 > 编程语言 >Java基础第五天(实训学习整理资料(五)练习题)

Java基础第五天(实训学习整理资料(五)练习题)

时间:2024-10-25 17:17:46浏览次数:3  
标签:练习题 Java 数列 System 打渔 实训 完数 println out

目录

1、百钱买百鸡

2、搬砖问题

3、(循环)**求水仙花数。

4、完数

5、费波那契,兔子数列

6、打渔还是晒网


1、百钱买百鸡

(for 循环)*“百钱买百鸡”是我国古代的著名数学题。题目这样描述:5 文
钱可以买1只公鸡,3 文钱可以买一只母鸡,1 文钱可以买3 只小鸡。用100 文
钱买100 只鸡,那么各有公鸡、母鸡、小鸡多少只?

2、搬砖问题

(for 循环)*搬砖问题:36 块砖,36 人搬,男搬4,女搬3,两个小孩抬1 砖,
要求一次全搬完,问男、女和小孩各若干?

3、(循环)**求水仙花数。

所谓水仙花数,是指一个三位数abc,如果满足
a^3+b^3+c^3=abc,则abc 是水仙花数,此处^表示次方。

4、完数

(循环)**如果一个数等于其所有因子之和,我们就称这个数为"完数",例如
6 的因子为1,2,3 6=1+2+3 6 就是一个完数.请编程打印出1000 以内所有的完数

5、费波那契,兔子数列

(循环)**已知:faibonacci(费波那契,兔子数列)数列的前几个数分别为0,1,1,
2,3,5,……。从第3 项开始,每一项都等于前两项的和。
读入一个整数n,编程求出此数列的前n 项。
注意:这里的数列是从0 开始的

6、打渔还是晒网

(循环)***打渔还是晒网
中国有句老话叫“三天打渔,两天晒网”。假设有一个人从2000 年1 月1 日
 开始“三天打渔两天晒网”,读入三个整数,分别表示年份、月份、日期,
问这三个整数所表示的那天这个人在打渔还是在晒网?
此处假设:1个月是30天,一年是365天

package day1025;

import java.time.LocalDate;
import java.time.Period;
import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num;
        do {
            System.out.println("请输入要执行的序号:" + "\n" + "\t" + "1:进入系统选择" + "\n" + "\t" + "2:退出系统");
            num = scanner.nextInt();
            switch (num) {
                case 2:
                    System.out.println("已退出");
                    System.exit(0);
                    break;
                case 1:
                    Scanner input = new Scanner(System.in);
                    System.out.println("请输入要查看的题目序号:");
                    System.out.println("\t" + "1:百钱买百鸡");
                    System.out.println("\t" + "2:搬砖问题" + "\n" + "\t" + "3:求水仙花数" + "\n" + "\t" + "4:1000以内的完数" + "\n" + "\t" + "5:费波那契(兔子数列)" + "\n" + "\t" + "6:打渔还是晒网");

                    int num1 = input.nextInt();
                    if (num1 > 6 || num1 <= 0) {
                        System.out.println("请重新输入一个正确的题目序号!");
                    }
                    switch (num1) {
                        case 1:
                            /**
                             * 百钱买百鸡
                             */
                            //设公鸡x只,母鸡y只,小鸡z只
                            //则x+y+z=100
                            //5x+3y+1/3z=100
                            int x, y, z, n = 0;
                            System.out.println("一百文钱可以有如下买法:");
                            for (x = 0; x <= 100; x++) {
                                for (y = 0; y <= 100; y++) {
                                    for (z = 0; z <= 100; z++) {
                                        if (5 * x + 3 * y + z / 3 == 100 && z % 3 == 0 && (x + y + z == 100)) {
                                            n++;
                                            System.out.println("第" + n + "种买法:" + "公鸡买" + x + "只" + "\t" + "母鸡买" + y + "只\t" + "小鸡买" + z + "只");
                                        }
                                    }
                                }
                            }
                            break;


                        case 2:

                            /**
                             * 百钱买百鸡
                             */
                            //设男人m位,女人w位,小孩b位
                            //则m+w+b=36
                            //4m+3w+1/2b=100
                            int m, w, b, number = 0;
                            System.out.println("36块砖可以有如下搬法:");
                            for (m = 0; m <= 36; m++) {
                                for (w = 0; w <= 36; w++) {
                                    for (b = 0; b <= 36; b++) {
                                        if (4 * w + 3 * m + b / 2 == 36 && b % 2 == 0 && (w + m + b == 36)) {
                                            number++;
                                            System.out.println("第" + number + "种搬法:" + "男人" + m + "位" + "\t" + "女人" + w + "位\t" + "小孩" + b + "位");
                                        }
                                    }
                                }
                            }
                            break;


                        case 3:

                            /**
                             *三位数的水仙花数
                             */
                            int numb = 0;
                            System.out.println("三位数以内的水仙花数如下:");
                            for (int i = 100; i < 1000; i++) {

                                numb++;
                                //拆分数位
                                int ge = i % 10;   //个位
                                int shi = i / 10 % 10;//十位
                                int bai = i / 100;//百位

                                if (ge * ge * ge + shi * shi * shi + bai * bai * bai == i) {

                                    System.out.println("分别为排在第" + numb + "位的:" + i);
                                }
                            }

                            break;


                        case 4:

                            /**
                             * 完数
                             */
                            //设置完数的上限
                            int maxnumber = 1000;
                            System.out.println("1000以内的完数如下:");
                            for (int num2 = 2; num2 <= maxnumber; num2++) {
                                int sum = 0;
                                for (int i = 1; i <= num2 / 2 + 1; i++) {
                                    if (num2 % i == 0) {
                                        sum += i;
                                    }
                                }
                                if (sum == num2) {
                                    System.out.println(num2);
                                }
                            }

                            break;


                        case 5:

                            /**
                             *费波那契(兔子数列)
                             */
                            Scanner scanner1 = new Scanner(System.in);
                            System.out.println("请输入一个整数:");
                            int next = scanner1.nextInt();

                            int first = 0, second = 0, third;

                            if (next <= 0) {
                                System.out.println("请输入一个大于0的整数!");
                            } else {
                                System.out.println("兔子数列为:");
                                for (int i = 1; i <= next; i++) {
                                    if (i == 1) {
                                        first = 0;
                                        third = 0;
                                    } else if (i == 2) {
                                        second = 1;
                                        third = 1;
                                    } else {
                                        third = first + second;
                                        first = second;
                                        second = third;
                                    }

                                    System.out.print(third);
                                    System.out.println();

                                }
                            }

                        break;

                        case 6:

                            /**
                             * 打渔还是晒网
                             */

                           /* //输入初识日期
                            LocalDate initalDate =LocalDate.of(2000, 1, 1);
                            //计算当前日期
                            LocalDate currentDate = LocalDate.now();
                            //计算打渔和晒网的日期差
                            Period periodFishing = Period.between(initalDate,currentDate);
                            int today = periodFishing.getDays()%5==0?1:2;
                            System.out.println("从2000年至今来算的话,今天应该:"+(today==2?"晒网":"打渔"));

                            */
                            Scanner sc = new Scanner(System.in);
                            System.out.println("何年?");
                            int Y = sc.nextInt();
                            if (Y<2000){
                                System.out.println("请输入一个2000年后的年份!");
                            }
                            System.out.println("何月?");
                            int M = sc.nextInt();
                            if (M>12){
                                System.out.println("请输入一个正确的月份!");
                            }
                            System.out.println("何日?");
                            int D = sc.nextInt();
                            if (Y>30){
                                System.out.println("请从1-30中输入一个正确的天数!");
                            }
                            int T=((Y-2000)*365)+((M-1)*30)+D;
                            if ((T%5)==0||(T%5)>3){
                                System.out.println("今天应该晒网");
                            }else {
                                System.out.println("今天应该打渔");
                            }



                            break;

                        default:
                            System.out.println("选择无效,请重新输入");
                            break;
                    }
                    break;
                        default:
                            System.out.println("选择无效,请重新输入");
                            break;
                    }

        }
        while (num != 2);
    }
}


 

标签:练习题,Java,数列,System,打渔,实训,完数,println,out
From: https://blog.csdn.net/Li_030406/article/details/143239616

相关文章

  • 基于Java的调查问卷系统的设计与实现
    研究目的本研究旨在设计和实现一个基于Java的调查问卷系统,以满足现代社会对数据收集和分析的迫切需求。随着互联网的普及和信息技术的飞速发展,调查问卷作为一种有效的数据收集工具,其重要性日益凸显。传统的纸质问卷存在成本高、效率低、数据难以统计分析等诸多弊端,而基于Java......
  • 自学java
    1.了解项目结构api文件夹:用于定义与外部系统或服务进行交互的API接口。这些API接口通常通过Feign客户端进行调用,Feign是一个声明式HTTP客户端,简化了HTTP请求的发送和接收。biz文件夹:该目录主要按业务模块划分,包含服务接口(Service)和实现类(ServiceImpl),以及控制器(Controller)c......
  • JAVA应用开发和后台有什么区别_1
    开篇直接回答:JAVA应用开发包括使用Java语言开发能够运行于各种平台的应用程序,涉及的类型繁多,如桌面应用、Web应用、移动应用等。而后台开发,通常指的是开发用于处理数据存储、逻辑处理、安全性等服务器端的软件系统,这个过程不特定于任何编程语言,并可能使用包括Java在内的多种程序......
  • Java面向对象:内部类(INNER CLASS)
    内部类(InnerClass)是Java中的一种特殊类,它定义在另一个类的内部。内部类可以访问其外部类的成员变量和方法,包括私有成员。这使得内部类非常适合用于封装与外部类紧密相关的逻辑。下面是一个关于内部类的示例代码及其解释:publicclassOuterClass{privateStringouterF......
  • java计算机毕业设计毕业生能力调查评价系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着教育的普及和社会的发展,毕业生数量逐年增加,他们面临着日益激烈的就业竞争。企业在招聘过程中,需要更精准地了解毕业生的能力水平;教育机构也需......
  • java计算机毕业设计超市管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着经济的快速发展和人们生活水平的提高,超市作为一种重要的零售业态,在人们的日常生活中扮演着不可或缺的角色。然而,传统的超市管理方式往往依赖......
  • java计算机毕业设计Switch交流平台(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着游戏产业的蓬勃发展,Switch作为一款热门的游戏主机,在全球范围内拥有大量的用户。这些用户在游戏体验过程中,对于游戏攻略、用户交流等有着强烈......
  • java计算机毕业设计车源后台管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着汽车行业的蓬勃发展,车源相关信息的管理变得日益复杂和重要。汽车市场规模不断扩大,汽车经销商、租赁公司以及电商平台等涉及车源业务的主体数......
  • 2024最新互联网工程师 Java 面试八股文及答案整理
    2024金九银十即将结束,竟很多同学会问Java面试八股文有必要背吗?!!我的回答是:很有必要!!!!你可以讨厌这种模式,但你一定要去背,因为不背你就进不了大厂。国内的互联网面试,恐怕是现存的、最接近科举考试的制度。而且,我国的八股文确实是独树一帜。以美国为例,北美工程师面试比较重视算......
  • 3.Java 运算符(算术运算符、赋值运算符、逻辑运算符、关系运算符、三元运算符、标识符
    一、算术运算符1、基本介绍运算符说明+正号-负号运算符说明+加-减*乘/除%取模(取余)运算符说明示例结果++自增(前),先运算后取值a=2;b=++a;a=3;b=3;++自增(后),先取值后运算a=2;b=a++;a=3;b=2;–自减(前),先运算后取值a=2;b=--a;a=1;b=1;–自减(后),先......