黑马程序员技术交流社区

标题: JAVA的几个经典编程题——看看你会做吗 [打印本页]

作者: Jackron    时间: 2015-7-7 21:44
标题: JAVA的几个经典编程题——看看你会做吗
【程序15】
题目:输入三个整数x,y,z,请把这三个数由小到大输出。
程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
  
import  java.util.Scanner;
  
public class  Prog15{
  
    public static void main(String[] args){
  
        Scanner scan = new  Scanner(System.in).useDelimiter("\\D");
  
        System.out.print("请输入三个数:");
  
        int x = scan.nextInt();
  
        int y = scan.nextInt();
  
        int z = scan.nextInt();
  
        scan.close();
  
        System.out.println("排序结果:"+sort(x,y,z));
  
    }
  
    //比较两个数的大小
  
    private static String sort(int x,int y,int  z){
  
        String s = null;
  
        if(x>y){
  
            int t = x;
  
            x = y;
  
            y = t;
  
        }
  
        if(x>z){
  
            int t = x;
  
            x = z;
  
            z = t;
  
        }
  
        if(y>z){
  
            int t = z;
  
            z = y;
  
            y = t;
  
        }
  
        s = x+" "+y+" "+z;
  
        return s;
  
    }
  
}
  
【程序16】
题目:输出9*9口诀。
程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
  
public class Prog16{
  
    public static void main(String[] args){
  
        for(int i=1;i<10;i++){
  
            for(int j=1;j<i+1;j++)
  
                System.out.print(j+"*"+i+"="+(j*i)+"  ");
  
            System.out.println();
  
        }
  
    }
  
}
  
【程序17】
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
程序分析:采取逆向思维的方法,从后往前推断。
  
public class  Prog17{
  
    public static void main(String[] args){
  
        int m = 1;
  
       for(int i=10;i>0;i--)
  
         m = 2*m + 2;
  
       System.out.println("小猴子共摘了"+m+"桃子");
  
    }
  
}
  
【程序18】
题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
  
import  java.util.ArrayList;
  
public class  Prog18{
  
    String a,b,c;//甲队成员
  
    public static void main(String[] args){
  
        String[] racer =  {"x","y","z"};//乙队成员
  
        ArrayList<Prog18> arrayList =  new ArrayList<Prog18>();
  
        for(int i=0;i<3;i++)
  
           for(int j=0;j<3;j++)
  
             for(int k=0;k<3;k++){
  
                 Prog18 prog18 = new  Prog18(racer,racer[j],racer[k]);
  
                 if(!prog18.a.equals(prog18.b)  && !prog18.a.equals(prog18.c) && !prog18.b.equals(prog18.c)  &&
  
                    !prog18.a.equals("x") &&  !prog18.c.equals("x") && !prog18.c.equals("z"))
  
                    arrayList.add(prog18);
  
             }
  
           for(Object obj:arrayList)
  
             System.out.println(obj);
  
    }
  
    //构造方法
  
    private Prog18(String a,String b,String  c){
  
        this.a = a;
  
        this.b = b ;
  
        this.c = c;
  
    }
  
    public String toString(){
  
        return "a的对手是"+a+"  "+"b的对手是"+b+"  "+"c的对手是"+c;
  
    }
  
}
  
【程序19】
题目:打印出如下图案(菱形)
   *
   ***
******
********
******
  ***
   *
程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 for循环,第一层控制行,第二层控制列。
  
public class  Prog19{
  
    public static void main(String[] args){
  
        int n = 5;
  
        printStar(n);
  
    }
  
    //打印星星
  
    private static void printStar(int n){
  
        //打印上半部分
  
        for(int i=0;i<n;i++){
  
            for(int j=0;j<2*n;j++){
  
             if(j<n-i)
  
               System.out.print(" ");
  
             if(j>=n-i &&  j<=n+i)
  
               System.out.print("*");
  
           }
  
           System.out.println();
  
        }
  
        //打印下半部分
  
        for(int i=1;i<n;i++){
  
            System.out.print(" ");
  
            for(int j=0;j<2*n-i;j++){
  
                if(j<i)
  
               System.out.print(" ");
  
             if(j>=i &&  j<2*n-i-1)
  
               System.out.print("*");
  
            }
  
            System.out.println();
  
        }
  
    }
  
}
  
