importnew java编程题_50道经典的JAVA编程题 (1-5)

后天java考试,现在闲着也是闲着,来做做java题吧。

前不久在网上看见了50道java算法编程题,感觉还不错,记得大一学C语言的时候做过一些,现在用java来回顾下吧,也算应付考试吧。

代码要是有啥不完美的地方还请各位积极指出啊,小的还是菜鸟啦,出错难免的哦~~~

暂时一篇帖子放5道吧,代码比较占地方,等全部做完了发一个目录吧

【程序1】 TestRabbit.java

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....

package test50;

/**

* @author VellBibi

*题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的总兔子对数为多少?

*1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21...

*/

public class TestRabbit {

/**

* @param m 总月数

* @return 这月兔子对数

*/

public static int sumRabbitNumber(int m){

int n = 1;//第0个月对数

int e = 0;//第0个月对数

int cup = 0;

for(int i=1; i

cup = n;

n = e + n;

e = cup;

}

return n;

}

public static void main(String[] args) {

for(int i=1; i<=10; i++){

System.out.print(sumRabbitNumber(i)+",");

}

}

}

2724b37982f1c86be838c01cde98ab42.png

【程序2】 FindPrimeNumber.java

题目:判断101-200之间有多少个素数,并输出所有素数。

1.程序分析:判断素数的方法:用一个数分别去除2~sqrt(n)或者2~n/2,常用2~n/2,因为一个数的一半的平方大于其本身是从5开始的,解方程:n/2的平方>n .如果能被整除,

则表明此数不是素数,反之是素数。

package test50;

/**

* @author VellBibi

*题目:判断101-200之间有多少个素数,并输出所有素数。

*1.程序分析:判断素数的方法:用一个数分别去除2~sqrt(n)或者2~n/2,常用2~n/2,

*因为一个数的一半的平方大于其本身是从5开始的,解方程:n/2的平方>n .如果能被整除,

*则表明此数不是素数,反之是素数。

*/

public class FindPrimeNumber {

/**

* 判断n是不是质数

* @param n

* @return

*/

public static boolean isPrimeNumber(int n){

if(n == 2) return true;

for(int i=2; i<=n/2; i++){

if(n % i == 0) return false;

}

return true;

}

public static void main(String[] args) {

int n = 0;

for(int i=101; i<=200; i++){

if(isPrimeNumber(i)){

n++;

System.out.print(i + ",");

}

}

System.out.println("\n101-200之间有"+n+"个素数");

}

}

46f4b366071c2071e782865a53512286.png

【程序3】FindDaffodilNumber.java

题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:

153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

package test50;

/**

* @author VellBibi

*题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:

*153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

*1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

*/

public class FindDaffodilNumber {

public static boolean isDaffodNumber(int n){

char[] ch = String.valueOf(n).toCharArray();

int cup = 0;

for(int i=0; i

cup = cup + (int)Math.pow(Integer.parseInt(String.valueOf(ch[i])), 3) ;

}

return (cup == n);

}

public static void main(String[] args) {

for(int i=100; i<1000; i++){

if(isDaffodNumber(i)){

System.out.print(i + ",");

}

}

}

}

71b266afecdb4d9d3ec3a6f9b2fb0833.png

【程序4】Explode.java

题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

(1)运用两层循环。

(2)外循环得到2~n之间的所有质数,内循环将n循环除以质数,知道不能整除。

(3)要是内循环n等于1了就说明n被完全整除了。

package test50;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

/**

* @author VellBibi

* 【程序4】Explode.java

*题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

*程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

*(1)运用两层循环

*(2)外循环得到2~n之间的所有质数,内循环将n循环除以质数,知道不能整除

*(3)要是内循环n等于1了就说明n被完全整除了

*/

public class Explode {

/**

* 判断n是不是质数

* @param n

* @return

*/

public static boolean isPrimeNumber(int n){

if(n == 2) return true;

for(int i=2; i<=n/2; i++){

if(n % i == 0) return false;

}

return true;

}

public static void main(String[] args) {

BufferedReader buffer = new BufferedReader(new InputStreamReader(

System.in));

int N = 0;

try {

N = Integer.parseInt(buffer.readLine());

} catch (IOException e) {

e.printStackTrace();

}

System.out.print(N+"=");

for(int i=2; i

if(!isPrimeNumber(i)) continue;

while(N%i == 0){

System.out.print(i);

N = N/i;

if(N != 1) System.out.print("*");

else break;

}

}

if(N != 1) System.out.println(N);

}

}

9cb7b2e7c323c440439c189420a1c820.png

【程序5】 ConditionOperator.java

题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

1.程序分析:(a>b)?a:b这是条件运算符的基本例子。

package test50;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

/**

* @author VellBibi

*【程序5】 ConditionOperator.java

*题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

*1.程序分析:(a>b)?a:b这是条件运算符的基本例子。

*/

public class ConditionOperator {

public static void main(String[] args) {

BufferedReader buffer = new BufferedReader(new InputStreamReader(

System.in));

int N = 0;

try {

N = Integer.parseInt(buffer.readLine());

} catch (IOException e) {

e.printStackTrace();

}

System.out.println("学习成绩为:" + ((N < 60) ? "C" : (N < 90) ? "B" : "A"));

}

}

671cf41840e2bc9cf3cf38a965447d82.pngd01252e420096fd103fea22751742303.pngd8d073eaeea10aaa9e5e0011d6a6666a.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值