A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 守护魂 中级黑马   /  2015-12-19 00:13  /  1100 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

【程序1】
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
public class Prog1{
        public static void main(String[] args){
                int n = 10;
[size=10.5000pt]        [size=10.5000pt]        System.out.println(""+n+"个月兔子总数为"+fun(n));
        }
        private static int fun(int n){
                if(n==1 || n==2)
                   return 1;
                else
                   return fun(n-1)+fun(n-2);
        }
}
【程序2】
题目:判断101-200之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
public class Prog2{
        public static void main(String[] args){
                int m = 1;
                int n = 1000;
                int count = 0;
                //统计素数个数
                for(int i=m;i<n;i++){
                        if(isPrime(i)){
                                count++;
                                System.out.print(i+" ");
                                if(count%10==0){
                                        System.out.println();
                                }
                        }
                }
                System.out.println();
                System.out.println("在"+m+"和"+n+"之间共有"+count+"个素数");
        }
        //判断素数
        private static boolean isPrime(int n){
                boolean flag = true;
                if(n==1)
                  flag = false;
                else{
                        for(int i=2;i<=Math.sqrt(n);i++){
                        if((n%i)==0 || n==1){
                                flag = false;
                                break;
                        }
                         else
                           flag = true;
                  }
                }
                return flag;
        }
}
【程序3】
题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
public class Prog3{
        public static void main(String[] args){
                for(int i=100;i<1000;i++){
                        if(isLotus(i))
                           System.out.print(i+" ");
                }
                System.out.println();
        }
        //判断水仙花数
        private static boolean isLotus(int lotus){
                int m = 0;
                int n = lotus;
                int sum = 0;
                m = n/100;
                n  -= m*100;
                sum = m*m*m;
                m = n/10;
                n -= m*10;
                sum += m*m*m + n*n*n;
                if(sum==lotus)
                        return true;
                else
                        return false;
                }
}
【程序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 Prog4{
        public static void main(String[] args){
                int n = 13;
                decompose(n);
        }
        private static void decompose(int n){
                System.out.print(n+"=");
                for(int i=2;i<n+1;i++){
                        while(n%i==0 && n!=i){
                                n/=i;
                                System.out.print(i+"*");
                        }
                        if(n==i){
                                System.out.println(i);
                                break;
                        }
                }
        }
}
【程序5】
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
程序分析:(a>b)?a:b这是条件运算符的基本例子。
public class Prog5{
        public static void main(String[] args){
                int n = -1;
                try{
                        n = Integer.parseInt(args[0]);
                }catch(ArrayIndexOutOfBoundsException e){
[size=10.5000pt]        [size=10.5000pt]        [size=10.5000pt]        System.out.println("请输入成绩");
                        return;
                }
                grade(n);
        }
[size=10.5000pt]        //成绩等级计算
        private static void grade(int n){
                if(n>100 || n<0)
[size=10.5000pt]        [size=10.5000pt]          System.out.println("输入无效");
                else{
[size=10.5000pt]        [size=10.5000pt]          String str = (n>=90)?"分,属于A":((n>60)?"分,属于B":"分,属于C");
                  System.out.println(n+str);
                }
        }


13 个回复

倒序浏览
顶一个!!!
回复 使用道具 举报
学习下,
回复 使用道具 举报
学习了。
回复 使用道具 举报
好6.。。。。。。
回复 使用道具 举报
6666666666666
回复 使用道具 举报
都是技巧性的题
回复 使用道具 举报
踩楼拉了
回复 使用道具 举报
anuo 中级黑马 2015-12-19 22:47:34
9#
nice,受教了
回复 使用道具 举报
很好玩的题 这样学习起来才有练劲..
程序员,苦中作乐...
回复 使用道具 举报
Zrz_K 中级黑马 2015-12-21 21:52:42
11#
这个不错,多谢分享
回复 使用道具 举报
向楼主学习
回复 使用道具 举报
wyb414 中级黑马 2015-12-21 22:33:32
13#
表示有难度...
回复 使用道具 举报
顶一下  又复习了边   谢谢楼主
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马