Java-exp3

目录

1、用while循环语句,计算1--2000之间的所有3的倍数之和。

2、Scanner类是java.util包中的一个常用于控制台的输入的类,当需要使用控制台输入时,可调用该类完成程序交互,利用Scanner类和switch语句实现输入某年某月,判断某年(考虑闰年)的某个月份有几天的程序。 

3、水仙花数是指其个位、十位和百位上三个数的立方之和等于这个数本身。通过循环,判断100-999之间所有的数字,符合水仙花数条件的数字。

4、已知 XYZ + YZZ = 532,其中X、Y和Z为数字,编程求出X、Y和Z的值。 

5、编程实现“百钱买百鸡”问题。母鸡5分钱一只,公鸡三分钱一只,小鸡一分钱三只,现在有百钱欲买百鸡,有多少种买法?程序分别用三种方法来写

6、一个整数的各位数字之和能被9整除,则该数也能被9整除。验证这个定理的正确性。(暴力美学证明并不难,但优化会上瘾)

7、有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问2年后的兔子总数为多少?(请用递归编程实现)


代码文件在资源~

1、用while循环语句,计算1--2000之间的所有3的倍数之和。

【实验具体内容】

(1)实验流程图(非必须,根据实际要求来定,算法题建议画流程图):

(2)实验源代码(粘贴源代码):

public class SumofMultiples {
	public static void main(String[] args) {
        int sum = 0; // 用于存储总和
        int i = 1; 

        while (i<= 2000) { // 循环条件
            if (i % 3 == 0) { // 检查是否是3的倍数
                sum += i; // 累加到总和
            }
            i++; // 增加计数器
        }

        System.out.println("1到2000之间所有3的倍数之和为: " + sum);
    }
}

(3)实验代码、过程、相应结果(截图)并对实验进行说明和分析:

①新建Java Project。添加class,命名为SumofMultiples 。

②输入代码,ctrl+F11,控制台显示结果如下。

2、Scanner类是java.util包中的一个常用于控制台的输入的类,当需要使用控制台输入时,可调用该类完成程序交互,利用Scanner类和switch语句实现输入某年某月,判断某年(考虑闰年)的某个月份有几天的程序。 

【实验具体内容】

(1)实验流程图(非必须,根据实际要求来定,算法题建议画流程图):

(2)实验源代码(粘贴源代码):

import java.util.Scanner;

public class JudgeDayNumber {
	public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        //使用 System.in 作为参数, Scanner 从标准输入(通常是键盘)读取数据。
        System.out.print("请输入年份:");
        int year = scanner.nextInt();//// 读取一个整数
        System.out.print("请输入月份(1-12):");
        int month = scanner.nextInt();
        scanner.close();//调用close() 方法来关闭 Scanner,释放与之关联的资源

        // 判断闰年
        boolean isLeapYear = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);

        int days;
        switch (month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                days = 31;
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                days = 30;
                break;
            case 2:
                // 闰年2月为29天,否则为28天
                days = isLeapYear ? 29 : 28;
                break;
            default:
                System.out.println("输入的月份不正确!");
                return;
        }

        System.out.println(year + "年" + month + "月有" + days + "天。");
    }
}

(3)实验代码、过程、相应结果(截图)并对实验进行说明和分析:

①新建Java Project。添加class,命名为JudgeDayNumber 。

②输入代码,ctrl+F11,控制台显示结果如下。输入年份、月份,回车得到结果。

3、水仙花数是指其个位、十位和百位上三个数的立方之和等于这个数本身。通过循环,判断100-999之间所有的数字,符合水仙花数条件的数字。

(例如:1^3 + 5^3 + 3^3 = 153) 

【实验具体内容】

(1)实验流程图(非必须,根据实际要求来定,算法题建议画流程图)略

(2)实验源代码(粘贴源代码):

public class NarcissisticNumber {
	 public static void main(String[] args) {
	        // 遍历100到999之间的所有数
	        for (int i = 100; i < 1000; i++) {
	            int hundreds = i / 100; // 百位
	            int tens = (i % 100) / 10; // 十位
	            int ones = i % 10; // 个位

	            // 计算立方和
	            int sum = (int) (Math.pow(hundreds, 3) + Math.pow(tens, 3) + Math.pow(ones, 3));
	            //Math.pow(x, y) 会返回 x 的 y 次幂,double 类型
	            
	            // 判断立方和是否等于原数
	            if (sum == i) {
	                System.out.println(i + " 是水仙花数");
	            }
	        }
	    }
	}

(3)实验代码、过程、相应结果(截图)并对实验进行说明和分析:

①新建Java Project。添加class,命名为NarcissisticNumber 。

②输入代码,ctrl+F11,控制台显示结果如下。

4、已知 XYZ + YZZ = 532,其中X、Y和Z为数字,编程求出X、Y和Z的值。 

【实验具体内容】

(1)实验流程图(非必须,根据实际要求来定,算法题建议画流程图):略

(2)实验源代码(粘贴源代码):

public class SolveEquation {
	public static void main(String[] args) {
		for (int X=1; X< 10; X++) {
			for (int Y=1; Y< 10; Y++) {
				for (int Z=0; Z< 10; Z++) {
					if((100*X+10*Y+Z+100*Y+10*Z+Z)==532) {
					 System.out.println("X=" + X + ", Y=" + Y + ", Z=" + Z);
					}
				}
			}
		}
	}
}

(3)实验代码、过程、相应结果(截图)并对实验进行说明和分析:

①新建Java Project。添加class,命名为SolveEquation。

②输入代码,ctrl+F11,控制台显示结果如下。

5、编程实现“百钱买百鸡”问题。母鸡5分钱一只,公鸡三分钱一只,小鸡一分钱三只,现在有百钱欲买百鸡,有多少种买法?程序分别用三种方法来写

第一方法是程序中有三层的循环,这个效率最低,第二方法是程序采用两层循环实现,第三方法是程序采用一层循环实现。此题来理解程序效率

【实验具体内容】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值