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;
}
}
来源:https://www.cnblogs.com/lkwcrystal/p/12551672.html