实验题目:
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);
}
}
实验运行结果:
实验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;
}
}
}
实验运行结果:
实验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);
}
}
}
}
实验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);
}
}
}
}
}
实验运行结果:
实验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 + "只小鸡");
}
}
}
实验运行结果:
实验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的整数中不存在不符合该定理的数") ;
}
}
}
实验运行结果:
实验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);
}
}
实验运行结果: