-
java编程题50道(1)
程序1
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
题目思路:
先推出几个月内兔子数量 1 1 2 3 5 8 13.。。。
可推出规律为 n = n-1+n-2
定义函数累计兔子数量,再通过主函数输出
package test; import java.util.Scanner; public class hello { public static int rabbit(int i) { if(i==1||i==2) {//兔子数量在前两个月没有变化 return 1; } else { return rabbit(i-1)+rabbit(i-2);//根据变化可知三个月后均为前两月相加 } } public static void main(String[] args) { Scanner in =new Scanner(System.in); int i =in.nextInt(); int a; a=rabbit(i); System.out.print("输出月份求该月兔子数量h"); System.out.print(i+"月共有"+a+"对兔子"); } }
程序2
题目:判断101-200之间有多少个素数,并输出所有素数。
题目思路:
以主函数确定范围并输出,再构造函数进行素数判断,
1 package test; 2 3 import java.util.Scanner; 4 5 public class hello { 6 public static boolean judge_prime(int x) {//先定义判断素数函数,注意定义函数返回类型! 7 for (int i=2;i<x;i++) {//判断函数方法可以任意改变 8 if(x%i==0) { 9 return false; 10 } 11 } 12 return true; 13 } 14 public static void main(String[] args) { 15 Scanner in =new Scanner(System.in); 16 System.out.println("请输入数字给出素数范围");//主函数中定义素数范围,通过运用函数进行判断 17 int a =in.nextInt(); 18 int b =in.nextInt(); 19 for (int i=a;i<=b;i++) { 20 if(judge_prime(i)) { 21 System.out.print(i+" ");//println则为隔行输出 22 } 23 } 24 } 25 26 }
程序3
题目:打印出所有的”水仙花数”,所谓”水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个”水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
题目思路:
与素数筛选相同,以主函数选择数字,通过构造函数判断,最后主函数输出
要注意通过整除取余来获得各个位数
1 package test; 2 3 import java.util.Scanner; 4 5 public class hello { 6 public static boolean daffodil(int i) { 7 int x=i/100;//通过求整取余获得各个位数上的数字 8 int y=(i/10)%10; 9 int z=i%10; 10 if (Math.pow(x, 3)+Math.pow(y, 3)+Math.pow(z, 3)==i) { 11 return true;//以此来判断水仙花数并返回主函数输出 12 } 13 return false; 14 } 15 public static void main(String[] args) { 16 Scanner in =new Scanner(System.in); 17 int sum=0; 18 for(int i=100;i<=999;i++)//通过for循环获得三位数 19 { 20 if(daffodil(i)) { 21 System.out.print(i+" "); 22 sum++;//统计个数 23 } 24 } 25 System.out.print("共有"+sum+"个水仙花数"); 26 } 27 28 }
程序4
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
题目思路:
先找到最低质数,不能相除时寻找下一个质数,当质数与正整数相同时已经除尽便直接输出
1 package test; 2 3 import java.util.Scanner; 4 5 public class hello { 6 7 public static void main(String[] args) { 8 System.out.print("输入分解数:"); 9 Scanner in =new Scanner(System.in); 10 int x =in.nextInt(); 11 System.out.print(x+"="); 12 for (int i=2;i<=x;i++ ) 13 { 14 while(x%i==0 && x!=i)//若使用for进行一次便会退出 15 { 16 x=x/i; 17 System.out.print(i+"*");//找到质因数输出 18 } 19 if (x==i) {//当不能再分解时便将他输出 20 System.out.print(i); 21 22 } 23 } 24 } 25 26 }
程序5
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
题目思路:
了解条件运算符的嵌套
例如:
1、max=(a>b)?a:b
就是将a和b二者中较大的一个赋给max。
2、min=(a<b)?a:b
就是将a和b二者中较小的一个赋给min。
1 package test; 2 3 import java.util.Scanner; 4 5 public class hello { 6 7 public static void main(String[] args) { 8 System.out.print("输入分数:"); 9 Scanner in =new Scanner(System.in); 10 int x =in.nextInt(); 11 String score=(x>90)?"A":(x>=60)?"b":"c";//判断成绩归类,因abc为字符,所以使用string 12 System.out.print("分数为"+score+"类"); 13 } 14 15 }
出处:https://www.cnblogs.com/ljjforever/p/14999518.html