java试题山东大学_Java第三次实验作业(山东大学)

这篇博客包含了七个Java编程实验题目,包括使用while循环计算3的倍数之和,利用switch判断月份天数,查找水仙花数,解决数学方程,实现百钱买百鸡问题,验证整数被9整除的定理,以及递归计算兔子问题。每个实验都提供了源代码和运行结果。
摘要由CSDN通过智能技术生成

实验题目:

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

2、利用switch语句实现判断某年的某个月份有几天的程序。

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

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

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

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

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

6、一个整数的各位数字之和能被9整除,则该数也能被9整除。验证这个定理的正确性。

注:验证从0–2147483647的整数中是否存在不符合该定理的数,若不存在即验证通过,验证时间可能需要2-4分钟,请耐心等待,但如果时间太长,务必思考为什么…

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

实验1

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

实验源程序:

package Three;

public class ThreeMultiples //

{

public static void main(String[] args) {

int i=1,sum=0;

while(i<=200) {

//除以3余数为零则是3的倍数

if(i%3==0)

sum+=i;

i++;

}

System.out.print("1-200内的3的倍数的和为:"+sum);

}

}

实验运行结果:

8297a555161a5f276b54711eb842bfc9.png

实验2:

利用switch语句实现判断某年的某个月份有几天的程序。

实验源代码:

package Three;

//本次需要用到Scanner.

import java.util.Scanner;

public class SwitchDay {

public static void main(String[] args) {

System.out.println("输入年份:");

Scanner scanyear = new Scanner(System.in);

int year = scanyear.nextInt();

Scanner scanmonth = new Scanner(System.in);

System.out.print("输入月份:");

int month = scanmonth.nextInt();

//判断闰年

if((year%4==0&&year%100!=0)||year%400==0) {

switch(month) {

case 1: System.out.println("该月份有31天");break;

case 2: System.out.println("该月份有29天");break;

case 3: System.out.println("该月份有31天");break;

case 4: System.out.println("该月份有30天");break;

case 5: System.out.println("该月份有31天");break;

case 6: System.out.println("该月份有30天");break;

case 7: System.out.println("该月份有31天");break;

case 8: System.out.println("该月份有31天");break;

case 9: System.out.println("该月份有30天");break;

case 10: System.out.println("该月份有31天");break;

case 11: System.out.println("该月份有30天");break;

case 12: System.out.println("该月份有31天");break;

}

}

//非闰年的情况

else

switch(month) {

case 1: System.out.println("该月份有31天");break;

case 2: System.out.println("该月份有28天");break;

case 3: System.out.println("该月份有31天");break;

case 4: System.out.println("该月份有30天");break;

case 5: System.out.println("该月份有31天");break;

case 6: System.out.println("该月份有30天");break;

case 7: System.out.println("该月份有31天");break;

case 8: System.out.println("该月份有31天");break;

case 9: System.out.println("该月份有30天");break;

case 10: System.out.println("该月份有31天");break;

case 11: System.out.println("该月份有30天");break;

case 12: System.out.println("该月份有31天");break;

}

}

}

实验运行结果:

5e66fc5de658b003407948eac3b13cc4.png

实验3

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

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

实验源代码:

package Three;

public class NarcissisticNumber {

public static void main(String[] args) {

int hundred, ten, one, sum;

for (int i = 100; i < 1000; i++) {

hundred = (i / 100);

ten = (i - hundred * 100) / 10;

one = i - hundred * 100 - ten * 10;

sum = (hundred * hundred * hundred) + (ten * ten * ten) + (one * one * one);

if (sum == i) {

System.out.println(i);

}

}

}

}

b79fc5170fe7659f6330f670251cd670.png

实验4

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

实验源代码:

package Three;

public class Equation {

public static void main(String[] args) {

int X,Y,Z;

//X从开始遍历,因为X有百位,下面的Y同理

for(X=1;X<10;X++) {

//Y从开始遍历

for(Y=1;Y<10;Y++) {

//Z从开始遍历,他没有百位

for(Z=0;Z<10;Z++) {

//满足条件就输出结果

if(X*100+Y*10+Z+Y*100+Z*10+Z==532)

System.out.println("X = "+X+" Y = "+Y+" Z = "+Z);

}

}

}

}

}

