50道经典的JAVA编程题 (6-10),今晚做了10道了,累死了。。。感觉难度不是很大,就是不知道是不是最好的实现方法啊!希望大神们能给指点哈。。。

【程序6】GCDAndLCM.java
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
1.程序分析:利用辗除法。
2.辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的相除余数的最大公约数。
3.最小公倍数等于两数之积除以最大公约数

package test50;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * @author VellBibi
 *【程序6】GCDAndLCM.java后者是辗转相除法
 *题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
 *1.程序分析:利用辗除法。
 *2.辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的相除余数的最大公约数。
 *3.最小公倍数等于两数之积除以最大公约数
 */
public class GCDAndLCM {

    /**
     * 最大公约数普通求法
     * @param m
     * @param n
     * @return 最大公约数
     */
    public static int getGCDNormal(int m, int n){//最大公约数普通求法
        int i = (m > n ? n : m);

        for(; i>1; i--){
            if(m%i == 0 && n%i == 0)
                return i;
        }
        return 1;
    }

    /**
     * 最大公约数辗转相除法
     * @param m
     * @param n
     * @return 最大公约数
     */
    public static int getGCD(int m, int n){//最大公约数辗转相除法
        if(m%n == 0) return n;
        else return getGCD(n, m%n);//递归辗转相除
    }

    /**
     * 最小公倍数
     * @param m
     * @param n
     * @return 最小公倍数
     */
    public static int getLCM(int m, int n){
        return (m * n)/getGCD(m, n);//最小公倍数等于两数之积除以最大公约数
    }

    public static void main(String[] args) {
        BufferedReader buffer = new BufferedReader(new InputStreamReader(
                System.in));
        int m = 0, n = 0;
        try {
            m = Integer.parseInt(buffer.readLine());
            n = Integer.parseInt(buffer.readLine());
        } catch (IOException e) {
            e.printStackTrace();
        }

        System.out.println("最小公倍数:" + getLCM(m, n));
        System.out.println("最大公约数:" + getGCD(m, n));
    }
}

 

【程序7】 StChar.java

题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

1.程序分析:利用循环,使用Map存储数据.其实完全可以使用4个变量来解决,这边舍近求远复习下Map啦

package test50;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/**
 * @author VellBibi
 *【程序7】 StChar.java
 *题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
 *1.程序分析:利用循环,使用Map存储数据.其实完全可以使用4个变量来解决,这边舍近求远复习下Map啦
 */
public class StChar {

    public static Map<Integer, Integer> countChar(String str){
        Map<Integer, Integer> m = new HashMap<Integer, Integer>();
        m.put(1, 0);
        m.put(2, 0);
        m.put(3, 0);
        m.put(4, 0);
        char[] ch = str.toCharArray();
        for(int i=0; i<ch.length; i++){
            if(ch[i] >= 'a' && ch[i] <= 'z' || ch[i] >= 'A' && ch[i] <= 'Z')
                m.put(1, m.get(1) + 1);
            else if(ch[i] == ' ')
                m.put(2, m.get(2) + 1);
            else if(ch[i] >= '0' && ch[i] <= '9')
                m.put(3, m.get(3) + 1);
            else
                m.put(4, m.get(4) + 1);
        }
        return m;
    }

    public static void main(String[] args) {
        BufferedReader buffer = new BufferedReader(new InputStreamReader(
                System.in));
        String str = null;
        try {
            str = buffer.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }

        Map<Integer, Integer> m = countChar(str);
        Set<Integer> keys = m.keySet();
        Iterator<Integer> it = keys.iterator();
        int n, k;
        while(it.hasNext()){
            k = it.next();
            n = m.get(k);
            switch (k) {
            case 1:
                System.out.println("英文字母: "+n);
                break;
            case 2:
                System.out.println("空格: "+n);
                break;
            case 3:
                System.out.println("数字: "+n);
                break;
            case 4:
                System.out.println("其它字符: "+n);
                break;

            default:
                break;
            }
        }
    }

}

 

【程序8】 TestAdd.java

题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

1.程序分析:关键是计算出每一项的值。

package test50;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * @author VellBibi
 *【程序8】 TestAdd.java
 *题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
 *1.程序分析:关键是计算出每一项的值。
 */
public class TestAdd {

    public static long sumAdd(int a, int n){
        long cup = 0;
        long ans = 0;
        for(int i=0; i<n; i++){
            cup = 0;
            for(int j=0; j<=i; j++){
                cup = cup + a * (long)Math.pow(10, j);
            }
            ans = ans + cup;
        }
        return ans;
    }

    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(sumAdd(2, n));
    }
}

 

【程序9】 WanShu.java

题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程 找出1000以内的所有完数。

package test50;

/**
 * @author VellBibi
 *【程序9】 WanShu.java
 *题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程 找出1000以内的所有完数。
 */
public class WanShu {

    public static boolean isWanShu(int a){
        int cup = 0;
        for(int i=1; i<a; i++){
            if(a%i == 0)
                cup = cup + i;
        }
        return (cup == a);
    }

    public static void main(String[] args) {
        for(int i=1; i<1000; i++){
            if(isWanShu(i)){
                System.out.print(i + ",");
            }
        }
    }

}

 

【程序10】TestBall.java

题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

package test50;

/**
 * @author VellBibi
 *【程序10】TestBall.java
 *题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
 *1.程序分析:递归实现
 */
public class TestBall {

