题目一:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
package tzy.practice.firstWeek;
import java.util.Scanner;
/**
* 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
* 假如兔子都不死,问每个月的兔子总数为多少?
* 分析:1,1,2,3,5,8......
*/
//首先这是一个典型的斐波那契数列的问题
//这第一种方法是采用的是递归的方式,其实为了减少时间复杂度,最好采用迭代的方式
/*
public class Case_1 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入你想知道哪一月兔子的数量:");
int m = scan.nextInt();
System.out.println("第"+m+"月的数量为"+2*Case_1.function(m));
}
//定义一个计算兔子数目的方法
public static int function(int month){
int n = month;
if(n ==1 || n==2){
return 1;
}
return function(n-1)+ function(n-2);
}
}
*/
//方法二:迭代解决斐波那契数列
public class Case_1{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入你想知道哪一月兔子的数量:");
int m = scan.nextInt();
if(m == 1 || m == 2){
System.out.println("第"+ m + "月的兔子数量为2");
}else{
int i = 1;//赋值一月为1对兔子
int j = 1;//赋值二月为1对兔子
int f = 0;
for(int n=1;n<m;n++){
f = j;
j = i + j;
i = f;
}
System.out.println("第"+ m + "月的兔子数量为" + i*2);
}
}
}
输出结果:
请输入你想知道哪一月兔子的数量:
5
第5月的兔子数量为10
题目二:题目:判断101-200之间有多少个素数,并输出所有素数。
package tzy.practice.firstWeek;
/**
* 题目:判断101-200之间有多少个素数,并输出所有素数。
* 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),
* 如果能被整除, 则表明此数不是素数,反之是素数。
*/
public class Case_2 {
public static void main(String[] args) {
int sum = 0;//定义素数开始的个数为0
for(int i=101;i<=200;i++){
boolean flag = true;
for(int j=2;j<i;j++){
if(i%j == 0){
flag = false;
break;
}
}
if (flag){
sum+=1;
System.out.println("素数是"+i);
}
}
System.out.println("101-200之间有"+ sum + "个素数");
}
}
输出结果:
素数是101
素数是103
素数是107
素数是109
素数是113
素数是127
素数是131
素数是137
素数是139
素数是149
素数是151
素数是157
素数是163
素数是167
素数是173
素数是179
素数是181
素数是191
素数是193
素数是197
素数是199
101-200之间有21个素数
题目三:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。
package tzy.practice.firstWeek;
/**
* 打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,
* 其各位数字立方和等于该数本身。
* 例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。
*/
public class Case_3 {
private static String name;
public static void main(String[] args) {
int x,y,z;
for(int i=100;i<1000;i++){
x = i%10;//得到个位数字
y = i/10%10;//得到十位数字
z = i/10/10%10;//得到百位数字
if(x*x*x + y*y*y + z*z*z == i){
System.out.println(i);
}
}
}
}
输出结果:
153
370
371
407
题四:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
package tzy.practice.firstWeek;
import java.util.Scanner;
/**
* 题目:
* 学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
*/
public class Case_5 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入这个学生的成绩:");
int score = scan.nextInt();
if(score>= 90){
System.out.println("这个同学的成绩是A");
}else if(score >= 60 && score <=89){
System.out.println("这个同学的成绩是B");
}else{
System.out.println("这个同学的成绩是C");
}
}
}
欢迎大家如果有错误,给我指出一下了,谢谢。