黑马程序员——折纸问题、九九乘法表和菱形图案的打印
2016-01-02 01:51
507 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
折纸问题:
打印九九乘法表
嵌套for的实现
折纸问题:
/* * 我国最高山峰是珠穆朗玛峰:8848m,我现在有一张足够大的纸张,厚度为:0.01m。 请问,我折叠多少次,就可以保证厚度不低于珠穆朗玛峰的高度? 分析: 为了保证数字方便运算都乘以100 因为不知道具体的循环次数,所以使用while循环 定义统计变量count=0,每折叠一次count自加一 定义纸的初始厚度n=1,每循环一次厚度变为2n,直到纸的厚度不小于884800 */ public class Paper_folding { public static void main(String[] args) { int count = 0; int n = 1; while (n < 884800) { n *= 2; count++; } System.out.println("折叠" + count + "次后不低于珠峰的高度,此时的高度为" + n / 100 + "米。"); } }
打印九九乘法表
/* 需求:在控制台输出九九乘法表。 首先我们写出九九乘法表: 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 ... 1*9=9 2*9=18 3*9=27 ... 我们先把这个九九乘法表看出是这样的一个形状: * ** *** **** ***** ****** ******* ******** ********* 分析: 使用嵌套循环:外循环决定行数,内循环决定列数 发现列数又等于当前的行数 */ public class Print99 { public static void main(String[] args) { //控制输出9行 for(int y=1;y<=9;y++){ //每一行的列数等于当前的行号 for(int x =1;x<=y;x++){ //先打印出星星图案,然后添加数字 System.out.print(x+"*"+y+"="+x*y+"\t"); } //每输出一行后换行 System.out.println(); } } }类似问题:用*打印菱形图案
嵌套for的实现
public class Prog19 { public static void main(String[] args) { int n = 4; 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(); } } }单层for的实现
/* * 题目:打印出如下图案(菱形) * *** ***** ******* ***** *** * 分析: 可以理解为先打印一个 * *** ***** ******* 再打印一个 ***** *** * 把中间*最多的行号定义为要打印的行数,即上图要打印的菱形最宽处所在的行号为4 设要打印的最宽处行号为n,则从上向中间,打印的*个数是2n-1,其他位置打印空格或不打印 实现: 用for控制打印的行数为n 先打印上半部分 先打印n-t个空格再打印2t-1个* 再打印下半部分 每行先打印t个空格,再打印2(n-t)-1个* */ public class Print { public static void main(String[] args) { // 写一个方法实现 int n = 4; printx(n); } private static void printx(int n) { // 先打印上部 // 控制行数为n for (int t = 1; t <= n; t++) { // 先打印n-t个空格再打印2t-1个* int count1 = 0; do { if (t == n) continue; // 如果是最后一行则不打印空格,跳出此while循环 System.out.print(" "); count1++; } while (count1 < n - t); int count2 = 0; do { System.out.print("*"); count2++; } while (count2 < 2 * t - 1); System.out.println(); } // 再打印下半部分 // 控制行数为n-1 for (int t = 1; t < n; t++) { // 每行先打印t个空格,再打印2(n-t)-1个* int count1 = 0; do { System.out.print(" "); count1++; } while (count1 < t); int count2 = 0; do { System.out.print("*"); count2++; } while (count2 < 2 * (n - t) - 1); System.out.println(); } }
相关文章推荐
- 一个关于if else容易迷惑的问题
- 一道sql面试题附答案
- C# 超高面试题收集整理
- 人人网javascript面试题 可以提前实现下
- PHP中设置一个严格30分钟过期Session面试题的4种答案
- PHP输出九九乘法表代码实例
- 据说是雅虎的一份PHP面试题附答案
- php牛逼的面试题分享
- 一套比较完整的javascript面试题(部分答案)
- javascript和jquery分别实现的九九乘法表代码
- 小米公司JavaScript面试题
- 超级全面的PHP面试题整理集合第1/2页
- 5个实用的shell脚本面试题和答案
- PHP经典面试题集锦
- 8个PHP数组面试题
- PHP中提问频率最高的11个面试题和答案
- 用PHP解决的一个栈的面试题
- sql语句实现四种九九乘法表
- PHP面试题之文件目录操作
- 几道坑人的PHP面试题 试试看看你会不会也中招