【程序20】
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
程序分析:请抓住分子与分母的变化规律。
  
public class  Prog20{
  
    public static void main(String[] args){
  
        double n1 = 1;
  
        double n2 = 1;
  
        double fraction = n1/n2;
  
        double Sn = 0;
  
        for(int i=0;i<20;i++){
  
           double t1 = n1;
  
           double t2 = n2;
  
           n1 = t1+t2;
  
           n2 = t1;
  
           fraction = n1/n2;
  
           Sn += fraction;
  
        }
  
        System.out.print(Sn);
  
    }
  
}
  


作者: 1木头1    时间: 2015-7-7 22:58
学习学习在学习
作者: 我是一棵胖树    时间: 2015-7-7 23:22
谢谢分享,认真看看、
作者: 贾森    时间: 2015-7-7 23:23
感谢分享~~
作者: 逆袭白富美    时间: 2015-7-7 23:26
感谢分享,一定看
作者: 逆袭白富美    时间: 2015-7-7 23:28
不知道考试会不会考

作者: Miss.H    时间: 2015-7-7 23:29
感谢分享不错学到很多,但是我们这是学Java不是算法啊
作者: Jackron    时间: 2015-7-7 23:38
Miss.H 发表于 2015-7-7 23:29
感谢分享不错学到很多,但是我们这是学Java不是算法啊

我觉得JAVA基础考试,如果不考算法,还能考什么!后面框架什么都没有学呢
作者: 18295718171    时间: 2015-7-7 23:39
果断收藏!!有时间好好看看
作者: Jackron    时间: 2015-7-7 23:40
Miss.H 发表于 2015-7-7 23:29
感谢分享不错学到很多,但是我们这是学Java不是算法啊

我觉得JAVA基础考试,如果不考算法,还能考什么!后面框架什么都没有学呢
作者: yan019369    时间: 2015-7-7 23:40
经典的题目,果断收藏
作者: Poskey    时间: 2015-7-14 21:09
最近一直在敲,联系代码感
作者: 是么了11    时间: 2015-7-14 21:20
其实我只是想求较多的题目,不求答案,只求题目
作者: 陈建民1    时间: 2015-7-14 21:31
有几个也是刚学完,再看看就当复习一遍
作者: 终极黑马    时间: 2015-7-14 21:46
谢谢分享!!!
作者: 孙培广    时间: 2015-7-14 21:48
这个我也会,呵呵
作者: 不怕黑人    时间: 2015-7-16 22:33
收藏了 慢慢做
作者: 清风惜月    时间: 2015-7-18 02:17
先看看,有会做的。
作者: No98342    时间: 2015-7-18 14:18
{:3_50:}主要是if和for应用
作者: oooohnick    时间: 2015-7-18 14:20
谢谢分享!
作者: maizi1912    时间: 2015-7-18 18:46
谢谢分享  收藏了
作者: 牵着蜗牛去逛街    时间: 2015-7-19 10:40
学习了,很不错。。。
作者: 黑色礼服    时间: 2015-7-19 10:51
Java基础里面还有很多东西啊  ,算法只是一小部分!!!
作者: Holmes    时间: 2015-7-25 11:31
感谢分享
作者: 曾云鹏    时间: 2015-7-25 17:57
菱形的能推算出来
作者: 一城一世界    时间: 2015-7-25 18:30
感谢分享,很有帮助哦~
作者: 陈建民1    时间: 2015-7-25 19:32
收藏慢慢看
作者: 帅帅loyal    时间: 2015-7-25 20:31
来学习学习
作者: wudigod12    时间: 2015-7-25 20:52
非常有趣~~
作者: 仨儿先森    时间: 2015-7-25 21:10
mark了,自己也做做看




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2