50道经典的JAVA编程题 (6-10)
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);elsem.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)的更多相关文章
- 50道经典的JAVA编程题(汇总)
这是一次不可思议的编程历程.从2013年的最后一天开始做这份题,中间连续好几天的考试,包括java考试(今天考试的JAVA编程题),直到今天完成了.挺有成就感的...废话不多说了,来电实质性的吧. 全 ...
- 50道经典的JAVA编程题(46-50)
50道经典的JAVA编程题(46-50),最后五道题了,这是一个美妙的过程,编程真的能让我忘掉一切投入其中,感觉很棒.今天下午考完微机原理了,大三上学期就这样度过了,这学期算是解放了,可是感觉我还是没 ...
- 50道经典的JAVA编程题(41-45)
50道经典的JAVA编程题(41-45),苦逼的程序猿,晚上睡不着了编程吧~今天坚持做10道题!发现编程能是我快乐...O(∩_∩)O哈哈~能平静我烦乱的心,剩下5道题留到考试完了再做吧!该睡觉了.. ...
- 50道经典的JAVA编程题(36-40)
50道经典的JAVA编程题(36-40),今天晚上心情压抑,不爽,继续做题,管它明天考试,我继续我的java,一个周末都在看微机原理看得的很头疼啊~明天该挂科就挂吧,不在乎了~~~ [程序36] Ar ...
- 50道经典的JAVA编程题(31-35)
50道经典的JAVA编程题(31-35),今天考完了java,在前篇博客里面贴出了题了,见:<今天考试的JAVA编程题>.考完了也轻松了,下个星期一还考微机原理呢,啥都不会,估计今天就做到 ...
- 50道经典的JAVA编程题(26-30)
50道经典的JAVA编程题(26-30),这么晚了,早点睡了要,明早8点考java祝我好运吧!!!晚安~ [程序26]Ex26.java(跳过了,好没意思的题啊)题目:请输入星期几的第一个字母来判断一 ...
- 50道经典的JAVA编程题(21-25)
50道经典的JAVA编程题(21-25),明天早上java考试了,还是坚持做题吧...这题比老师的题好多了! [程序21]TestJieCheng.java题目:求1+2!+3!+...+20!的和1 ...
- 50道经典的JAVA编程题 (16-20)
50道经典的JAVA编程题 (16-20),用了快一个下午来做这10道题了,整理博客的时间貌似大于编程的时间啊..哈哈 [程序16]Nine.java 题目:输出9*9口诀. 1.程序分析:分行与列考 ...
- 50道经典的JAVA编程题 (11-15)
50道经典的JAVA编程题 (11-15),新年的第一天,继续啦...\(^o^)/~,这50道题都跨年了啊...哈哈 [程序11] TestTN.java 题目:有1.2.3.4个数字,能组成多少个 ...
随机推荐
- myeclipse报jar包missing
一.问题描述 从版本库中check out项目后,发现项目有“感叹号”,且pom.xml文件有红色的“差号”.如下图: 在error window里可以看到missing jar包的提示,如下: 打开 ...
- 进阶:使用 EntityManager
JPA中要对数据库进行操作前,必须先取得EntityManager实例,这有点类似JDBC在对数据库操作之前,必须先取得Connection实例,EntityManager是JPA操作的基础,它不是设 ...
- HDU1180+BFS
bfs思路:三维标记状态 && 处理好 - | 和时刻的关系即可 /* bfs 思路:三维标记状态 && 处理好 - | 和时刻的关系即可 */ #include< ...
- java 读取文件中文乱码问题
很少写java io的代码,今天整了一个发现 本地调试好好的,放到jmeter里就打印乱码.一番折腾,终于搞定~直接上代码: List<Order> orderList = new Arr ...
- JNDI学习总结(二)——Tomcat下使用C3P0配置JNDI数据源
一.C3P0下载 C3P0下载地址:http://sourceforge.net/projects/c3p0/files/?source=navbar
- Razor视图引擎布局
不需要像过去aspx一样,使用.Master文件,而是统一使用.cshtml 或 .vbhtml文件.但文件名一般以 _开头,这样做文件不会当做View显示出来 使用@RenderBody() 表示替 ...
- dup和dup2函数以及管道的实现
疑问:管道应该不是这样实现的,因为这要求修改程序的代码 dup和dup2也是两个非常有用的调用,它们的作用都是用来复制一个文件的描述符.它们经常用来重定向进程的stdin.stdout和stderr. ...
- python 操作符笔记:
操作符 描述 x if y else z 三元描述(2.5新加)(类似于c中的 x?y:z x or y 或 x and y 与 not x 非 x!=y ,x is y 序列成员测试 x | y 位 ...
- RabbitMQ安装和配置
RabbitMQ: MQ:message queue.MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来 ...
- python的常用概念
常用的概念 主体字符串 主体列表 内置函数和方法的区别 映射表 引用 迭代器: 1. 字典:单步遍历迭代器 2. 文件:逐行读取的迭代器




