JAVA之经典算法二
2017-11-27 12:25
369 查看
程序1:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
程序2:求s = a + aa + aaa + aaaa + aa…a的值,其中a是一个数字。
例如2 + 22 + 222 + 2222 + 22222(此时共有5个数相加),几个数相加有键盘控制。
1.程序分析:关键是计算出每一项的值。
程序3:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
1.程序分析:利用for循环语句,if条件语句。
程序4:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,
又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
1.程序分析:采取逆向思维的方法,从后往前推断。
程序5:打印出如下图案(菱形)
1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。
三角形:
public class Demo6 { public static void main(String args[]){ double s = 0; double h = 100; for (int i = 1; i <= 10; i++) { s += h; h = h/2; s += h; } System.out.println("经过路程:"+s); System.out.println("反弹高度:"+h); } } 调试结果: 经过路程:299.70703125 反弹高度:0.09765625
程序2:求s = a + aa + aaa + aaaa + aa…a的值,其中a是一个数字。
例如2 + 22 + 222 + 2222 + 22222(此时共有5个数相加),几个数相加有键盘控制。
1.程序分析:关键是计算出每一项的值。
public class Demo7 { public static void main(String args[]){ Scanner in = new Scanner(System.in); System.out.println("请输入a的值"); int a = in.nextInt(); System.out.println("请输入n个数"); int n = in.nextInt(); int s = 0,t=0; for (int i = 1; i <= n; i++) { t += a; a = a*10; s += t; } System.out.println(s); } } 调试结果: 请输入a的值 2 请输入n个数 3 246
程序3:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
1.程序分析:利用for循环语句,if条件语句。
public class Demo8 { public static void main(String args[]) { System.out.println("请输入一个字符串;"); Scanner in = new Scanner(System.in); String str = in.nextLine(); char[] ch = str.toCharArray(); count use = new count(); use.count(ch); } static class count { int digital, character, blank, other; public void count(char[] arr) { for (int i = 0; i < arr.length; i++) { if (arr[i] >= '0' && arr[i] <= '9') { digital++; } else if ((arr[i] >= 'a' && arr[i] <= 'z') || (arr[i] >= 'A' && arr[i] <= 'Z')) { character++; } else if (arr[i] == ' ') { blank++; } else { other++; } } System.out.println("数字个数:" + digital); System.out.println("英文字母个数:" + character); System.out.println("空格个数:" + blank); System.out.println("其他字符个数:" + other); } } } 调试结果: 请输入一个字符串; fhaln k#L@24% *(JI-) 数字个数:2 英文字母个数:9 空格个数:2 其他字符个数:7
程序4:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,
又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
1.程序分析:采取逆向思维的方法,从后往前推断。
public class Demo9 { public static void main(String args[]){ int sum = 1; for (int i = 0; i < 9; i++) { sum = (sum + 1) * 2; } System.out.println("第一天共摘"+sum); } } 调试结果: 第一天共摘1534
程序5:打印出如下图案(菱形)
1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。
菱形: * *** ***** ******* ***** *** * public class Demo10 { public static void main(String args[]){ int i = 0; int j = 0; for (i = 1; i <= 4; i++) { for (int k = 1; k <= 4 - i; k++) System.out.print( " " ); for (j = 1; j <= 2 * i - 1; j++) System.out.print("*"); System.out.println(); } for (i = 3; i >= 1; i--) { for (int k = 1; k <= 4 - i; k++) System.out.print( " " ); for (j = 1; j <= 2 * i - 1; j++) System.out.print("*"); System.out.println(); } } } 调试结果: * *** ***** ******* ***** *** *
三角形:
* *** ****** ******** ****** *** * public class Demo10 { public static void main(String[] args) { int i=0; int j=0; for ( i = 1; i <= 4; i++) { for ( j = 1; j <= 2 * i - 1; j++) System.out.print("*"); System.out.println(); } for ( i = 3; i >= 1; i--) { for ( j = 1; j <= 2 * i - 1; j++) System.out.print("*"); System.out.println(); } } } 调试结果: * *** ****** ******** ****** *** *
相关文章推荐
- JAVA经典算法40题(18)
- Java中的经典算法之冒泡排序(Bubble Sort)
- 【LeetCode-面试算法经典-Java实现】【050-Implement pow(x, n)(求x的n次方)】
- Java经典算法四十例编程详解+程序实例
- java经典算法之插入排序
- Java经典算法:冒泡排序
- Java经典算法40例(十七)
- java经典算法_022你用递归算年龄
- JAVA经典算法收集整理
- Java经典算法(一)
- 【LeetCode-面试算法经典-Java实现】【152-Maximum Product Subarray(子数组的最大乘积)】
- Java经典算法——国王赏麦
- 【LeetCode-面试算法经典-Java实现】【061-Rotate List(旋转单链表)】
- JAVA经典算法40题
- 【LeetCode-面试算法经典-Java实现】【198-House Robber(抢劫犯)】
- 【LeetCode-面试算法经典-Java实现】【066-Plus One(加一)】
- java经典问题算法大全
- Java中的经典算法之冒泡排序(Bubble Sort)
- 经典算法问题的Java实现
- 备考蓝桥杯(37)超级无敌经典的全排列算法 java实现