根据提供的信息,我们可以总结并详细解释以下几个Java编程知识点: ### 1. 菲波那契数列(程序1) 菲波那契数列是一个经典的数学概念,在编程中经常用来练习循环结构。在这个例子中,代码实现了计算前24个月内的兔子对数。 #### 代码解析 ```java public class lianxi01 { public static void main(String[] args) { System.out.println("第1个月的兔子对数:1"); System.out.println("第2个月的兔子对数:1"); int f1 = 1, f2 = 1, f, M = 24; for (int i = 3; i <= M; i++) { f = f2; f2 = f1 + f2; f1 = f; System.out.println("第" + i + "个月的兔子对数:" + f2); } } } ``` - **初始化**: `f1` 和 `f2` 分别代表前两个月的兔子对数,初始值均为1。 - **循环**: 从第三个月开始计算,每次迭代时更新 `f1` 和 `f2` 的值。 - **输出**: 每次循环打印当前月的兔子对数。 ### 2. 素数检测与统计(程序2) 素数是指只能被1和自身整除的大于1的自然数。本例通过双重循环来判断101至200之间的所有素数,并统计素数的数量。 #### 代码解析 ```java public class lianxi02 { public static void main(String[] args) { int count = 0; for (int i = 101; i < 200; i += 2) { // 只检查奇数 boolean b = true; for (int j = 2; j <= Math.sqrt(i); j++) { if (i % j == 0) { b = false; break; } } if (b) { count++; System.out.println(i); } } System.out.println("素数个数是:" + count); } } ``` - **外层循环**: 遍历101至200的所有奇数。 - **内层循环**: 对每个数 `i` 检查是否能被2到 `Math.sqrt(i)` 之间的任何数整除。 - **判断素数**: 如果没有找到能整除 `i` 的数,则认为 `i` 是素数。 - **计数与输出**: 统计素数数量并打印所有素数。 ### 3. “水仙花数”检测(程序3) “水仙花数”指的是一个三位数,它的各个位上的数字的立方和等于它本身。例如153是一个水仙花数,因为153 = 1^3 + 5^3 + 3^3。 #### 代码解析 ```java public class lianxi03 { public static void main(String[] args) { for (int m = 101; m < 1000; m++) { int b3 = m / 100; int b2 = m % 100 / 10; int b1 = m % 10; if ((b3 * b3 * b3 + b2 * b2 * b2 + b1 * b1 * b1) == m) { System.out.println(m + "是一个水仙花数"); } } } } ``` - **循环**: 遍历101至1000的所有三位数。 - **位数分离**: 通过取模和除法操作将三位数的每一位数字提取出来。 - **计算**: 计算每位数字的立方和。 - **判断**: 如果立方和等于原数,则输出该数是一个水仙花数。 ### 4. 正整数分解质因数(程序4) 将一个正整数分解为其所有质因数的乘积。例如输入90,输出应为90 = 2 * 3 * 3 * 5。 #### 代码解析 ```java import java.util.Scanner; public class lianxi04 { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.print("请键入一个正整数:"); int n = s.nextInt(); int k = 2; System.out.print(n + "="); while (k <= n) { if (k == n) { System.out.println(n); break; } else if (n % k == 0) { System.out.print(k + "*"); n = n / k; } else { k++; } } } } ``` - **用户输入**: 获取用户输入的正整数。 - **循环**: 从2开始检查每个数是否为输入数的因子。 - **分解**: 如果找到因子,则输出因子,并用输入数除以该因子得到新的数继续分解。 - **输出**: 直到无法再分解为止,输出最终结果。 ### 5. 成绩等级划分(程序5) 根据输入的成绩判断并输出对应的等级:90分及以上为A级,60分至89分为B级,60分以下为C级。 #### 代码解析 ```java import java.util.Scanner; public class lianxi05 { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.print("请输入一个成绩:"); int x = s.nextInt(); char grade = x >= 90 ? 'A' : (x >= 60 ? 'B' : 'C'); System.out.println("等级为:" + grade); } } ``` - **用户输入**: 获取用户输入的成绩。 - **条件运算符**: 使用条件运算符(三元运算符)判断成绩所在的范围,并赋值给 `grade`。 - **输出**: 输出对应的成绩等级。 ### 6. 最大公约数与最小公倍数(程序6) 输入两个正整数m和n,计算它们的最大公约数和最小公倍数。使用辗转相除法来计算最大公约数,最小公倍数则可以通过两数之积除以最大公约数获得。 #### 代码解析 ```java import java.util.Scanner; public class lianxi06 { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.print("请输入两个正整数m和n(空格分隔):"); int m = s.nextInt(); int n = s.nextInt(); int gcd = gcd(m, n); int lcm = (m * n) / gcd; System.out.println("最大公约数为:" + gcd); System.out.println("最小公倍数为:" + lcm); } public static int gcd(int a, int b) { while (b != 0) { int temp = b; b = a % b; a = temp; } return a; } } ``` - **用户输入**: 获取用户输入的两个正整数。 - **最大公约数**: 使用辗转相除法递归地计算最大公约数。 - **最小公倍数**: 通过两数之积除以最大公约数来计算最小公倍数。 - **输出**: 输出最大公约数和最小公倍数。 以上就是这些示例程序的主要知识点总结及详细解释。这些示例不仅涵盖了基础的循环、条件判断等语法,还涉及到了算法和数据处理等方面的内容。
剩余31页未读,继续阅读
- 粉丝: 7
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 30KW储能PCS逆变器双向变流器设计方案资料,
- 基于Vue、Element UI的ruoyi-vue-activiti工作流前后端分离设计源码
- 基于CarSim和Matlab的汽车ABS模糊控制联合仿真研究 内容:基于Carsim和Simulink的联合仿真 为避免车辆
- comsol电弧模拟 等离子体
- 基于Python3和Flask框架的简易博客设计源码
- 基于matlab的交流电机动态方程,用于交流电机动态分析 输入电机的额定功率(kW)、电机的额定转速(r min)、转子外径(
- 基于Java的库存管理后端系统设计源码
- 基于Python及多语言支持的学科数据可视化weeklog设计源码
- 基于Python的APIJSON后端设计源码优化版本
- 基于Java语言的JavaEE初阶开发设计与源码分享