java经典50题

南笙酒味 提交于 2020-03-23 14:17:36

JAVA基础编程练习50题

本文对50道经典的java程序题进行详细解说,对于初学者可以跳过一些逻辑性太强的题目,比如第一题用到了方法的递归,初学者可能不理解,最好先看那些有if、for、while可以简单解决的程序题!但是,对于比较深入学习过的同学,还是希望可以一口气就看完,这是比较全面思维锻炼!

【程序1】

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?

程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....

          做这种题目,最好的做法就是找出规律,跟高中的数列一样

          本题有:a[n]=a[n-1]+a[n-1],而第一第二项都知道了,后面的值也可以求得

public class Rabbit {
public static void main(String[] args) {
System.out.println("请输入当前月是:");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
System.out.println("第"+n+"个月,共有兔子数是"+f(n));
sc.close();
}

private static int f(int n) {
if(n==1 || n==2)
return 1;
else
return f(n-1)+f(n-2);
}
}

 

【程序2】

题目:判断101-200之间有多少个素数,并输出所有素数。

程序分析:

    * 素数是:只能被1或本身整除的数,如:3,5,7,11,131... 

      *判断素数的方法:用一个数分别去除2到sqrt(这个数),

      *其实用这个数分别去除2到他本身少1的数也可以,但是运算时间增加了

      *如果能被整除,则表明此数不是素数,反之是素数。

public class 素数1 {
public static void main(String[] args) {
int sum=0;
for(int i=101;i<=200;i++){
if(f(i)){
System.out.print(i+" ");
sum++;
if(sum % 10 ==0){//十个一行
System.out.println();
}
}
}
System.out.println("素数的总个数是"+sum);
}
private static boolean f(int i){
for(int j=2;j<=Math.sqrt(i);j++){
if(i%j==0){//能整除非素数
return false;
}
}
return true;
}
}

 

public class 素数2 {
public static void main(String[] args) {
int sum=0;
for(int i=101;i<=200;i++){
if(f(i)){
System.out.print("素数是"+i+" ");
sum++;
if(sum%10==0){
System.out.println();
}
}
}
System.out.println("素数个数总共是"+sum);
}
private static boolean f(int i){
for(int j=2;j<=i-1;j++){
if(i%j==0)
return false;
}
return true;
}
}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!