后天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<m; 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)+",");
        }
    }

}

【程序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+"个素数");
    }
}

【程序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<ch.length; 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 + ",");
            }
        }
    }

}

【程序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<N; 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);
    }

}

【程序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"));
    }

}

最新文章

  1. SharePoint中使用C#跳转页面的研究
  2. 单节点下多个Tomcat服务器并存的端口号配置
  3. hdu 5108 Alexandra and Prime Numbers
  4. python 出入任意多个参数
  5. Env:Gvim开发环境配置笔记--Windows篇
  6. 转载:看c++ primer 学习心得
  7. ModSecurity CRS笔记[转]
  8. 动态修改UINavigationBar的背景色
  9. 教你使用破解无线路由器笔记本password
  10. Spring的JDBC(非web程序)的简单例子
  11. hdu 5830 FFT + cdq分治
  12. kafka单机搭建,并测试api
  13. rcc时钟
  14. vscode mysql v0.3插件 连接不了
  15. js写三级联动
  16. 【OpenCV】访问Mat中的每个像素值
  17. octave基本指令2
  18. oci7编译报’olog’等未定义的引用问题
  19. L249 语法
  20. 使用 Spring 2.5 注释驱动的 IoC 功能(转)

热门文章

  1. python参考手册--第8章
  2. 【BZOJ 1038】 1038: [ZJOI2008]瞭望塔
  3. git 命令整理
  4. 深入理解JVM--JVM垃圾回收机制
  5. c++ 成员指针函数 实现委托----跨平台实现(复杂)
  6. 【转】linux下cvs配置
  7. 单独下载的Qt library则一般不带SSL(包括QT FAQ)
  8. 深入理解jvm
  9. JNDI和在tomcat中配置DBCP连接池 元数据的使用 DBUtils框架的使用 多表操作
  10. 史上最全面的FRM与CFA的区别对比分析,适合新人看