目录
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);
}
}