    public static double sumBallHeight(double h, int n){
        if(n == 1) return h/2;
        else return sumBallHeight(h/2, n-1);
    }

    public static void main(String[] args) {
        System.out.println(sumBallHeight(100, 10));
    }

}

 

50道经典的JAVA编程题 (6-10)的更多相关文章

  1. 50道经典的JAVA编程题(汇总)

    这是一次不可思议的编程历程.从2013年的最后一天开始做这份题,中间连续好几天的考试,包括java考试(今天考试的JAVA编程题),直到今天完成了.挺有成就感的...废话不多说了,来电实质性的吧. 全 ...

  2. 50道经典的JAVA编程题(46-50)

    50道经典的JAVA编程题(46-50),最后五道题了,这是一个美妙的过程,编程真的能让我忘掉一切投入其中,感觉很棒.今天下午考完微机原理了,大三上学期就这样度过了,这学期算是解放了,可是感觉我还是没 ...

  3. 50道经典的JAVA编程题(41-45)

    50道经典的JAVA编程题(41-45),苦逼的程序猿,晚上睡不着了编程吧~今天坚持做10道题!发现编程能是我快乐...O(∩_∩)O哈哈~能平静我烦乱的心,剩下5道题留到考试完了再做吧!该睡觉了.. ...

  4. 50道经典的JAVA编程题(36-40)

    50道经典的JAVA编程题(36-40),今天晚上心情压抑,不爽,继续做题,管它明天考试,我继续我的java,一个周末都在看微机原理看得的很头疼啊~明天该挂科就挂吧,不在乎了~~~ [程序36] Ar ...

  5. 50道经典的JAVA编程题(31-35)

    50道经典的JAVA编程题(31-35),今天考完了java,在前篇博客里面贴出了题了,见:<今天考试的JAVA编程题>.考完了也轻松了,下个星期一还考微机原理呢,啥都不会,估计今天就做到 ...

  6. 50道经典的JAVA编程题(26-30)

    50道经典的JAVA编程题(26-30),这么晚了,早点睡了要,明早8点考java祝我好运吧!!!晚安~ [程序26]Ex26.java(跳过了,好没意思的题啊)题目:请输入星期几的第一个字母来判断一 ...

  7. 50道经典的JAVA编程题(21-25)

    50道经典的JAVA编程题(21-25),明天早上java考试了,还是坚持做题吧...这题比老师的题好多了! [程序21]TestJieCheng.java题目:求1+2!+3!+...+20!的和1 ...

  8. 50道经典的JAVA编程题 (16-20)

    50道经典的JAVA编程题 (16-20),用了快一个下午来做这10道题了,整理博客的时间貌似大于编程的时间啊..哈哈 [程序16]Nine.java 题目:输出9*9口诀. 1.程序分析:分行与列考 ...

  9. 50道经典的JAVA编程题 (11-15)

    50道经典的JAVA编程题 (11-15),新年的第一天,继续啦...\(^o^)/~,这50道题都跨年了啊...哈哈 [程序11] TestTN.java 题目:有1.2.3.4个数字,能组成多少个 ...

随机推荐

  1. Hibernate一对一单向外键关联

    一.一对一单向外键关联: 一对一单向外键关联主要用到了以下两个注解: 1.OneToOne(cascade=CasecadeTYPE.ALL); cascade=CasecadeTYPE.ALL:表示 ...

  2. spring <form:checkboxes> tag and css class

    I have issue with: <form:checkboxes path="roles" cssClass="checkbox" items=&q ...

  3. 简单Sql语句统计每年每个月的数据,每个月为数据的每列,简单SQL练习

    有一张表,数据如下 请写出结果为以下的SQL语句. 在mysql中创建表 CREATE TABLE `aa` (  `id` int(10) NOT NULL AUTO_INCREMENT COMME ...

  4. [mock]12月11日

    给出一个二叉搜索树的先序遍历,要求重新构造出这个二叉搜索树.一开始给出了一个递归的算法,指出复杂度有更优的解法.然后想出来一个O(n)的算法,就是使用一个栈,然后依次判断新的节点比原来的大还是小,然后 ...

  5. HeadFirst设计模式之组合模式

    一. 1.The Composite Pattern allows us to build structures of objects in the form of trees that contai ...

  6. HeadFirst设计模式之工厂模式

    一. 1."工厂模式"不是种真正的设计模式,而是一种编程术语 2.The Factory Method Pattern defi nes an interface for crea ...

  7. 影响pogo pin连接器使用寿命的因素

    精细化.安装简易化及使用寿命长是现在数码电子产品的趋势发展,pogo pin连接器体积小而且弹簧伸缩式设计,可以更好的缩小数码电子产品的尺寸并且连接安装更加的简单方便,因此pogo pin连接器得到了 ...

  8. Retrofit初识

    Retrofit Retrofit是一套RESTful架构的Android(Java)客户端实现,基于注解,提供JSON to POJO(Plain Ordinary Java Object,简单Ja ...

  9. 关于 mysqladmin

    >mysqladmin 工具的使用格式: mysqladmin [option] command [command option] command ...... option 选项: -c nu ...

  10. C# List中写出LINQ类似SQL的语句

    很多时候,从一个关系表中挑出一个我们需要的元素列表采用SQL语句是再容易不过的了,其实C#的List中也可以采用类似的方法,虽然List中集成了Select(), Where()等语句,不过如果你的判 ...