java经典试题-答案
### Java经典试题解析 #### 程序1:兔子繁殖问题 **题目描述:** 假设有一对兔子,从出生后第3个月起每个月都生一对兔子;小兔子长到第三个月后每个月又生一对兔子。假设兔子都不死,问每个月的兔子总数为多少? **程序分析:** 本题涉及一个经典的数列——斐波那契数列(Fibonacci sequence),该数列的定义是:F(1)=1,F(2)=1,之后每一项都是前两项的和,即F(n)=F(n-1)+F(n-2)。通过循环计算可以得出每个月的兔子数量。 **代码解析:** ```java import java.util.Scanner; public class Rabbit { public static void main(String[] args) { int number = 1, month; int tmp1 = 1, tmp2 = 1; Scanner sc = new Scanner(System.in); System.out.println("请输入第几个月:"); month = sc.nextInt(); for (int i = 1; i <= month; i++) { if (i <= 2) number = 1; else { number = tmp1 + tmp2; // 前两个月兔子数之和 tmp2 = tmp1; // 前第二个月 tmp1 = number; // 前一个月 } System.out.println("第" + i + "个月的兔子数是:" + number); } } } ``` #### 程序2:素数判断与统计 **题目描述:** 判断101-200之间有多少个素数,并输出所有素数。 **程序分析:** 素数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。判断一个数n是否为素数可以通过尝试从2到√n的范围内的所有数来判断是否能整除n。 **代码解析:** ```java public class PrimeNumbers { public static void main(String[] args) { int sum = 0; for (int i = 101; i <= 200; i++) { boolean isPrime = true; for (int j = 2; j <= Math.sqrt(i); j++) { if (i % j == 0) { isPrime = false; break; } } if (isPrime) { sum++; System.out.println(i); } } System.out.println("101-200之间有:" + sum + "个素数"); } } ``` #### 程序3:水仙花数打印 **题目描述:** 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1³+5³+3³。 **程序分析:** 利用for循环控制100-999个数,每个数分解出个位、十位、百位,然后计算每位数字的立方和,与原数比较。 **代码解析:** ```java public class NarcissisticNumber { public static void main(String[] args) { int count = 0; for (int i = 100; i < 1000; i++) { int hundred = i / 100; // 求百位数 int ten = (i / 10) % 10; // 求十位数 int one = i % 10; // 求个位数 int sum = hundred * hundred * hundred + ten * ten * ten + one * one * one; if (i == sum) { System.out.println(i); count++; } } System.out.println("符合条件的水仙花数为:" + count); } } ``` #### 程序4:正整数分解质因数 **题目描述:** 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 **程序分析:** 对于任意一个正整数n,从最小的质数2开始尝试分解,如果n能够被某个质数k整除,则打印出k,并用n除以k的商作为新的n,重复上述过程直到n为1为止。 **代码解析:** ```java import java.util.Scanner; public class PrimeFactors { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a, b; int j = 0; System.out.println("请输入一个整数"); a = sc.nextInt(); b = a; // 保存原数 int[] factors = new int[10]; // 用来存质因数 for (; a != 1;) { // 求质因数 for (int i = 2; a > 1; i++) { if (a % i == 0) { factors[j] = i; j++; a /= i; } else { i++; } } } System.out.print(b + "="); for (int i = 0; i < j; i++) { System.out.print(factors[i]); if (i < j - 1) { // 判断是否是最后一位质因数 System.out.print("*"); } } System.out.println(); } } ``` 以上就是从给定的文件中提取出的相关知识点,涵盖了斐波那契数列、素数判断、水仙花数以及正整数分解质因数等Java编程基础概念。这些知识点不仅有助于初学者理解基本算法的设计思路,也是进一步学习更复杂算法的基础。
剩余29页未读,继续阅读
- zmjzmj01232012-07-0650题编程题,附有答案
- wangy@@2012-10-16试题很经典,初学者可以下载学习
- mvp200620102012-06-18题目挺多的,不过没有代表性,重点不明确,有点滥竽充数之嫌
- 粉丝: 0
- 资源: 11
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助