zoukankan      html  css  js  c++  java
  • 用js写直角三角形,等腰三角形,菱形

    //一、 画一个直角三角形
        // 第几行   *号数
        // *        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,实参取值必须是奇数!又菱形固有原理决定
  • 相关阅读:
    由wifi吞吐量问题联想到的分治思维
    总结----调试问题套路(经验)
    常用指令备忘录----持续更新
    【mark】OS是否使用svc方式分开系统空间和用户空间的优劣
    转载----五种开源协议(GPL,LGPL,BSD,MIT,Apache)
    rt-thread 动态装载实现、优化
    转:嵌入式: jffs2,yaffs2,logfs,ubifs文件系统性能分析
    gcc ld 链接器相关知识,调试指令(程序员的自我修养----链接、装载与库)
    HTML5与CSS3经典代码
    jquery mobile上传图片完整例子(包含ios图片横向问题处理和C#后台图片压缩)
  • 原文地址:https://www.cnblogs.com/zhang-qi/p/12075477.html
Copyright © 2011-2022 走看看