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. Exploring the 7 Different Types of Data Stories

    Exploring the 7 Different Types of Data Stories What makes a story truly data-driven? For one, the n ...

  2. iOS socket编程 第三方库 AsyncSocket(GCDAsyncSocket)

    Socket描述了一个IP.端口对.它简化了程序员的操作,知道对方的IP以及PORT就可以给对方发送消息,再由服务器端来处理发送的这些消息.所以,Socket一定包含了通信的双发,即客户端(Clien ...

  3. Spring/Hibernate 应用性能优化的7种方法

    对于大多数典型的 Spring/Hibernate 企业应用而言,其性能表现几乎完全依赖于持久层的性能.此篇文章中将介绍如何确认应用是否受数据库约束,同时介绍七种常用的提高应用性能的速成法.本文系 O ...

  4. ue标签不见了,如何解决?

    小问题,但是很恶心...如下图: 解决方法: 右键点击[菜单栏]右边的空白处,选择advanced,默认是basic,这时菜单栏中的菜单条目会变多,然后选择[视图]---[视图/列表]---[打开文件 ...

  5. 阿里巴巴Java面试题

    研二是需要找实习的时候了,因阿里有同学内推就直接参加了电话面试,不说其他的废话直接上问题,阿里的面试官还是不错的,和蔼可亲,为人谦虚,大牛什么都懂.(投的职位是java研发)1.java中所有类的父类 ...

  6. USB Type-C工作原理解析

    自从苹果发布了新MacBook,USB Type-C接口就成为了热议对象.我来从硬件角度解析下这个USB Type-C,以便大家更好的了解USB Type-C的工作原理. 特色 尺寸小,支持正反插,速 ...

  7. 117. Populating Next Right Pointers in Each Node II

    题目: Follow up for problem "Populating Next Right Pointers in Each Node". What if the given ...

  8. LCMS

    LCMS(LearningContent Management System) 即学习内容管理系统

  9. JavaScript window.open()属性

    一. Window 对象 Window 对象是 JavaScript 层级中的顶层对象. Window 对象代表一个浏览器窗口或一个框架. Window 对象会在 <body> 或 < ...

  10. Android开发:向下一个activity传递数据,返回数据给上一个activity

    1.向下一个activity传递数据 activity1 Button button=(Button) findViewById(R.id.button1); button.setOnClickLis ...