1.【程序1】
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一 对兔子,假如兔子都不死,问每个月的兔子总数为多少?
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
思路: 其实就是斐波拉契数列:n=1和n=2 结果 都是 m =1
n=3 开始 结果 m = (n-1)+(n-2)
方法: 使用递归:
package com.niit.homework1; import java.util.Scanner; /** * @author: Annie * @date:2016年5月20日 * @description:【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一 对兔子,假如兔子都不死,问每个月的兔子总数为多少? */ public class BirthRabbit { public static void main(String[] args) { String choice; Scanner in = new Scanner (System.in); BirthRabbit fs = new BirthRabbit(); do{ System.out.println("请输入查看的月份:"); int num =in.nextInt(); System.out.println("第"+num+"月有"+fs.fibonacciSequence(num)+"对兔子"); System.out.println("是否要继续(Y/N)"); choice = in.next(); }while("Y".equals(choice)); } public int fibonacciSequence(int num){ if(num == 1 || num ==2){ return 1; }else{ return fibonacciSequence(num-1)+fibonacciSequence(num-2); } } }
2.【程序2】
题目:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
则表明此数不是素数,反之是素数。
/** * */ package com.niit.homework1; /** * @author: Annie * @date:2016年5月23日 * @description:【程序2】 题目:判断101-200之间有多少个素数,并输出所有素数。 */ public class PrimeTest { public static void main(String[] args) { for (int i = 101; i <=200; i++) { if(isPrime(i)){ System.out.print(i+" "); } } } /** * @param args * 判断是否为素数的方法 */ public static boolean isPrime(int num){ for (int i = 2; i < Math.sqrt(num); i++) { if(num % i ==0){ return false; } } return true; } }
3.
【程序3】
题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:
153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
package com.niit.homework1; /** * @author: Annie * @date:2016年5月20日 * @description:【程序3】打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。 */ public class NarcissisticNumber { public static void main(String[] args) { NarcissisticNumber n = new NarcissisticNumber(); n.printNarcissistic(); } public void printNarcissistic(){ int x,y,z,n; System.out.println("100-999中的水仙花数有:"); for (int i = 100; i <= 999; i++) { //取百位(z代表百位) z = i/100; //取十位(y代表十位) n = i%100; y = n/10; //取个位(x代表个位) x = n %10; int number = z*z*z+y*y*y+x*x*x; if(i == number){ System.out.println(i); } } } }
4.
【程序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的值,重复执行第一步。
/** * */ package com.niit.homework1; import java.util.Scanner; /** * @author: Annie * @date:2016年5月23日 * @description:【程序4】 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 */ public class ResolvePrimeFactor { /** * @param args */ public static void main(String[] args) { Scanner scanner = new Scanner(System.in ); System.out.println("请输入一个正整数:"); int n=scanner.nextInt(); System.out.print(n+"="); Resolve(n); } static void Resolve(int n){ for(int i=2;i<=n/2;i++){ while(n%i==0){ System.out.print(i+"*"); n /= i; } } System.out.print(n); } }
5.
【程序5】
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下
的用C表示。
1.程序分析:(a>b)?a:b这是条件运算符的基本例子。
package com.niit.homework1; import java.util.Scanner; /** * @author: Annie * @date:2016年5月20日 * @description:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下 的用C表示。 */ public class IfElseTest { public static void main(String[] args) { Scanner in = new Scanner(System.in); boolean flag = true; while(flag){ System.out.println("请输入学生的成绩:"); double score = in.nextDouble(); pintScore(score); System.out.println("是否继续输入:( Y/N)"); String n = in.next(); if("N".equals(n)){ flag = false; } } } public static void pintScore(double score) { if(score >= 90){ System.out.println("该学生的成绩是:A"); }else { //代表的是如果score>59,则返回的结果是score,否则返回59; double result =score >59? score:59; if(score== result){ System.out.println("该学生的成绩是:B"); }else if(result == 59){ System.out.println("该学生的成绩是:c"); } } } }