用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,实参取值必须是奇数!又菱形固有原理决定