//一、 画一个直角三角形
    // 第几行   *号数
    // *        1        1  
    // **       2        2
    // ***      3        3
    // ****     4        4
    // *****    5        5
    // 规律:行数 = *号数
    function left(n){  //  right为函数名,n为形式参数,用于接收实体参数。
        for(var i = 1; i <= n; i++){    //  声明i为打印行数
            for(var j = 1; j <= i; j++){       //声明j为一行打印多少个*
                document.write("*");
            }
            document.write("<br>");     //每打印一行就执行一次换行
        }
    }
    left(5);      //要求函数打印10行*,实体参数!
    // 二、画一个直角三角形
    //     *    4    空格    1    *
    //    **    3    空格    2    *
    //   ***    2    空格    3    *
    //  ****    1    空格    4    *
    // *****    0    空格    5    *
    // 规律: 一行 : 空格 + *;
    //          空格 = 总行数 - 空格所在行数
    //          行数 = *号数
    function right(n){
        for(var i = 1; i <= n; i++){    //  声明i为打印行数
            for(var k = 1; k <= n - i; k++){ //声明k为打印空格
                document.write("&ensp;");
            }
            for(var j = 1; j <= i; j++){       //声明j为一行打印多少个*
                document.write("*");
            }
            document.write("<br>");     //每打印一行就执行一次换行
        }
    }
    right(5);
    // 三、画一个等腰三角形
    //                         行数
    //         锋             j= 1     空格 4       锋    1
    //       锋锋锋          j= 2      空格 3        锋    3
    //     锋锋锋锋锋         j= 3      空格 2       锋    5
    //   锋锋锋锋锋锋锋       j = 4     空格 1       锋    7
    // 锋锋锋锋锋锋锋锋锋       j = 5    空格 0       锋    9
    //                                 空格5-j      锋   2*j-1
    // 思路:我们输出的空格数只算文字左边的即可!按最大行数-锋字个数
    // 规律: 空格 = 最大行数 - 单个行数;  锋 = 2 * 单个行数 - 1;
    function all(n){
        for(var i = 1; i <= n; i++){    //  声明i为打印行数
            for(var k =1; k <= n - i; k++){     //声明k为打印空格
                document.write("&emsp;");
            }
            for(var f = 1; f <= 2*i - 1; f++){  //声明f为打印文字
                document.write("锋");
            }
            document.write("<br>");
        }
    }
    all(5);
    // 注意:  &nbsp;   不断行的空白(1个字符宽度)
    //        &ensp;     半个空白(1个字符宽度)
    //        &emsp;     一个空白(2个字符宽度)
    //        &thinsp;   窄空白(小于1个字符宽度)
    // 此处用的&emsp;相当于一个汉字宽度
    // 四、画一个菱形方案一
    //                         行数
    //         锋             j= 1     空格 4       锋    1
    //       锋锋锋          j= 2      空格 3        锋    3
    //     锋锋锋锋锋         j= 3      空格 2       锋    5
    //   锋锋锋锋锋锋锋       j = 4     空格 1       锋    7
    // 锋锋锋锋锋锋锋锋锋       j = 5    空格 0       锋    9
    //   锋锋锋锋锋锋锋                              空格5-j      锋   2*j-1
    //     锋锋锋锋锋
    //       锋锋锋
    //         锋 
    //  思路:做两个等腰三角形,一个朝上,一个朝下,下面的去掉一行,避免中间重复,因为菱形行数都是奇数
     function up(n){
        //  上面一个
        for(var i = 1; i <= n; i++){    //  声明i为打印行数
            for(var k =1; k <= n - i; k++){     //声明k为打印空格
                document.write("&emsp;");
            }
            for(var f = 1; f <= 2*i - 1; f++){  //声明f为打印文字
                document.write("锋");
            }
            document.write("<br>");
        }
        // 下面一个
        // 重点:首先行数要减一;第二,文字是从多一次减少,所以行数范围和自增自减要改变!
        for(var i = n - 1; i >= 1; i--){    //  声明i为打印行数
            for(var k =1; k <= n - i; k++){     //声明k为打印空格
                document.write("&emsp;");
            }
            for(var f = 1; f <= 2*i - 1; f++){  //声明f为打印文字
                document.write("锋");
            }
            document.write("<br>");
        }
    }
    up(9);
    //拓展  做一个空心菱形
    //         锋
    //        锋 锋
    //       锋   锋
    //      锋     锋
    //     锋       锋
    //    锋         锋
    //   锋           锋
    //  锋             锋
    // 锋               锋
    //  锋             锋
    //   锋           锋
    //    锋         锋
    //     锋       锋
    //      锋     锋
    //       锋   锋
    //        锋 锋
    //         锋
    
    function up(n) {
        //  上面一个
        for (var i = 1; i <= n; i++) {    //  声明i为打印行数
            for (var k = 1; k <= n - i; k++) {     //声明k为打印空格
                document.write("&emsp;");
            }
            for (var f = 1; f <= 2 * i - 1; f++) {  //声明f为打印文字
                // document.write("锋");
                if (f == 1 || f == 2 * i - 1) {    //当文字为第一个或最后一个时打印
                    document.write("锋");
                } else {                         //否则这一行其他为空
                    document.write("&emsp;");
                }
            }
            document.write("<br>");
        }
        // 下面一个
        // 重点:首先行数要减一;第二,文字是从多一次减少,所以行数范围和自增自减要改变!
        for (var i = n - 1; i >= 1; i--) {    //  声明i为打印行数
            for (var k = 1; k <= n - i; k++) {     //声明k为打印空格
                document.write("&emsp;");
            }
            for (var f = 1; f <= 2 * i - 1; f++) {  //声明f为打印文字
                // document.write("锋");
                if (f == 1 || f == 2 * i - 1) {     //当文字为第一个或最后一个时打印
                    document.write("锋");
                } else {                          //否则这一行其他为空
                    document.write("&emsp;");
                }
            }
            document.write("<br>");
        }
    }
    up(9);
    // 画一个菱形方案二
    // 思路:我们把菱形看成上下对称的阶梯
    //-4          锋               
    //-3        锋锋锋
    //-2      锋锋锋锋锋
    //-1    锋锋锋锋锋锋锋
    //0   锋锋锋锋锋锋锋锋锋
    //1     锋锋锋锋锋锋锋
    //2       锋锋锋锋锋
    //3         锋锋锋
    //4           锋
    // j=-4  空格   4    锋   9-2*4=1
    // j=-3  空格   3    锋   9-2*3=3
    // j=-2  空格   2    锋   9-2*2=5    
    // j=-1  空格   1    锋   9-2*1=7    
    // j=0   空格   0    锋   9-2*0=9    
    // j=1   空格   1    锋   9-2*1=7    
    // j=2   空格   2    锋   9-2*2=5   
    // j=3   空格   3    锋   9-2*3=3    
    // j=4   空格   4    锋   9-2*4=1    
    // 用到到方法:     Math.abs(-10)  => 10     取绝对值
    function center(n) {
        var mid = parseInt((n - 1) / 2); // =>  4  声明一个对称范围
        for(var i = -mid; i <= mid; i++){   //声明行数为-4
            for(var k = 1; k <= Math.abs(i); k++){  //声明k为空格数,小于等于行数的绝对值
                document.write("&emsp;");
            }
            for(var f = 1; f <= n - 2 * Math.abs(i); f++){  
                // 声明f为文字数,取值范围为:总行数 - 2 * 单行行数的绝对值
                document.write("锋");
            }
            document.write("<br>");
        }
    }
    center(9);
    // 此处有个小bug,实参取值必须是奇数!又菱形固有原理决定

