50道JAVA基础编程练习题
【程序1】
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... public class Prog1{ } 【程序2】
题目:判断101-200之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 public class Prog2{ public static void main(String[] args){ int m = 1; int n = 1000; int count = 0; //统计素数个数 for(int i=m;i } } //判断素数 private static boolean isPrime(int n){ } boolean flag = true; if(n==1) flag = false; else{ } } return flag; for(int i=2;i<=Math.sqrt(n);i++){ if((n%i)==0 || n==1){ } else flag = true; flag = false; break; 【程序3】 题目:打印出所有的\水仙花数\,所谓\水仙花数\是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个\水仙花数\,因为153=1的三次方+5的三次方+3的三次方。 程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 public class Prog3{ public static void main(String[] args){ } //判断水仙花数 private static boolean isLotus(int lotus){ int m = 0; int n = lotus; int sum = 0; for(int i=100;i<1000;i++){ } System.out.println(); if(isLotus(i)) System.out.print(i+\ } m = n/100; n -= m*100; sum = m*m*m; m = n/10; n -= m*10; sum += m*m*m + n*n*n; if(sum==lotus) return true; else } return false; 【程序4】 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。 (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 public class Prog4{ public static void main(String[] args){ } private static void decompose(int n){ System.out.print(n+\for(int i=2;i } } 【程序5】 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 程序分析:(a>b)?a:b这是条件运算符的基本例子。 public class Prog5{ } 【程序6】 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法。 public class Prog6{ public static void main(String[] args){ int m,n; try{ m = Integer.parseInt(args[0]); n = Integer.parseInt(args[1]); public static void main(String[] args){ } //成绩等级计算 private static void grade(int n){ } if(n>100 || n<0) System.out.println(\输入无效\else{ String str = (n>=90)?\分,属于A等\分,属于B等\分,属于C等\ System.out.println(n+str); } int n = -1; try{ } grade(n); n = Integer.parseInt(args[0]); System.out.println(\请输入成绩\return; }catch(ArrayIndexOutOfBoundsException e){ }catch(ArrayIndexOutOfBoundsException e){ } System.out.println(\输入有误\return; } } max_min(m,n); //求最大公约数和最小公倍数 private static void max_min(int m, int n){ } int temp = 1; int yshu = 1; int bshu = m*n; if(n 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 程序分析:利用while语句,条件为输入的字符不为'\\n'. import java.util.Scanner; public class Prog7_1{ public static void main(String[] args){ } //统计输入的字符数 System.out.print(\请输入一串字符:\Scanner scan = new Scanner(System.in); String str = scan.nextLine();//将一行字符转化为字符串 scan.close(); count(str);