实验运行结果:

253156d367ba3bee89d1b416ab847b94.png

实验5

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

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

实验源代码:

三层循环

package Three;

public class MoneyChickenThree {

public static void main(String[] args) {

//公鸡数量Male,母鸡数量Female,小鸡数量Chick

int Male, Female, Chick=0;

//公鸡数量范围

for (Male = 0; Male <= 100; Male++) {

//母鸡数量范围

for (Female = 0; Female <= 100; Female++) {

//消极数量范围

for (Chick = 0; Chick <= 100; Chick++) {

//约束条件

if (Male + Female + Chick == 100) {

//约束条件

if (5 * Female + 3 * Male + Chick / 3 == 100 && Chick % 3 == 0)

System.out.println("可购买" + Male + "只公鸡 " + Female + "只母鸡" + Chick + "只小鸡");

}

}

}

}

}

}

二层循环

package Three;

public class MoneyChickenTwo {

public static void main(String[] args) {

//公鸡数量Male,母鸡数量Female,小鸡数量Chick

int Male,Female,Chick=0;

//母鸡数量范围

for(Female=0;Female<=100/5;Female++) {

//公鸡数量范围

for(Male=0;Male<=100/3;Male++) {

//小鸡数量

Chick=100-Male-Female;

//约束条件

if(5*Female+3*Male+Chick/3==100&&Chick%3==0)

System.out.println("可购买"+Male+"只公鸡 "+Female+"只母鸡"+Chick+"只小鸡");

}

}

}

}

一层循环

package Three;

public class MoneyChickenOne {

public static void main(String[] agrs) {

int Male,Female,Chick=0;

for(Female=0;Female<=100/5;Female++) {

Male = (100 - 7 * Female) / 4;

Chick = (300 + 3 * Female) / 4;

if((Chick%3==0)&&Male>0&&(Male+Female+Chick==100)&&(5*Female+3*Male+Chick/3==100))

System.out.println("可购买" + Male + "只公鸡" + Female + "只母鸡" + Chick + "只小鸡");

}

}

}

实验运行结果:

5cb5c36ae61c71eeba47fe45dff2b5d7.png

实验6:

一个整数的各位数字之和能被9整除,则该数也能被9整除。验证这个定理的正确性。

注:验证从0–2147483647的整数中是否存在不符合该定理的数,若不存在即验证通过,验证时间可能需要2-4分钟,请耐心等待,但如果时间太长,务必思考为什么…

实验源程序:

package Three;

public class Verification {

public static void main(String[] args) {

//定义长整形变量

long i=0,j=0;

for(i=0;i<=2147483647;i++) {

//每循环一个数,j置零

j=0;

long k=i;

while(k > 0) {

//累加各位数

j += k % 10;

//去掉最低位

k = k / 10;

}

//验证整数各位数字之和能被9整除

if(j % 9==0) {

//验证这个整数本身能否被9整除

if(i % 9!=0) {

System.out.println(i+"的各位数字之和能被9整除,但该数不能被9整除");

}

}

if(i>=2147483647)

System.out.println("0--2147483647的整数中不存在不符合该定理的数") ;

}

}

}

实验运行结果:

c9817fbf7450198ca94612edfadd850f.png

实验7:

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

实验源代码:

package Three;

public class RabbitNumber {

public static void main(String[] args) {

//时间24个月

int i = 24;

//调用sum输出兔子数目

System.out.println("2年后的兔子总数为" + sum(i)+"对");

}

//静态方法,方法名叫sum,需要传递一个参数为int,并且返回值也是一个int

public static int sum(int month) {

if (month == 1 || month == 2)

return 1;

else

return sum(month - 1) + sum(month - 2);

}

}

实验运行结果:

bace8aff2ca2663100988c9dc605ba85.png

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值