用js写直角三角形,等腰三角形,菱形的更多相关文章

  1. Node.js写文件的三种方法

    Node.js写文件的三种方式: 1.通过管道流写文件 采用管道传输二进制流,可以实现自动管理流,可写流不必当心可读流流的过快而崩溃,适合大小文件传输(推荐) var readStream = fs. ...

  2. 用JS写了一个打字游戏,反正我是通不了关

    今天想写个简单的游戏, 打字游戏好像都没写过, 那么就写打字游戏吧, gamePad包含了关卡的信息, 可以用来调整给个关卡字符下落的速度: getRandom函数会返回一个字符对象, 这个对象包含了 ...

  3. JS写小游戏(一):游戏框架

    前言 前一阵发现一个不错的网站,都是一些用html5+css+js写的小游戏,于是打算学习一番,写下这个系列博客主要是为了加深理解,当然也有一些个人感悟,如果英文好可以直接Click Here. 概述 ...

  4. 去它的h5,我还是用js写原生跨平台app吧

    智能手机功能越来越强大,已经在逐渐替代电脑的作用.百度.腾讯.阿里的移动端日活数也在逐步的赶上甚至超越电脑端用户.叫喊着“mobile first”的公司越来越多,App开发者应运而生,且队伍日趋庞大 ...

  5. 原生js写的贪吃蛇网页版游戏特效

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <bo ...

  6. 分享:计算机图形学期末作业!!利用WebGL的第三方库three.js写一个简单的网页版“我的世界小游戏”

    这几天一直在忙着期末考试,所以一直没有更新我的博客,今天刚把我的期末作业完成了,心情澎湃,所以晚上不管怎么样,我也要写一篇博客纪念一下我上课都没有听,还是通过强大的度娘完成了我的作业的经历.(当然作业 ...

  7. 原生 js 写分页

    欢迎留言或者加本人QQ172360937咨询 这段代码是用原生 js 写的一个分页的效果 <!doctype html> <html lang="en"> ...

  8. .NET获取不到js写的cookie解决方法

    今晚使用javascript设置一个来路的cookie,之后使用ASP.NET获取这个cookie值,发现ASP.NET获取不到JS设置的cookie值,真郁闷中,以下是JS写Cookie的代码: C ...

  9. js写的复制功能,只支持IE

    如果用js写,只能支持IE,如果想全支持,需要用jQuery的插件:jquery.zclip.js 下面是用js写的: var copyHref = function(){               ...

随机推荐

  1. kafka connector 使用总结以及自定义connector开发

    Kafaka connect 是一种用于在Kafka和其他系统之间可扩展的.可靠的流式传输数据的工具.它使得能够快速定义将大量数据集合移入和移出Kafka的连接器变得简单.Kafka Connect可 ...

  2. 稀疏数组 python描述

    什么是稀疏矩阵? 在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵. 作用: 在这种情况下,很多0值无疑是很浪费空间的,当我们要把数组存储在磁盘中 ...

  3. Swoft源码之Swoole和Swoft的分析

    这篇文章给大家分享的内容是关于Swoft 源码剖析之Swoole和Swoft的一些介绍(Task投递/定时任务篇),有一定的参考价值,有需要的朋友可以参考一下. 前言 Swoft的任务功能基于Swoo ...

  4. 2019-10-9:渗透测试,基础学习,php文件上传,mysql基础

    header("Content-Type:text/html;charst="utf-8")设置头部信息,解决编码问题setcookie("loginStrin ...

  5. @NotEmpty、@NotNull、@NotBlank注解解析

    源码解析 @NotEmpty根据JDK源码注释说明,该注解只能应用于char可读序列(可简单理解为String对象),colleaction,map,array上,因为该注解要求的是对象不为null且 ...

  6. Java秋招面试复习大纲(二):Spring全家桶+MyBatis+MongDB+微服务

    前言 对于那些想面试高级 Java 岗位的同学来说,除了算法属于比较「天方夜谭」的题目外,剩下针对实际工作的题目就属于真正的本事了,热门技术的细节和难点成为了面试时主要考察的内容. 这里说「天方夜谭」 ...

  7. shell中的函数、shell中的数组、告警系统需求分析

    7月16日任务 20.16/20.17 shell中的函数20.18 shell中的数组20.19 告警系统需求分析 20.16/20.17 shell中的函数 函数就是一个子shell就是一个代码段 ...

  8. 如何将本地项目推送到码云仓库或者GitHub仓库

    将本地项目推送到码云仓库. 前提: git 和码云   1.在码云上先创建一个仓库. 2.在要被上传的项目的目录右键, 选择 Git Bash Here. 3.在窗口输入命令: git init 这时 ...

  9. Tensorflow搭建CNN实现验证码识别

    完整代码:GitHub 我的简书:Awesome_Tang的简书 整个项目代码分为三部分: Generrate_Captcha: 生成验证码图片(训练集,验证集和测试集): 读取图片数据和标签(标签即 ...

  10. 图库网站Unsplash高清原图爬虫【华为云技术分享】

    [摘要] 写博客的好工具,快速获得高清图片 在百度图片爬虫小助手里,我开发了一个爬虫,来节约我写博客时搜集图片的时间. 但是,也出现了一些问题,主要有以下几点: 百度图片上的质量参差不齐,大部分图片质 ...