您的位置:首页 > 编程语言 > Java开发

50道java基础编程(1~5)

2017-12-07 21:53 316 查看
【程序1】
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?

提示:给出月份  返回兔子对数

public
class
Rabbit {
    /*
     * 第一个月:1
     * 第二个月:1
     * 第三个月:2
     * 第四个月:3
     * 第五个月:5
     * ……
     * 由此可见兔子的对数形成一个数列,数列关系是:从第二项开始前两项之和等第三项
     * 递推公式:
     */
    public
static int
f(int month){
        if(month == 1 ||month == 2)return 1;
        returnf(month-1)+f(month-2);
    }
    public
static void
main(String[] args) {
        System.out.println(f(8));
    }
}

【程序2】
题目:判断101-200之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

 

public
class
Sushu {
    /*
     * 素数:只被1及其本身整除的数
     */
    public
static boolean
f(int num,int i){
        if(i < num)
        {
            if(num % Math.sqrt(i)== 0)
            {
                returnfalse;
            }
            else
            {
                returnf(num,i+1);
            }
        }
        else
        {
            return
true
;
        }
    }
    public
static void
main(String[] args) {
        int count = 0;
        int begin = 101;
        int end = 200;
        for(int i=begin; i<=end; i++)
            if(f(i,2))
            {
                System.out.print(i+"\t");
                count++;
                if(count % 10 ==0)
                    System.out.println();
            }
        System.out.println();
        System.out.println(begin+"~"+end+"共有:"+count+"个素数");
    }

【程序3】
题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

public
class
Shuixianhua {
    /**
     * 一个int型对10取余得到的是个位上的数
     * 一个int型对10求商得到的是最个位以前的数
     * @param args
     */
    public
static boolean
f(int num){
        //取位数
        int ge = num%10;
        int shi =(num%100)/10;
        int bai =(num%1000)/100;
        //验证
        if(ge*ge*ge +shi*shi*shi + bai*bai*bai == num)
        {
            return
true
;   
        }
        else
        {
            return
false
;
        }
    }
    public
static void
main(String[] args) {
        for(int num = 100; num <= 999; num++)
            if(f(num))
                System.out.println(num);
    }
}

【程序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的值,重复执行第一步。
 

public
class
Fenjieyinshu {
    /*
     * 正整数分解质因数
     * 例如:
     * 输入90,打印出90=2*3*3*5。
     * 1、分解成因子
     * 2、若因子中还能分解则继续分解
     * 3、选取最终分解的因子中的质数
     */
    public
static void
main(String[] args){
        int num = 100;
        f(num);
    }
    private
static void
f(int num){
        System.out.print(num+"=");
        //质数的判断
        for(int i=2; i<num+1; i++)
        {
            //分解因子
            while(num%i == 0&& num != i){
                //只要最小的因子
                num /= i;
                System.out.print(i+"*");
            }
            //最大因子
            if(num == i){
                System.out.print(i);
                break;
            }
        }
    }
 
}

 

 

 

 

 

【程序5】
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
程序分析:(a>b)?a:b这是条件运算符的基本例子。

正常判断:
public
class
Chengji {
    public
static char
f(int num)
    {  
        if(num < 0)return
'E';
        char a ='A',b =
'B',c ='C';
        return  num >= 90?a:num < 60 && num>= 0?c:b;
    }
    public
static void
main(String[] args) {
        int num = -1;
        if(f(num)=='E')
        {
            System.out.println("输入无效");
        }
        else
        {
            System.out.println(f(num));
        }
    }
}

 以上代码多有不足,才开始备战蓝桥杯入练习题目,希望多多指导。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: